Files

仍然可以貓/尾巴/頭/等。沒有讀取權限的文件

  • April 19, 2019

所以作為root,當我嘗試在沒有讀取權限的情況下對文件進行cat時,我仍然可以看到其中的內容,這似乎有點奇怪,因為作為root我不能在沒有w權限的情況下寫入文件(它以只讀方式打開) 並且我無法在沒有 x 權限的情況下執行文件。

難道我做錯了什麼?

[root@aaaaaa enc]# ll logsuper
--w-------. 1 root root 3268 Apr 19 13:26 logsuper
[root@aaaaaa enc]# head logsuper
Done at Fri Apr 19 12:22:02 UTC 2019

沒有 x 權限也無法以 root 身份執行文件:

[root@aaaaaa enc]# ll test1
----------. 1 root root 25 Apr 19 13:40 test1
[root@aaaaaa enc]# cat test1
#!/bin/bash

echo "${1}"
[root@aaaaaa enc]# ./test1 asdfasdasgasga
bash: ./test1: Permission denied

可以做任何事情,root並且繞過了權限測試。

另請閱讀有關setuid的資訊。

由於程序 - 甚至head是 shell,即使在執行時(根據定義其 uid 為 0) - 使用系統呼叫(在syscalls(2)root中列出)

另請參見path_resolution(7)capabilities(7)credentials(7)。他們一起解釋了何時open(2) - 由正在執行 的程序/usr/bin/head完成- 將失敗。順便說一句,read(2)不檢查權限。

請注意,某些執行檔的執行是由execve(2)完成的,它記錄了它何時可能失敗。您的 shell 正在執行許多fork(2)execve 呼叫。

一本好的 Unix 程式書,比如舊的ALP,有好幾章來解釋所有這些。您的shell只是另一個程序(另請閱讀Unix 哲學),您可以用 C 編寫一個 shell(或研究現有自由軟體 shell 程序的原始碼,例如GNU bash的原始碼)。

引用自:https://unix.stackexchange.com/questions/513401