2010-08-16 155 views
0

我正在爲我在大學寫的一個小型項目編寫技術文檔。如何顯示腳本應該以root權限運行?如何在Linux中顯示腳本應該以root身份運行

我的主要問題是描繪場景的規範是什麼?我當然可以寫'用root權限運行腳本',但我想我已經在這裏問過了。

我應該做的:

Run the script with X: 

    ./script.py X 

PS:不要處理UNIX多前,所以請不要火焰:)

+0

這個人可以在Unix相關的SE站點中被問到,因爲那裏的人可能更好地知道如何處理這種情況。它不依賴於程序設計,因此無論如何仍然留在 – 2018-01-18 17:15:51

回答

6

你都應該說,腳本必須以root身份運行,並解釋如何做到這一點。

現在以root身份執行某些東西的最常用方法是sudo ./script.py X。您的文檔應該將其視爲大多數用戶的推薦方法,除非他們知道更好或失敗。

另一種方法是su -c "./script.py X";如果它包含shell元字符,這需要X的嵌套引用。一個基本上等效的方法是在根shell提示下運行su,然後運行./script.py X

如果你正在展示shell提示符,傳統的慣例是使用$%在提示非root用戶的結束,#根。但是,今天大多數unix用戶不知道這個約定,所以如果你使用它,你必須解釋它。

+0

+1覆蓋所有情況。 – 2010-08-16 13:06:56

+0

感謝您的回答。 – 2010-08-16 15:08:05

0

一兩件事你可以做的是顯示shell提示和根之間的區別和普通用戶一樣,如

$ ./script 
# ./script 

其中$是普通用戶提示符,#是根用戶提示符。

另一種選擇是使用「sudo」。

+0

啊,我曾經想過#。 – 2010-08-16 12:33:07

2

如果目標系統支持sudo,您可以使用以下命令:

$ sudo ./script.py X 
+0

是的,這也是一種可能性。 – 2010-08-16 12:37:14

4

如果腳本未以root身份運行,您是否希望腳本失敗?例程os.geteuid()可以獲得正在運行腳本的用戶的有效用戶標識,而AFAIK,根的euid始終爲0.您可以執行檢查,如果用戶不是root用戶,則會打印出錯誤消息。

if os.geteuid() == 0: #or maybe if not os.geteuid() 
    print "Running as root!" 

else: 
    print "Not running as root!" 

這樣,代碼更自我記錄,所以你不必依靠你寫的自述這麼多。

1

你可以寫一個簡短的腳本來調用腳本(或原始腳本中這樣做),你測試一個DISPLAY變量設置,如果gksu可使用gksu或回落到su否則。 (您也可以測試KDE的等價物,kdesu,我想。)

gksu的優點是它更好地與GUI集成在一起,如果您期望用戶點擊腳本(這對於對終端不熟悉的人)。

相關問題