Linux

gksudo 與 sudo 不同

  • January 21, 2017

背景:

我在一個虛擬機環境上執行 linux mint,我有一個只有 root 可以訪問的已安裝文件夾,我希望我的 Deluge 客戶端將我的種子下載到該文件夾。

如果我在終端上執行:sudo deluge 它會詢問我的密碼並以具有特權的 my_user 身份執行。好的,直到很遠。

現在我想製作一個 bash 腳本以提示方式在螢幕上詢問密碼。

問題:

如果我將我的 bash 文件寫為:

/usr/bin/gksudo deluge

或者

/usr/bin/gksudo -u root deluge

我得到了完全相同的結果,我以 root 身份執行 deluge,我的所有 env 都作為 root,我的主文件夾位於根文件夾上,因此它不會導入 my_user 首選項/配置,也不會導入我排隊的種子。

如果我將我的 bash 文件寫為:

/usr/bin/gksudo -u my_user deluge

它以 my_user 身份執行並且沒有提升的權限,它無權在共享文件夾上寫入。

真正的問題:

我如何編寫一個 bash 腳本,允許我以 my_user (相同的環境)身份執行 deluge 並提升權限並提示輸入密碼?

PS:

我在很多方面嘗試-k了 arg 都沒有成功。

須藤似乎保留 $ HOME and $ PATH 到“使用者”主目錄和路徑,而不是根環境設置。此操作已導致“使用者”出現問題,大多數專家聲稱您不應使用 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

引用自:https://unix.stackexchange.com/questions/339167