是否可以將目錄權限更改為以前的狀態?
我不小心通過以下命令更改了“/usr/bin”目錄及其文件的權限:
$chmod 775 /usr/bin -R
首先,sudo 有問題,但我修復了它。現在我懷疑某些程序可能由於更改權限而無法執行。
我想知道是否可以退回以前的許可?
我正在使用 Debian/測試。
中的大多數程序
/usr/bin
應該具有 755 權限——所有人都可讀和可執行,只能由其所有者(即 root)寫。一些程序是setuid 或 setgid:它們具有額外的權限,這些權限由權限中的 setuid 或 setgid 位授予。/usr/bin/sudo
是其中之一; 它需要是 setuid root:chmod 4755 /usr/bin/sudo
恢復它。如果您只有來自 Debian 的官方軟體包(與來自 Debian 或其他來源的發行版中的軟體包相反),那麼您可以通過Lintian報告找出哪些包含 setuid/setgid 二進製文件:setuid、setgid、both。原則上,所有這些包都應該帶有一個
/usr/share/lintian/overrides
聲明 setxid 二進製文件的文件(這些頁面上的標籤“覆蓋”表示存在這樣的聲明),但有些包不符合要求(包括無處不在的包,例如at
andxserver-xorg
) .如果文件的預設權限包括 setuid 或 setgid 位,則以下腳本會列印出一個 shell 腳本,該腳本執行
chmod
將文件恢復/usr/bin
為其預設權限的命令。wget -q -O - https://lintian.debian.org/tags/set{uid,gid,uid-gid}-binary.html | sed -n 's~^.*> *\(usr/bin/[^ ]*\) \([0-7][0-7][0-7][0-7]\).*~[ -e /\1 ] \&\& chmod \2 /\1~p'
此外,還可以在本地配置一些權限。這些權限在`dpkg-statoverride中註冊。您可以列出它們
dpkg-statoverride --list '/usr/bin/*'
你可以重新應用這些權限
dpkg-statoverride --list '/usr/bin/*' | awk 'system("chmod " $3 " " $4)'
如果您有不是來自 Debian 的軟體包,確保獲得正確權限的唯一方法是使用.
apt-get --reinstall install *PACKAGE-NAME*
幸運的是,這些權限不是完全破壞性的,但沒有“撤消”。
如果您無法從備份中恢復並且您沒有從原始碼安裝任何東西,
/usr/bin
您可以使用包管理器來恢復正確的權限:對於基於 RPM 的發行版(Red Hat Enterprise Linux、Fedora、CentOS 等),這樣做相當容易:
rpm -a --setperms
對於基於 dpkg 的發行版(例如 Debian 和 Ubuntu),它看起來不那麼瑣碎……