看板 Linux 關於我們 聯絡資訊
各位好, 謝謝大家幫忙解惑我的相關問題, 但是可能是我的敘述不是很清楚,所以有些回答誤會我的意思 關於我上一篇的問題是寫說,我無法理解 sudo su - USER_NAME 這個指令的使用情境, 先來作個情境設定, 假設一個系統有 4 個帳號 (root , alice , bob , service) 1. root 沒有設定密碼,所以無法經由 root 帳號登錄, 僅能經由 sudoer 使用 sudo su - root 來取得 root BASH 2. alice 爲自然人帳號,並且在 wheel group 中,是擁有 sudoer 權限的帳號, 3. bob 爲自然人帳號 (非 daemon 或 application service ),bob 非 sudoer 4. service 爲 application 的帳號,非 sudoer 先說我對於 Linux 系統的使用理解, 帳號、權限分離是很好的做法, 所以每個服務,每個自然人都應該要有自己的帳號, 如此,誰可以做什麼,誰做了什麼,都應該一目瞭然, (這邊先排除 root) 我想像中的帳號管理是, admin (sudoer) 當然擁有較高權限, admin 可以創造帳號,以用於不同的服務管理 (例如: postgres 管理 postgreSQL service) 例如: admin 創造了 postgres 服務的帳號,理當也知道 postgres 的密碼, 所以需要管理 DB service 的時候,就用 postgres 的帳密登入, 管理完後,登出, 帳號、權限分離,很 OK 關於自然人帳號的部分, alice 創造了 bob 的帳號, bob 第一次登入的時候,創建了密碼, alice 可以使用他的管理者權限去增減 bob 帳號的權限,甚至把 bob 帳號刪除, 但是 alice 不應該有可以偽裝成 bob,以 bob 身份去做事情的權限, 因為 bob 是一個自然人, 如果今天 alice 是使用 bob 的帳密登入了 bob 的帳號, 那就是 bob 的密碼外洩,alice 盜用密碼,這很明確,沒問題 但是 $ sudo su - bob ,這個指令是要用 alice 自己的密碼登入 bob 的帳號, alice 可以在 bob 不知道的時候, 以 bob 的名義去 create, read, update, delete, bob home directory 的任何檔案 或者修改任何 bob 帳號權限可以修改的任何系統 configuration, 而 log 上都會顯示成 bob 自己做的, 這不就是等同帳號盜用嗎? 而重點是 bob 的密碼還沒有外洩,因為 alice 是用自己的密碼登入的 當然我們都知道 root / admin 的權力至高無上,所以我們應該交給信任的人來作 假設我們信任的 administrator,他永遠忠誠且不受情緒困擾,每日穩定工作, 但是 admin 的帳號有沒有可能外洩? 隨便想就有好幾個情境,在實際資安上是有發生過的 1. hacker 取得 admin 的帳密,執行不法行為後,為了隱藏痕跡,則僞造或刪除 log 2. 組織內的內鬼,想要做一些不法的事情,但又不敢用自己的帳號作, 所以就以 social engineering 取得 admin 帳號, 並且 $ sudo su - USER_A , 嫁禍給一個替罪羊來掩蓋自己的痕跡 .... 等等,許多的方式 以上的資安問題, 不就是因為 $ sudo su - USER_NAME 所造成的嗎? 再說現在資安的趨勢就是 zero trust, 連內網都要加強防護,許多系統也都不設定 root 而爲什麼 linux 會允許這種指令,感覺就是 anti-security pattern 或者是說 Linux 系統應該改成,admin 可以轉換成 service 的帳號, 但是不能轉換成自然人的 user account 這樣應該就會好很多 不知道各位前輩,可以指點解惑嗎? 謝謝 ※ 引述《gowrite (gowrite)》之銘言: : 各位好,我是一個 Linux 自學的新手, : 想問一個有關於 Linux 中在 BASH 作 user 轉換的實際意義, : 假設使用 centOS 系統中, : 有三個 users (root , alice , bob) : 其中 alice 在 wheel group 中 (意即 alice 可以使用 sudo 指令) : 當 alice 登入系統,取得自己的 BASH shell 之後, : 就可以使用轉換 user 指令 : $ sudo su - bob : 然後 alice 輸入自己密碼,就可以轉換 user 變成 bob : 就可以用 bob 的角色做事情, : 這邊就是我最搞不懂的部分 : 1. 爲什麼 Linux 系統會允許 user A 可以不需要 user B 的允許, : 就讓 user A 自己轉換爲 user B 去做事情? : 這樣跟帳號盜用的差別在那裡? : 2. 爲什麼 Linux 系統在 user A 轉換成 user B 時,要輸入的是 user A 的密碼, : 而不是 user B 的密碼? : 3. Linux 系統如此設計的意義是在哪裏呢? : 同樣的東西在 windows,alice 則必須要在 logout 之後, : 重新以 bob 的賬號登入,並且是以 bob 的密碼登入, : 我一直搞不懂 Linux 爲什麼轉換成別人的 user account 是用自己的密碼 : 希望有熟悉 Linux 系統意義的前輩可以幫忙解惑, : 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.255.199.87 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1603296462.A.BFB.html
kdjf: 既然alice不能被完全信任,幹嘛給他sudo任意指令的權限? 10/22 00:18
kdjf: 能sudo ALL=(ALL:ALL) ALL的人就是絕對信任的人,如果他不能 10/22 00:28
kdjf: 完全信任就只給他sudo一部分系統工作的權限,像是alice (ALL 10/22 00:28
kdjf: ) adduser這行就讓alice可以用root的身份執行adduser,但不能 10/22 00:28
kdjf: sudo su bob 10/22 00:28
Bencrie: 原 po 你說的東西再正常不過。admin 本來就能做任何事 10/22 01:55
Bencrie: 你要 security 就乖乖弄加密。gpg 學一下 10/22 01:59
HMKRL: 你拿到那個權限連整台server刪光光都做得到了 糾結這個根本 10/22 03:37
HMKRL: 沒意義 就算他今天不用bob的身份也能做完事偽造log 10/22 03:37
HMKRL: 你要真的辨識身份就像樓上講的 搞加密 就像使用者密碼admin 10/22 03:38
HMKRL: 也拿不到明文一樣 不然加一堆限制只是增加管理麻煩 10/22 03:38
Bellkna: root啥事都不能做不就跟windows那個殘廢的admin一樣= = 10/22 05:56
Bellkna: 要想怎麼管好sudo權限 而不是糾結有人拿sduo去幹壞事 10/22 06:03
Bellkna: *sudo 10/22 06:04
bitlife: 我只能這樣講,如果你看過早期的工作站如sparc的SunOS,你 10/22 08:59
bitlife: 的下巴大概就掉下來了.你現在看到的sudo是演進的結果,以 10/22 09:00
bitlife: 前/etc/passwd沒有shadow,mode是744,這代表任何user可以 10/22 09:03
bitlife: 用crypt函數去暴力破解使用者密碼(當然包含root),所以以 10/22 09:03
bitlife: 前好的工作站管理員工作包含經常ps看一下有沒有破解程式 10/22 09:04
bitlife: 在背景執行. 後來才有逐步改進,shadow password,sudo等等 10/22 09:05
bitlife: 真的如你所說這麼危險的環境,又牽涉重大利益,自然不應該 10/22 09:06
bitlife: 如同實驗室工作站一般管理 10/22 09:07
bitlife: sudo su - <user> 是sudo和su組合出來的,sudo才是重點,你 10/22 09:09
bitlife: 讓一個人取得root權限,是實質需要還是管理不當? 還有取得 10/22 09:10
bitlife: root權限又分成只允許他執行特定工作和執行shell,能執行 10/22 09:12
bitlife: shell基本上就能做所有的事,sudo su (不管後面有沒有加參 10/22 09:13
bitlife: 數),就是執行root身分的shell,從第一代的internet worm, 10/22 09:13
bitlife: 所有*nix的hacker所做的努力就是在目的機器上取得root的 10/22 09:14
bitlife: shell,所以問題應該是你為何要把一個root shell在未受監 10/22 09:15
bitlife: 管的情況下給一個你不信任的人? 10/22 09:15
bitlife: 我前一篇講的作法都是在講監管,有較好的監管,可不可信任 10/22 09:20
bitlife: 是比較次要的問題,因為沒辦證明可信任,所以才需要監管 10/22 09:21
bitlife: 監管也分成本等級,CIA等級(不可能任務1拉肚子那位)和一般 10/22 09:22
bitlife: 中小企業等級自然不同,依牽涉到的利益大小付出不同的監管 10/22 09:22
bitlife: 成本是非常合理的 10/22 09:23
bitlife: 更正一下,上面那個mode是644才對 10/22 09:27
chang0206: 信任root 的部份,大家都說過了,我就不再多說,如果 10/22 10:32
chang0206: 你要讓A可以create user , 但不能 su ,你可以在sudoer 10/22 10:32
chang0206: 中定義A 可以用sudo 來執行哪些指令,就可以避免A用 10/22 10:33
chang0206: su 去轉換身份,如果這是你想的控管方式的話 10/22 10:33
Gold740716: 你可以把使用者的家目錄加密,要登入時輸入密碼才會 10/22 12:18
Gold740716: 解密,這樣大概就沒問題了。 10/22 12:18
Gold740716: 你也可以把 root 帳號禁用,或把 root 執行 su 可以切 10/22 12:19
Gold740716: 換其它使用者的功能關掉。 10/22 12:20
qwe753951: root就是這台電腦的神,有root權限的user A就把他當作 10/22 16:46
qwe753951: 神仙下凡吧 10/22 16:46
mgdesigner: sudo su 在電影駭客任務裡常常出現 10/22 19:25
oToToT: 重點其實是Linux還是有其他權限管控機制,例如讓某個使用 10/23 01:43
oToToT: 者可以創帳號等,不是只有變成root讓大家惡搞而已。所以好 10/23 01:43
oToToT: 的作法是不會讓大部分使用者可以拿到完整root權限,而是會 10/23 01:43
oToToT: 把部分的root權限下放給特定使用者 10/23 01:43
m8403051: 但是總歸還是會有一個最高的 adm 10/23 08:07
m8403051: 就算他不能變身成你的帳號, 他還是能修改所有的log 10/23 08:08
m8403051: 所以能不能 su 需不需要密碼只是個假議題 10/23 08:08