Man
為什麼人有自己的使用者?
我只是好奇為什麼
man
有自己的使用者。$ grep man /etc/passwd man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
我正在使用 Debian Buster。
man
(至少,在 中實現的版本man-db
)可以由它自己的使用者設置,以便它的“記憶體”(包括索引,例如由使用whatis
)可以由該使用者擁有和更新(而不是root
)。此外,
man
可以為該使用者設置 setuid,允許它寫入其記憶體目錄而無需使用者的特定權限:$ ls -ld /var/cache/man /usr/bin/man -rwsr-sr-x 1 man man 115600 Feb 19 2021 /usr/bin/man drwxr-xr-x 31 man man 4096 Nov 23 00:00 /var/cache/man
上面顯示
man
二進製文件是 setuid 和 setgidman
,並且man
擁有/var/cache/man
。在 Debian 衍生產品中,可以使用
sudo dpkg-reconfigure man-db
. 那裡給出的解釋是man 和 mandb 程序可以在設置 set-user-id 位的情況下安裝,以便它們以“man”使用者的權限執行。這允許普通使用者從預格式化的手冊頁(‘cat pages’)的記憶體中受益,這可能有助於較慢機器的性能。
記憶體手冊頁僅在您使用 80 列終端時才有效,以避免一個使用者導致 cat 頁面以不方便其他使用者的寬度保存。如果您使用寬終端,則可以通過設置 MANWIDTH=80 來強制將手冊頁格式化為 80 列。
啟用此功能可能存在安全風險,因此預設情況下將其禁用。如有疑問,您應該將其禁用。
“cat pages”現在已經沒有用了,所以在不支持它們的情況下配置系統不會導致任何問題。也可以支持 cat 頁面,不允許任意使用者創建它們,因此需要
man
使用者和 setuid 二進製文件;過去設置了各種 Unix 系統,以便它們定期生成所有失去的 cat 頁面(請參閱 參考資料catman
)。即使沒有 setuid
man
,man
使用者也可以用於man
相關的 cron 作業(whatis
索引等)。