Debian

是否可以將目錄權限更改為以前的狀態?

  • August 3, 2015

我不小心通過以下命令更改了“/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 二進製文件:setuidsetgidboth。原則上,所有這些包都應該帶有一個/usr/share/lintian/overrides聲明 setxid 二進製文件的文件(這些頁面上的標籤“覆蓋”表示存在這樣的聲明),但有些包不符合要求(包括無處不在的包,例如atand xserver-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),它看起來不那麼瑣碎……

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