各位好,
謝謝大家幫忙解惑我的相關問題,
但是可能是我的敘述不是很清楚,所以有些回答誤會我的意思
關於我上一篇的問題是寫說,我無法理解 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 系統意義的前輩可以幫忙解惑,
: 謝謝