Re: [問題] 關於 linux user 轉換的問題

看板Linux作者 (gowrite)時間3年前 (2020/10/22 00:07), 編輯推噓10(10044)
留言54則, 11人參與, 3年前最新討論串2/2 (看更多)
各位好, 謝謝大家幫忙解惑我的相關問題, 但是可能是我的敘述不是很清楚,所以有些回答誤會我的意思 關於我上一篇的問題是寫說,我無法理解 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

10/22 00:18, 3年前 , 1F
既然alice不能被完全信任,幹嘛給他sudo任意指令的權限?
10/22 00:18, 1F

10/22 00:28, 3年前 , 2F
能sudo ALL=(ALL:ALL) ALL的人就是絕對信任的人,如果他不能
10/22 00:28, 2F

10/22 00:28, 3年前 , 3F
完全信任就只給他sudo一部分系統工作的權限,像是alice (ALL
10/22 00:28, 3F

10/22 00:28, 3年前 , 4F
) adduser這行就讓alice可以用root的身份執行adduser,但不能
10/22 00:28, 4F

10/22 00:28, 3年前 , 5F
sudo su bob
10/22 00:28, 5F

10/22 01:55, 3年前 , 6F
原 po 你說的東西再正常不過。admin 本來就能做任何事
10/22 01:55, 6F

10/22 01:59, 3年前 , 7F
你要 security 就乖乖弄加密。gpg 學一下
10/22 01:59, 7F

10/22 03:37, 3年前 , 8F
你拿到那個權限連整台server刪光光都做得到了 糾結這個根本
10/22 03:37, 8F

10/22 03:37, 3年前 , 9F
沒意義 就算他今天不用bob的身份也能做完事偽造log
10/22 03:37, 9F

10/22 03:38, 3年前 , 10F
你要真的辨識身份就像樓上講的 搞加密 就像使用者密碼admin
10/22 03:38, 10F

10/22 03:38, 3年前 , 11F
也拿不到明文一樣 不然加一堆限制只是增加管理麻煩
10/22 03:38, 11F

10/22 05:56, 3年前 , 12F
root啥事都不能做不就跟windows那個殘廢的admin一樣= =
10/22 05:56, 12F

10/22 06:03, 3年前 , 13F
要想怎麼管好sudo權限 而不是糾結有人拿sduo去幹壞事
10/22 06:03, 13F

10/22 06:04, 3年前 , 14F
*sudo
10/22 06:04, 14F

10/22 08:59, 3年前 , 15F
我只能這樣講,如果你看過早期的工作站如sparc的SunOS,你
10/22 08:59, 15F

10/22 09:00, 3年前 , 16F
的下巴大概就掉下來了.你現在看到的sudo是演進的結果,以
10/22 09:00, 16F

10/22 09:03, 3年前 , 17F
前/etc/passwd沒有shadow,mode是744,這代表任何user可以
10/22 09:03, 17F

10/22 09:03, 3年前 , 18F
用crypt函數去暴力破解使用者密碼(當然包含root),所以以
10/22 09:03, 18F

10/22 09:04, 3年前 , 19F
前好的工作站管理員工作包含經常ps看一下有沒有破解程式
10/22 09:04, 19F

10/22 09:05, 3年前 , 20F
在背景執行. 後來才有逐步改進,shadow password,sudo等等
10/22 09:05, 20F

10/22 09:06, 3年前 , 21F
真的如你所說這麼危險的環境,又牽涉重大利益,自然不應該
10/22 09:06, 21F

10/22 09:07, 3年前 , 22F
如同實驗室工作站一般管理
10/22 09:07, 22F

10/22 09:09, 3年前 , 23F
sudo su - <user> 是sudo和su組合出來的,sudo才是重點,你
10/22 09:09, 23F

10/22 09:10, 3年前 , 24F
讓一個人取得root權限,是實質需要還是管理不當? 還有取得
10/22 09:10, 24F

10/22 09:12, 3年前 , 25F
root權限又分成只允許他執行特定工作和執行shell,能執行
10/22 09:12, 25F

10/22 09:13, 3年前 , 26F
shell基本上就能做所有的事,sudo su (不管後面有沒有加參
10/22 09:13, 26F

10/22 09:13, 3年前 , 27F
數),就是執行root身分的shell,從第一代的internet worm,
10/22 09:13, 27F

10/22 09:14, 3年前 , 28F
所有*nix的hacker所做的努力就是在目的機器上取得root的
10/22 09:14, 28F

10/22 09:15, 3年前 , 29F
shell,所以問題應該是你為何要把一個root shell在未受監
10/22 09:15, 29F

10/22 09:15, 3年前 , 30F
管的情況下給一個你不信任的人?
10/22 09:15, 30F

10/22 09:20, 3年前 , 31F
我前一篇講的作法都是在講監管,有較好的監管,可不可信任
10/22 09:20, 31F

10/22 09:21, 3年前 , 32F
是比較次要的問題,因為沒辦證明可信任,所以才需要監管
10/22 09:21, 32F

10/22 09:22, 3年前 , 33F
監管也分成本等級,CIA等級(不可能任務1拉肚子那位)和一般
10/22 09:22, 33F

10/22 09:22, 3年前 , 34F
中小企業等級自然不同,依牽涉到的利益大小付出不同的監管
10/22 09:22, 34F

10/22 09:23, 3年前 , 35F
成本是非常合理的
10/22 09:23, 35F

10/22 09:27, 3年前 , 36F
更正一下,上面那個mode是644才對
10/22 09:27, 36F

10/22 10:32, 3年前 , 37F
信任root 的部份,大家都說過了,我就不再多說,如果
10/22 10:32, 37F

10/22 10:32, 3年前 , 38F
你要讓A可以create user , 但不能 su ,你可以在sudoer
10/22 10:32, 38F

10/22 10:33, 3年前 , 39F
中定義A 可以用sudo 來執行哪些指令,就可以避免A用
10/22 10:33, 39F

10/22 10:33, 3年前 , 40F
su 去轉換身份,如果這是你想的控管方式的話
10/22 10:33, 40F

10/22 12:18, 3年前 , 41F
你可以把使用者的家目錄加密,要登入時輸入密碼才會
10/22 12:18, 41F

10/22 12:18, 3年前 , 42F
解密,這樣大概就沒問題了。
10/22 12:18, 42F

10/22 12:19, 3年前 , 43F
你也可以把 root 帳號禁用,或把 root 執行 su 可以切
10/22 12:19, 43F

10/22 12:20, 3年前 , 44F
換其它使用者的功能關掉。
10/22 12:20, 44F

10/22 16:46, 3年前 , 45F
root就是這台電腦的神,有root權限的user A就把他當作
10/22 16:46, 45F

10/22 16:46, 3年前 , 46F
神仙下凡吧
10/22 16:46, 46F

10/22 19:25, 3年前 , 47F
sudo su 在電影駭客任務裡常常出現
10/22 19:25, 47F

10/23 01:43, 3年前 , 48F
重點其實是Linux還是有其他權限管控機制,例如讓某個使用
10/23 01:43, 48F

10/23 01:43, 3年前 , 49F
者可以創帳號等,不是只有變成root讓大家惡搞而已。所以好
10/23 01:43, 49F

10/23 01:43, 3年前 , 50F
的作法是不會讓大部分使用者可以拿到完整root權限,而是會
10/23 01:43, 50F

10/23 01:43, 3年前 , 51F
把部分的root權限下放給特定使用者
10/23 01:43, 51F

10/23 08:07, 3年前 , 52F
但是總歸還是會有一個最高的 adm
10/23 08:07, 52F

10/23 08:08, 3年前 , 53F
就算他不能變身成你的帳號, 他還是能修改所有的log
10/23 08:08, 53F

10/23 08:08, 3年前 , 54F
所以能不能 su 需不需要密碼只是個假議題
10/23 08:08, 54F
文章代碼(AID): #1Va5pElx (Linux)
討論串 (同標題文章)
文章代碼(AID): #1Va5pElx (Linux)