Как добавить нового пользователя с конкретными файлами конфигурации?

Перенаправление вывода выполняется оболочкой, из которой вызывается команда. Итак, разбивая все на биты, вот что происходит *:

shell вызывает sudo echo "options drm_kms_helper poll=N", который выполняет команду sudo с командной строкой echo "options drm_kms_helper poll=N" sudo запрашивает пароль, открывает оболочку суперпользователя и вызывает [ f5], который запускает команду echo, передавая ей "options drm_kms_helper poll=N" эхо, работая с привилегиями root, выводит строку на свой стандартный вывод. Команда echo завершается, завершение оболочки суперпользователя, sudo завершает оболочку, из которой была вызвана команда, собирает вывод и пытается перенаправить ее на /etc/modprobe.d/local.conf, которая может быть записана только root. Он получает ошибку «отклонено разрешение».

Для того, чтобы исправить это, см. ответ @shantanu.

(*) - в то время как приведенная выше последовательность помогает понять, почему команда терпит неудачу, на самом деле вещи происходят несколько не в порядке: исходная оболочка замечает перенаправление и пытается открыть файл для записи, прежде чем вызывать команду sudo .... При открытии файла сбой оболочка даже не вызывает команду, которая должна была записываться в файл (благодаря @PanosRontogiannis для указания этого).

Вот быстрый тест:

$ touch ./onlyroot.txt
$ sudo chown root:root ./onlyroot.txt
$ sudo bash -c "whoami | tee who.txt" > onlyroot.txt
bash: onlyroot.txt: Permission denied

В тесте выше whoami | tee who.txt собирался создать файл с именем who.txt, содержащий слово «root». Однако, когда перенаправление вывода не выполняется в вызывающей оболочке, файл «who.txt» также отсутствует, потому что команда не была вызвана.

1
задан 16 March 2014 в 02:03

1 ответ

То, что вы описываете, вероятно, потребует наличия отдельной виртуальной машины для каждого пользователя. Популярные платформы для виртуализации включают VirtualBox и VMware Player.

2
ответ дан 24 May 2018 в 10:46
  • 1
    Из двух, которые более популярны, удобны в использовании и интуитивно понятны? Я полагаю, что они являются приложениями с открытым исходным кодом? – n00b 16 March 2014 в 00:52
  • 2
    @ n00b VMWare Player закрыт, я считаю. вы можете сделать это без виртуальной машины с пространствами имен ядра Linux. Я не знаю, как это сделать в системе Ubuntu, но если вы были в системе systemd (которую Ubuntu переводит в конечном итоге), вы можете использовать systemd-nspawn. – strugee 16 March 2014 в 02:12
  • 3
    @strugee: Debian использует systemd? – n00b 16 March 2014 в 02:48
  • 4
    @ n00b нет, но они планируют мигрировать. когда они это сделают, Ubuntu наследует изменения. – strugee 16 March 2014 в 03:21

Другие вопросы по тегам:

Похожие вопросы: