/usr/bin/apt-get 的默认所有权和权限

XPD*_*DIN 3 filesystem permissions chmod chown

这是一台只有一个用户的家用电脑。

这些命令已被使用:

chown root:root /usr/bin/apt-get    
chmod 4775 /usr/bin/apt-get
Run Code Online (Sandbox Code Playgroud)

如何反转命令并恢复默认值?

Zan*_*nna 5

删除危险的 setuid 位

sudo chmod 755 /usr/bin/apt-get
Run Code Online (Sandbox Code Playgroud)

其他没有错。


要添加更多细节,这里是默认值:

$ stat -c '%a %A %U %G' /usr/bin/apt-get
755 -rwxr-xr-x root root
Run Code Online (Sandbox Code Playgroud)

问题中提到的命令添加了 setuid 位,显示为4八进制权限的前导和人类可读形式的s代替x所有者:

4755 -rwsr-xr-x
Run Code Online (Sandbox Code Playgroud)

setuid 位允许用户使用其所有者的 EUID 执行程序。在这种情况下,这意味着运行的普通用户apt-get默认以 root 身份运行。由于apt-get能够完全破坏您的系统,正如 David Foerster 和 cat 在评论中指出的那样,给它这个权限设置(特别是因为设置了其他人的执行位,在这种情况下,实际上允许任何用户运行程序)是非常不安全的。

setuid 位始终保持在最小值,它是sudo程序中必需的

$ stat -c '%a %A %U %G' /usr/bin/sudo
4755 -rwsr-xr-x root root
Run Code Online (Sandbox Code Playgroud)

为了使这更安全,有一个关于谁可以使用的严格策略sudo,在/etc/sudoers. 如果该文件已损坏或不存在,或者 的权限sudo错误,则sudo退出并出现错误。

  • `apt-get autoremove --force-yes ubuntu-minimal` 适用于普通用户。好极了! (2认同)
  • 有人可能会补充说,在 `apt` 上的 setuid 位比例如 `grep`、`ls` 等更危险,因为包可以包含安装触发器、在 `dpkg` 子进程期间在不同点运行的任意外部脚本。适合` (2认同)