題:
如何更改用戶pi sudo權限;如何添加具有不同權限的其他帳戶?
xxmbabanexx
2013-04-21 23:15:10 UTC
view on stackexchange narkive permalink

由於我偶爾會通過SSH使用我的Pi,因此我了解到允許SSH訪問sudo命令是危險的。因此,我計劃在不久的將來關閉此許可。但是,當我安裝軟件包時,通常必須重新啟動。當前,只有超級用戶才能使用此權限。

  sudo reboot  

我有什麼方法可以編輯pi用戶的權限允許它重新啟動(並安裝)軟件包?

我可以有多個具有不同權限的帳戶嗎?

謝謝

提供的答案是否有幫助?他們中有人嗎?然後將其標記為已回答。
是。如果您仍然有興趣,我將其更新到2017年6月-這個問題是在4年零2個月前提出的,它使我找到了今天解決問題的方法。查看以下答案:
五 答案:
orithena
2013-04-22 01:24:56 UTC
view on stackexchange narkive permalink

需要說明的是:沒有“ 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”!)。

visudo是一個命令,它將使用您的默認編輯器來編輯sudoers文件。如果不編輯此文件可能會很痛苦,因此不建議您這樣做。您可以通過發出`sudo update-alternatives --config editor`來更改首選編輯器。
或者您可以暫時嘗試使用此`VISUAL = vim visudo`。但是,這是更改默認程序(例如編輯器)的絕佳示例。
Krzysztof Adamski
2013-04-22 01:03:27 UTC
view on stackexchange narkive permalink

是的,您可以將 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 ,以使他們可以訪問不同的命令。

SDsolar
2017-06-21 11:21:55 UTC
view on stackexchange narkive permalink

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 命令將起作用,您可以從那裡繼續。

剛剛通過Google找到了-因此,如果我關注這一點,則該用戶仍需要位於sudoers組中,但是/etc/sudo.d控制著要求特定用戶輸入密碼的頻率?
是的知道了成為sudoers的成員通常是在創建用戶時完成的。使用示例:您會注意到,通用命令字符串`sudo apt-get update && sudo apt-get upgrade`調用sudo兩次,但令人討厭的是,它可能會停止並在升級之前再次要求輸入密碼。所以我將我的名字設置為從不提示我的登錄名(pi),然後再使用`sudo apt-get update -y && sudo apt-get upgrade -y`,因此它不會停止詢問OK以使其可調整變化。使它更像Unix。照我說的做,就算我走開也要完成。
scruss
2013-04-22 01:06:17 UTC
view on stackexchange narkive permalink

允許SSH通過sudo訪問比允許任何用戶安裝軟件包更安全。如果您真的很擔心,請將其更改為 / etc / sudoers 的行:

  pi ALL =(ALL)NOPASSWD:ALL  

  pi ALL =(ALL)PASSWD:ALL  

這意味著您將在第一次提示輸入密碼時您可以在任何會話中使用sudo,並在幾分鐘超時後再次使用。您不能直接編輯 / etc / sudoers ;可以使用 sudo visudo 來實現。

像Krzysztof一樣,在那裡跳出一個答案。您確定每次安裝新軟件包都需要重新啟動嗎?除非您要安裝新的內核或固件,否則不需要重啟。這是我們這裡提供的優質操作系統...

提到timestamp超時是一個好主意。默認是15分鐘,順便說一句。請注意,“ PASSWD”是默認設置(如果在此命令列表的前面未指定“ NOPASSWD”)。另外請注意,如果知道自己在做什麼,可以直接編輯`/ etc / sudoers`而不會有問題。使用`visudo`在臨時文件中進行更改,以防止在更改中間自動寫入文件(這可能會導致語法錯誤和/或安全問題),它會鎖定此文件以防止同時進行多次編輯,並在寫入之前進行一些語法檢查文件。
我認為OP更新很少使他總能獲得新內核……或者某個同事每次都告訴他重新啟動,因為他不想解釋OP如何在更新列表中發現內核軟件包。
TNX對此發表評論,@Krzysztof。我在回答中做了更正。您是正確的編輯。實際上,在我的16.04機器上,我只是將pi行直接放入sudoers文件中,因為sudoers.d僅包含一個自述文件。我之所以把它留在裡面是因為,但是至少pi權限正在處理中。 (我最喜歡的編輯器是VI / VIM,順便說一句,但有時會使用Leafpad或Idle。不再精通emacs了-15年了很長的時間-而且在vim中,我可以比在emacs中做更多,更快的工作,到目前為止。)再次感謝您。
user67191
2017-05-20 14:42:54 UTC
view on stackexchange narkive permalink

只是scruss所說的一種替代方法,通過運行 sudo rm /etc/sudoers.d/010_pi-nopasswd 刪除 /etc/sudoers.d/010_pi-nopasswd 文件代碼>。然後,可以輕鬆地編輯主要的sudoers文件,從而破壞sudo。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...