如果使用者被授予對所有命令的存取權限,sudo 比直接使用 su 更安全嗎?

如果使用者被授予對所有命令的存取權限,sudo 比直接使用 su 更安全嗎?

因此,我一直在研究使用su和之間的差異sudo,每個人似乎都同意該sudo方法比允許存取根帳戶本身更安全。他們說,使用 root 帳戶,您只需一個命令就可以破壞整個系統。這我明白了。但在系統上建立的初始使用者也可以使用 sudo 來存取所有命令。我可以透過運行找出答案su -l。如果是這樣的話,那麼我就可以簡單地運行sudo <game-ending command>來破壞我的系統。那麼,與允許我直接存取超級用戶帳戶相比,這種方法如何更好或更安全?我可以運行所有相同的命令...

是否因為sudo在命令列上使用我明確告訴計算機我認為我知道我在做什麼?他們是否認為人們會忘記他們在超級用戶帳戶下,除非他們明確這麼說?

人們也表示,如果系統被外國人入侵並進入,那麼使用 root 帳戶將使他們對我的系統做出可怕的事情。但在我看來,如果他們已經有權訪問我的帳戶,並且知道我的密碼,他們就可以通過使用sudo 並輸入我的密碼來完成這些同樣可怕的事情,因為他們甚至不需要知道超級用戶的密碼。我在這裡沒有得到什麼?

答案1

就我個人而言,我不一定認為它更安全,並且(sudo)的大部分好處都在多用戶系統上。在單用戶系統上,這可能是一次清洗。

好處是(排名不分先後):

  • sudo 具有出色的日誌記錄功能。 sudo 記錄每個指令。
  • sudo 允許更精細的粒度控制。可以設定 sudo 來授予對某些命令(但不是所有命令)的 root 存取權。
  • sudo 使用登入密碼。這可以避免必須提供 root 密碼(就像使用 su 一樣),並且與上面有關對 root 進行更細粒度控制/存取的觀點有關。
  • 在Ubuntu中,預設情況下,root帳號是被鎖定的。這可以阻止破解者登入(例如透過 ssh 遠端登入),他們必須猜測使用者名稱和密碼。如果root帳號沒有被鎖定,就像su的情況一樣,那麼他們只需要破解root的密碼即可。
  • sudo -i可能是將 root 的環境變數與使用者隔離的最佳方法。這有時會出現,但相當深奧。看https://help.ubuntu.com/community/RootSudo#Special_notes_on_sudo_and_shells
  • 有些人感覺必須在他們希望以 root 身份運行的每個命令之前輸入 sudo 或讓 sudo 逾時可以讓他們停下來並更清晰地思考,並減少錯誤或運行錯誤的命令。如果這樣做對您有幫助,那也是一種好處。

可能還有更多好處,但是,恕我直言,這些是主要的好處。

也可以看看 -https://help.ubuntu.com/community/RootSudo

試著回答您的其他一些想法:

  • 只要您知道密碼,su 或 sudo 就無法阻止您執行惡意程式碼。兩者都不是更安全或更好。
  • 破解者可以透過多種方法獲得 shell 存取權限。當您在安全通知中看到“運行任意程式碼” -https://usn.ubuntu.com/usn/- 這意味著破解者可以運行 /bin/bash 或任何其他程式碼。因此,破解者可以通過各種漏洞,在不知道您的登入名稱或密碼的情況下獲得 shell 存取權限。 sudo 或 su 對此沒有幫助。
  • 如果破解者俱有 shell 存取權限,則無需 root 存取權限即可造成大量破壞。例如,加密您所有個人資料的勒索軟體。
  • 如果破解者透過 su 或 sudo 對具有 root 存取權的帳戶進行 shell 訪問,則破解者可以透過超出本討論範圍的多種方法獲得 root 存取權。 sudo 或 su 在這方面也不優越。

因此,雖然您觀察到 sudo 的問題或缺陷,但 su 具有完全相同的漏洞,並且 su 在這些方面並不優於 sudo,恕我直言

答案2

想像一下,您有 20 分鐘時間來做一些複雜的事情。你有點宿醉了,你得趕快走。你說:「讓我們使用 su」。 「這會節省一些時間」是你的理由。

不小心你輸入了

rm -rf /*

代替

rm -rf ./*

您的系統現在正在變磚,距離截止日期還有 10 分鐘。

如果您明確選擇何時需要 root,則可以最大程度地減少發生這種情況的可能性。可能不需要root,rm -r ./*那為什麼要使用它呢?為什麼要冒這個險?

這就是“安全”在這裡的含義。最大限度地降低用戶(所有用戶,而不僅僅是初學者)犯下致命錯誤的風險。

當然,這是一個極端的例子,不應該允許在生產環境中發生(我保證它已經發生在生產環境中)。

安全方面,sudo 在某些方面也更適合。作為@Panther 說- 日誌記錄、限制、root 密碼是 SPOF 等)

答案3

我想為其他答案添加一些歷史觀點。不幸的是,除了我自己對新聞群組討論和雜誌文章的記憶外,我沒有準備好任何資料。

不久前,即20 世紀90 年代,發行版使得在您自己的硬體上安裝Linux 變得更加容易,即使您沒有太多的電腦知識。的是,這些人以前沒有被訓練為系統管理員。相反,許多人習慣於(單一使用者)系統,例如 Windows 95/98。他們了解到,大多數 Linux 系統管理任務都需要在奇怪的「root」帳號下運作。

因此,有些用戶只是登入為並使用該帳戶進行所有日常工作。為什麼他們必須打字su一次又一次地輸入密碼,或只是為了一些管理命令而登入新的 tty?但使用當然,一切都不是一個好主意,因為在錯誤的地方執行一些不經意的命令可能會對您的系統造成更大的損害。這甚至導致一些發行版(是SuSE嗎?)修改了桌面背景使用者顯示一個大警告,表明您應該僅將該帳戶用於管理任務。

所以,Ubuntu 方式sudo有一些優點(除了那些已經由黑豹列出)。

  • 您無法直接登入帳號。
  • 安裝過程不會要求您提供(附加)root 密碼,您只需要一個(您的使用者的)密碼。
  • sudo快取您的憑證,因此對於連續的多個管理命令,您只需輸入密碼一次(與 相比su)。這減少了打開 shell 或新終端的衝動特權。
  • 而且它可以更輕鬆地在線上和文件中告訴使用者哪些命令必須以管理員身份輸入,哪些命令不需要。

對於那些不敢自己動手的人,還有安裝派對。
² 但你sudo -i以普通使用者身分登入後,使用類似或 的命令sudo su - root取得 root shell。
³ 但你當然知道你不應簡單地從互聯網複製和貼上命令, 正確的?

答案4

根據配置,sudo <game ending command>不一定有效。當然,如果sudoers配置為“user ALL=(ALL) ALL”,sudo則不會提供額外的保護。但是,您可以指定需要經常運行的特權命令列表,例如安裝新軟體包,並省略諸如rm.

這樣,如果您以 登錄,則可以執行所有命令root,但由於您只是偶爾需要,因此運行的風險<game ending command>將大大降低。

相關內容