由於我偶爾會通過SSH使用我的Pi,因此我了解到允許SSH訪問sudo命令是危險的。因此,我計劃在不久的將來關閉此許可。但是,當我安裝軟件包時,通常必須重新啟動。當前,只有超級用戶才能使用此權限。
sudo reboot
我有什麼方法可以編輯pi用戶的權限允許它重新啟動(並安裝)軟件包?
我可以有多個具有不同權限的帳戶嗎?
謝謝
由於我偶爾會通過SSH使用我的Pi,因此我了解到允許SSH訪問sudo命令是危險的。因此,我計劃在不久的將來關閉此許可。但是,當我安裝軟件包時,通常必須重新啟動。當前,只有超級用戶才能使用此權限。
sudo reboot
我有什麼方法可以編輯pi用戶的權限允許它重新啟動(並安裝)軟件包?
我可以有多個具有不同權限的帳戶嗎?
謝謝
需要說明的是:沒有“ sudo命令”,只有需要root特權才能正確操作的命令,而 sudo
是為一個命令獲取它們的命令: sudo
只需以root身份運行給定的命令(將“ sudo”作為命令性語句“ superuser,做點事!”)。 / etc / sudoers
中記錄了有關哪些用戶可以執行此操作的規則。在默認的Raspbian安裝中,默認用戶“ pi”已獲得此行的權限:
pi ALL =(ALL)NOPASSWD:ALL
這意味著:“允許所有主機上的用戶'pi'切換到所有用戶,並且在使用ALL(read:any)命令時不必鍵入其PASSWD”。 (我在這裡使用了瘋狂的語法來保留行的順序..關於為什麼有一種區分主機的說明:這樣,同一sudoers文件可以分發到網絡上的多台計算機上,因此網絡管理員的工作量較少)
可能是能夠使用sudo運行命令而無需發出管理員密碼的原因,這就是為什麼您認為通過SSH使用sudo會很危險的原因(我還沒有聽說過這樣做...那麼您能解釋一下您真正意味著什麼危險嗎?)。
確保您可以擁有多個具有不同權限的用戶。但是,恐怕仍然使用sudo仍然是管理這些權限的最佳方法。 adduser admin
這將創建一個用戶“ admin”,詢問密碼,創建其主目錄,等等。
$ sudo adduser admin sudo $ sudo adduser管理員adm
這會將“ admin”用戶放入“ sudo”和“ adm”用戶組。並且由於在Linux中通過將用戶添加到用戶組來管理權限,因此,這為“ admin”用戶提供了他所需的所有特權和權限。 / etc / sudoers
中有一行,它允許用戶組“ sudo”中的任何用戶以root用戶身份執行任何命令;而此特權正是管理員用戶所需要的(將他添加到“ adm”中,使他無需使用 sudo
即可讀取 / var / log
中的某些日誌文件,還有一些其他事情)。當您以admin身份登錄時,您仍然需要使用 sudo
,但是現在sudo每次大約五分鐘不使用sudo時都會一次又一次詢問管理員密碼。
現在註銷,然後以“ admin”用戶身份登錄。檢查
$ sudo apt-get update $ sudo apt-get upgrade
是否有效。如果是這樣,您可以撤消“ pi”用戶的某些特權,因為現在您可以確定您的管理員用戶具有正確的特權:
$ sudo deluser pi sudo $ sudo deluser pi adm
這會將用戶“ pi”從用戶組“ sudo”中刪除。
$ sudo visudo
這將啟動一個編輯器,使您可以編輯 / etc / sudoers
。在以“ pi”開頭的行之前放置一個哈希標記(#
),將其註釋掉(或簡單地將其刪除)。然後保存並退出編輯器,然後visudo將立即重新加載特權規則。現在,不再允許用戶“ pi”使用sudo。
之後,您可以以用戶“ pi”的身份重新登錄。如果您要切換到某些命令的管理員,請使用 su
(“切換用戶”):
$ su-admin
如果要添加更多用戶:像上面一樣使用 sudo adduser <name>
,然後檢查用戶“ pi”具有的用戶組列表:
$組pipi:pi撥出cdrom音頻視頻plugdev遊戲用戶netdev輸入
使用 sudo adduser <username> <groupname>
將新用戶添加到其中幾個用戶組,從而使他可以使用音頻,加速視頻,使用可插拔設備等。如果不確定,請將其添加到所有這些用戶組中。用戶組(而不是“ sudo”!)。
是的,您可以將 sudo
配置為僅允許用戶以其他特權運行某些命令。您可以在 / etc / sudoers
文件中更改此設置,但建議不要直接執行此操作,而應使用 sudo visudo
命令執行此操作。
在在默認的系統安裝中,您應該找到以下行:
pi ALL =(ALL)NOPASSWD:ALL
它告訴 sudo
允許用戶 pi
以 root
用戶身份運行所有cammand,而無需提供密碼。您可以更改最後一個 ALL
並指定允許以逗號分隔的命令列表(及其完整路徑)。在您的情況下,應將此行更改為:
pi ALL =(ALL)NOPASSWD:/ usr / bin / apt-get,/ sbin / shutdown
請注意, sudoers
中還有一行會影響 pi
用戶:
%sudo ALL =(ALL:ALL)ALL
此行允許組 sudo
中的所有用戶(名稱前面的%
字符表示它是組名而不是用戶名)運行所有密碼,只要他們知道 ,其OWN ,密碼。如果您離開此行,則用戶 pi
將能夠運行所有其他命令,但將要求其輸入密碼。
如果要防止這種情況發生,您可以刪除此行或從 sudo
組中刪除用戶 pi
。
在更改 / etc / sudoers
文件後,您可能需要通過調用 sudo -l -U pi
來檢查它是否確實滿足您的要求命令。
當然,您可以創建其他帳戶並配置 sudoers
,以使他們可以訪問不同的命令。
2018年5月,這在概念上仍然是準確的,但此過程在更高版本中有所更改:
首先,應在vi或nano或leafpad或emacs中直接編輯文件-以您最喜歡的文本編輯器。
此文件中未提及用戶名pi:
/ etc / sudoers
文件的最後一行是這樣的:
#includedir /etc/sudoers.d
這是一個包含名為
010_pi-nopasswd
包含此單行
pi ALL =(ALL)NOPASSWD:ALL
只要我以pi用戶身份登錄,就不會提示輸入任何sudo命令。 (請注意語法必須完全是這種方式)
這很棒。
分組行%sudo ALL =(ALL:ALL)ALL
仍然存在,如
所以回答問題的第一部分:
當我將文件/etc/sudoers/sudoers.d/010_pi-nopasswd文件移至一個目錄級別以使包含失敗時,然後等待15分鐘,這導致我的Raspbian系統在輸入密碼時提示輸入我自己的密碼使用sudo就像我以前使用的Ubuntu 14.04 LTS系統一樣。
然後,當我將其移回它所屬的位置時,即使10分鐘後它也不再提示我。
無需重新啟動。瞧,使用sudo
時,我不提示輸入密碼。我的lubuntu 14.04 LTS測試系統具有相同的設置,只是沒有010_pi-nopasswd文件。 lubuntu是使用pi作為root用戶安裝的。每次我使用sudo時都會提示我,然後在10分鐘後沒有提示我。
我將同一文件添加到Ubuntu系統中,就像Raspbian的設置方式一樣(記住,當您仍處於10分鐘的窗口中時,請記住該文件的chmod 0440)-和
Voila,即使我在15分鐘後以pi身份登錄,它也不再提示我輸入自己的密碼。
同樣,更改會立即發生,而無需重新啟動。
這是2018年5月的答案,說明如何禁用和啟用提示使用以root用戶pi登錄時的sudo命令。可以用相同的方式配置其他用戶和組。
-Ubuntu 16.04 LTS的更新此系統也非常相似。但是,最大的區別是 16.04具有更嚴格的文件權限,因此必須在 su
模式下完成該工作。。如果忘記了root密碼,則可以從您的密碼中重置該密碼。使用 sudo passwd root
正常提示,然後 su
命令將起作用,您可以從那裡繼續。
允許SSH通過sudo訪問比允許任何用戶安裝軟件包更安全。如果您真的很擔心,請將其更改為 / etc / sudoers
的行:
pi ALL =(ALL)NOPASSWD:ALL
至
pi ALL =(ALL)PASSWD:ALL
這意味著您將在第一次提示輸入密碼時您可以在任何會話中使用sudo,並在幾分鐘超時後再次使用。您不能直接編輯 / etc / sudoers
;可以使用 sudo visudo
來實現。
像Krzysztof一樣,在那裡跳出一個答案。您確定每次安裝新軟件包都需要重新啟動嗎?除非您要安裝新的內核或固件,否則不需要重啟。這是我們這裡提供的優質操作系統...
只是scruss所說的一種替代方法,通過運行 sudo rm /etc/sudoers.d/010_pi-nopasswd
刪除 /etc/sudoers.d/010_pi-nopasswd
文件代碼>。然後,可以輕鬆地編輯主要的sudoers文件,從而破壞sudo。