gksudo 与 sudo 不同

gksudo 与 sudo 不同

背景:

我在 VM 环境上运行 linux mint,其中有一个只有 root 可以访问的已安装文件夹,并且我希望我的 Deluge 客户端将我的 torrent 下载到该文件夹​​。

如果我进入终端并执行:sudo deluge 它会询问我的密码并以具有特权的 my_user 身份运行。好吧,直到很远。

现在我想制作一个 bash 脚本,以提示的方式在屏幕上询问密码。

问题:

如果我将 bash 文件写为:

/usr/bin/gksudo deluge

或者

/usr/bin/gksudo -u root deluge

我得到了完全相同的结果,我以 root 身份运行 deluge,将所有环境作为 root 运行,我的主文件夹位于根文件夹上,因此它不会导入 my_user 首选项/配置,也不会导入我排队的 torrent。

如果我将 bash 文件写为:

/usr/bin/gksudo -u my_user deluge

它以 my_user 身份运行,如果没有提升的权限,它无权在共享文件夹上写入。

真正的问题:

我如何编写一个 bash 脚本,允许我以 my_user (相同的环境)运行 deluge,并具有提升的权限并提示输入密码?

附:

我尝试了-k很多方法 arg 但没有成功。

答案1

Sudo 似乎将 $HOME 和 $PATH 保留为“用户”主目录和路径,而不是 root 环境设置。此操作给“用户”带来了问题,大多数专家声称您不应该使用 sudo 运行图形 X 应用程序,而应该使用 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

相关内容