Запуск программы от имени другого пользователя без ввода пароля

Я пытаюсь пометить интернет-трафик моего браузера с помощью DSCP, выбрав пакеты с определенным владельцем. Для этого я должен запустить свой браузер с фиктивным пользователем.

Я запускаю свой браузер, привязывая команду терминала к сочетанию клавиш. Так что сейчас это всегда было chromium-browser,

Шаги, которые я предпринял до сих пор:

Создать нового пользователя:

 sudo useradd <dummy user>
 sudo passwd <dummy user>
 sudo mkdir /home/<dummy user>
 sudo chown <dummy user> /home/<dummy user>
 sudo chgrp <dummy user> /home/<dummy user>

Разрешить новому пользователю доступ к X

xhost +

Запустите команду как новый пользователь

Я запускаю терминал как исходный пользователь (не root) и запускаю следующую команду:

su <dummy user> -c chromium-browser

после ввода пароля фиктивного пользователя я могу запустить браузер chromium как фиктивного пользователя. Chromium будет полностью новым и не будет иметь никаких моих старых настроек, поскольку он использует только что созданную фиктивную домашнюю директорию пользователя.

Теперь я не хочу вводить пароль на любом этапе, поэтому я изучил, как работать с файлом sudoers.

Очевидно, что можно выполнить команду от имени другого пользователя, не запрашивая пароль, изменив файл sudoers. Я еще не понял, как именно, но я думаю, что это зависит от sudo -u, Который также позволяет запускать команду как кто-то еще. Прежде чем я начал адаптировать файл sudoers, я хотел проверить эту структуру. Итак, я побежал:

sudo -u <dummy user> chromium-browser

И я получил следующую ошибку:

[0906/012127:ERROR:nss_util.cc(90)] Failed to create /home/<user>/.pki/nssdb directory.
[0906/012127:ERROR:nss_util.cc(90)] Failed to create /home/<user>/.pki/nssdb directory.
Home directory /home/<user> not ours.

где <user> мое имя пользователя Таким образом, он пытается получить доступ к домашнему каталогу моих домашних пользователей.

Я надеюсь, что кто-то может помочь мне понять это. У меня такое чувство, что я как бы в правильном направлении, но мне нужен кто-то, кто позволит мне увидеть, что я делаю неправильно. Также будет полезна любая помощь о том, как изменить файл sudoers.

Заранее спасибо!

1 ответ

Решение

Согласно инструкции sudo:

    By default, sudo does not modify HOME

Это означает, что когда вы бежите sudo -u <dummy user> <command>, HOME не изменяется и указывает на домашний каталог вызывающего пользователя. Точнее, вся среда остается неизменной, и поэтому команда выполняется в среде пользователя, который вызвал sudo, Только uid и когда команда пытается написать в $HOME у него нет правильного разрешения.

Для того, чтобы запустить команду как <dummy user> без запроса пароля и правильной среды, вы должны создать простой файл:

    sudo visudo -f /etc/sudoers.d/myOverrides 

с этой директивой:

    <user> ALL= NOPASSWD:/bin/su

Что позволяет <user> бежать su команда от имени root без запроса пароля (<user> пароль) и работает su root не требует ввода пароля целевого пользователя (<dummy user> в этом случае).

   sudo su - <dummy user> -c /path/to/chromium-browser

Еще один лучший подход, изменить /etc/sudoers.d/myOverrides с:

   <user> ALL= (<dummy user>) NOPASSWD:/path/to/chromium-browser

это позволяет <user> бежать /path/to/chromium-browser как <dummy user> без запроса пароля.

   sudo -u <dummy user> -i /path/to/chromium-browser

где опция -i, согласно инструкции sudo:

Опция -i (имитировать начальный вход в систему) запускает оболочку, указанную в записи passwd(5) целевого пользователя, в качестве оболочки входа в систему. Это означает, что специфичные для входа файлы ресурсов, такие как.profile или.login, будут читаться оболочкой. Если указана команда, она передается в оболочку для выполнения. В противном случае, интерактивная оболочка выполняется. sudo пытается перейти в домашний каталог этого пользователя перед запуском оболочки. Он также инициализирует среду, оставляя DISPLAY и TERM неизменными, устанавливая HOME, SHELL, USER, LOGNAME и PATH, а также содержимое /etc/environment в системах Linux и AIX. Все остальные переменные среды удаляются.

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