是否可以将目录权限更改为之前的状态?

是否可以将目录权限更改为之前的状态?

我不小心通过命令更改了“/usr/bin”目录及其文件的权限:

$chmod 775 /usr/bin -R

首先,sudo 有问题,但我修复了它。现在我怀疑某些程序可能因为更改了权限而无法运行。

我想知道是否可以撤销之前的许可?

我正在使用 Debian/测试。

答案1

幸运的是,这些权限并不是完全破坏性的,但没有“撤消”。

如果您无法从备份恢复并且尚未从源代码安装任何内容,/usr/bin则可以使用包管理器来恢复正确的权限:

对于基于 RPM 的发行版(Red Hat Enterprise Linux、Fedora、CentOS 等),这样做相当简单:

rpm -a --setperms

对于基于 dpkg 的发行版(例如 Debian 和 Ubuntu),它会出现稍微不那么琐碎...

答案2

中的大多数程序/usr/bin应具有权限 755 — 所有人都可读和可执行,只有其所有者(即 root)可写。几个程序是setuid 或 setgid:他们有额外的权限,这些权限是由权限中的 setuid 或 setgid 位授予的。/usr/bin/sudo是其中之一;它需要 setuid root:chmod 4755 /usr/bin/sudo恢复它。

如果您只有 Debian 的官方软件包(而不是从 Debian 或其他来源派生的发行版中的软件包),那么您可以通过查看哪些软件包包含 setuid/setgid 二进制文件林田报告:设置用户标识,设置gid,两个都。原则上,所有这些包都应该附带一个/usr/share/lintian/overrides声明 setxid 二进制文件的文件(这些页面上的标签“overridden”表明存在这样的声明),但有些包不符合要求(包括无处不在的包,例如atxserver-xorg) 。

以下脚本打印出一个 shell 脚本,该脚本执行chmod命令以将文件恢复/usr/bin为其默认权限(如果文件的默认权限包括 setuid 或 setgid 位)。

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-stat 覆盖。您可以列出它们

dpkg-statoverride --list '/usr/bin/*'

您可以使用以下命令重新应用这些权限

dpkg-statoverride --list '/usr/bin/*' |
awk 'system("chmod " $3 " " $4)'

如果您的软件包不是来自 Debian,确保获得正确权限的唯一方法是使用.apt-get --reinstall install PACKAGE-NAME

相关内容