標籤:

Linux 用戶一打開終端就 sudo su 算是壞習慣嗎?


這絕對是壞習慣。

在*nix下操作要遵循最少許可權原則(Principle of least privilege).

sudo su讓你以root用戶的身份保持登錄。root擁有超級許可權,擁有對系統的最高管理權。如果你一直保持著root,所有的操作都可能很有破壞性。

比如你想要刪除一個文件叫/$FOO. 如果如果$FOO開頭是空格,那麼

root# rm -rf /$FOO

會把根目錄刪掉。

暴露在root下會增大被入侵的風險。比如這篇文章里說的Never IRC as Root, 不要在root下運行irc client,不然irc client里的漏洞會讓黑客很容易進入系統。

這篇文章里列出了七個比較好的linux操作習慣。http://www.bspcn.com/2008/04/17/the-7-habits-of-highly-effective-linux-users/, 第一條就是不要用保持在root下。

我在一些地方實習的時候,我的mentor是一些有著二十年unix經驗的老黑客(since 1993, Solaris)。他們都一直用sudo,而且密碼都長的不行。他們告訴我絕大部分需要root的操作都可以用sudo來解決。

如果你覺得輸sudo密碼很麻煩,可以在sudoers裡面把自己設置成NOPASSWD. 或者選一些命令設為不需要sudo密碼。

------------------------rm小tip----------------

在rm後面如果有wildcard的時候一定要非常小心。比如你要rm *,那最好先運行一下echo rm *來看看將會有什麼被刪除掉。這是一個很機智的小技巧。參見http://docstore.mik.ua/orelly/unix3/upt/ch14_03.htm



這不是壞習慣什麼是壞習慣,這麼喜歡 root 你幹嘛不天天直接 root 登錄啊,


如果你是自己用用,你對你自己的行為負責,隨便su。如果你給別人開賬號,你竟然讓他能進sudoers,這才是壞習慣。

btw,配置不嚴謹的policykit比sudo的破壞效果不會少。


這習慣在自己用的電腦上也不是好習慣,比如你在root下copy了一個文件,或者解壓一個壓縮文件,這種操作應該算是日常吧。那麼這個文件的owner就不會是你,在命令行下倒是能用的好好的。

但是你萬一要有個在gui下啟動的軟體要調用這個文件呢?這就可能不可讀也不可寫,我不信你所有程序都是命令行啟動然後放背景里執行的,萬一有那是更壞的習慣。於此同時,經常會有新手用sudo更改了用戶主目錄下的文件導致無法進入桌面。很多軟體安裝時是bash腳本會在用戶主目錄下建立一個.xxx文件,你也不能正常使用吧。

非桌面用戶那麼就是server用戶,除非是server的管理員不然也不應該使用root。最後如果你是server管理員,你敢把samba,http等協議設為root啟動試試?


算,我有次在學校伺服器上跑程序,想刪個文件夾,隨手打了個

rm . /* -fr

想想我要是在root下會怎麼樣

我覺得那些師兄師姐的程序跑了2個月了。然後我就這麼把它們幹掉了。

估計我也會被他們幹掉的


絕逼是

sudo 就是為了讓你盡量少以 root 許可權操作而設計的。


這怎麼是壞習慣?一直用root登錄的從來沒聽過。 (逃走)


狹義從作業系統的設計角度來說: 是

廣義來說, 直接sudo su 不算沒有採用最小許可權原則

(申明最小許可權原則作用域是計算機科學以至其它領域, 是不是採用和*nix 無任何關係, windows 的權限設也是一樣的)

在計算機使用上, 任何習慣都可以稱上"壞習壞", 在不重覆原則下, 如果你每次登入都要用到root 的權限, 那麼你可以用root 來登入而不是用其他使用者。

如果是遠端的話, 每次輸入是一個壞習慣, 因為你無必要去做。

如果是遠端登入的話, 簡單來說可以把root unlock, 哲學上說, 連續用上兩個密碼不會比一個密碼安全, 但無論如何可以說沒有解決過被hack 的機會。把登入來源管制和用上 public key authentication (.ssh/authorized_keys)才是正確的解決方法, 把不把root 加上密碼其實只是偏好問題。

可參看這串mailing list Re: PermitRootLogin enabled by default

總結一下:

這是個壞習慣

如果是本機操作, 你應該直接用root。

如果是遠端操作, 你應該用key authentication。

如果是遠端的新電腦, 不存在"每次"這個問題, 你不應該不斷用不同的電腦去對同一台機做系統級操作。


我曾經幾年時間sudo是必須輸入密碼的,那時又很喜歡配置系統,每天要輸入幾十甚至上百次密碼,卻從來沒想過取消密碼,或者直接用root。直到有一天我意識到,自己最重要的文件都在$HOME,系統崩了最多幾十分鐘就能恢復,數據丟了可能再找不回來了。自己每天輸入那麼多密碼,居然是為了保護並不重要的系統文件。於是sudo免密碼,世界安靜了。

現在,雖然個人電腦還是不會用root直接登陸,但工作用的測試機基本全程root,避免誤操作非root救不了你,該犯的錯誤還是早點好,越往後代價越大。

至於一開終端就sudo su是不是好習慣。一個命令能完成的事情盡量不用兩個命令,學會用sudo -s和sudo -i。如果需要用root,這樣做是無可厚非的,如果不知道自己是否需要root,這自然不是一個好習慣,你至少要知道什麼命令需要用root吧。


1. sudo 的設計目的並不是為了讓你用sudo吧,是為了把某些普通用戶賦予執行某些操作的root許可權

2. 很多人提到的誤操作,sudo能減少誤操作么?rm / -rf 之類的,有sudo你也順溜的輸密碼執行了

3. 對於聯網的server,登陸和執行命令是兩碼事,不能說非root登陸然後su 到root 沒有意義。

至於是不是誤操作, 仁者見仁智者見智。更好的利用工具才是核心


曾經有一次手抖sudo rm -rf刪掉了重要的資料,欲哭無淚。從此以後都是提示許可權不夠的時候才sudo的。


其實Linux之所以設計成用戶許可權和根許可權,應該主要是對操作系統的一種保護,防止普通用戶獲得根許可權因為誤操作對系統進行破壞,因此,對於作為伺服器上運行的linux以及用於開發的機器對於許可權的管理是非常必要的,因此題主所說的也可以說是壞習慣,但是若是對於普通的只是用linux來玩玩體驗的話,這個問題也就沒有什麼價值了~概括的說,不是好習慣就是了!


其實Windows下也是壞習慣,雖然有UAC,高許可權也就只是管理員,也不安全。Linux就更別說了,root許可權太大了


抬不給我臉了!沒有GUI 直接root登錄ˊ_&>ˋ(極少數情況下才會使用OS X Single User Mode)


我們公司ERP系統的賬號只有個root。。。。你讓我怎麼辦?


自己用的不算,自己用還弄那麼多許可權純屬受虐狂。


竟然敢這麼干orz,

被boss發現分分鐘開除啊


我覺得sudo su倒不是什麼壞習慣,反而rm /* -rf之類的才是壞習慣。


表示我也喜歡這樣 就如同win7下直接開管理員許可權一樣,不然覺得各種束縛


推薦閱讀:

使用命令行真的比使用可視化界面好嗎?
正在學習嵌入式linux開發,求推薦詳細介紹makefile和鏈接腳本語法相關的書籍或者資料。?
怎麼看待 Linus 和 Richard Stallman 對 C++ 的態度?
Linux是否有類似於IIS統一管理網站的工具?
最逼近Mac OS X的Linux系統有哪些?

TAG:Linux |