gksudo отличается от sudo

Справочная информация:

Я запускаю linux mint на виртуальной машине, где у меня есть смонтированная папка, к которой может получить доступ только root, и я хочу, чтобы мой клиент Deluge загружал мои торренты на нее папка.

Если я захожу в терминал и выполняю: sudo deluge он запрашивает мой пароль и запускается как my_user с привилегированными правами. Хорошо, пока далеко.

Теперь я хочу создать сценарий bash, который бы быстро запрашивал пароль на экране.

Проблема:

Если я напишу свой файл bash как:

/usr/bin/gksudo deluge

или

/usr/bin/gksudo -u root deluge

, я получу точно такой же результат, я запускаю deluge как root со всем моим env как root, моя домашняя папка находится в корневой папке, поэтому он не импортирует ни настройки / конфигурации my_user, ни мои торренты в очереди.

Если я напишу свой файл bash как:

/usr/bin/gksudo -u my_user deluge

, он будет работать как my_user и без повышенных привилегий, у него не будет доступа для записи в общую папку.

Настоящий вопрос:

Как я могу написать сценарий bash, который позволит мне запускать deluge от имени my_user (тот же env) с повышенными правами и запрашивать пароль?

PS:

Я пробовал ] -k arg во многих случаях безуспешно.

0
21.01.2017, 19:43
1 ответ

Судо, похоже, сохраняет $ HOME и $ PATH для "пользовательского" дома и пути вместо корневых параметров среды. Это действие привело к проблемам для «пользователя», и большинство экспертов утверждают, что вы не должны запускать графические приложения X с помощью sudo, а вместо этого следует использовать gksudo.
Графические приложения обычно хранят файлы .config в $ HOME. Если вы запускаете графическое приложение с помощью sudo, файлы конфигурации в домашнем каталоге «пользователя» будут созданы (или, если они существуют, могут быть перезаписаны) учетной записью root.
Когда вы вернетесь из sudo, вы можете обнаружить, что ваши приложения сломаны, поскольку обычные пользователи не могут получить доступ к файлам конфигурации, созданным root. Правильный способ для вашего случая должен заключаться в том, чтобы продолжать использовать ваше приложение в качестве «пользователя» и хранить файлы в месте, к которому у «пользователя» есть доступ.

Кстати, gksudo -k , похоже, сохраняет пользовательские настройки в моих тестах в Debian:

gv@debian:~/Desktop/PythonTests$ echo $USER-$HOME-$PATH
gv-/home/gv-/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

gv@debian:~/Desktop/PythonTests$ ./oneshot.sh
You run this script as USER=gv
Your HOME dir is /home/gv
Your PATH is /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

gv@debian:~/Desktop/PythonTests$ gksudo ./oneshot.sh
You run this script as USER=root
Your HOME dir is /root
Your PATH is /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

gv@debian:~/Desktop/PythonTests$ gksudo -k ./oneshot.sh
You run this script as USER=root
Your HOME dir is /home/gv
Your PATH is /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

gv@debian:~/Desktop/PythonTests$ cat oneshot.sh
#!/bin/bash
echo "You run this script as USER=$USER"
echo "Your HOME dir is $HOME"
echo "Your PATH is $PATH"
exit 0
1
28.01.2020, 02:46

Теги

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