gksudo 與 sudo 不同
背景:
我在一個虛擬機環境上執行 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