我刚刚添加了一个新的、权限较低的“桌面用户”,我惊讶地发现它可以看到我的主文件夹中的文件。
设置如此宽松的权限的理由是什么?
答案1
Public
您的主目录 ( ) 中有一个文件夹/home/user
,用于与其他用户共享文件。如果其他用户想要访问此Public
文件夹,世界的执行位应设置在主目录中。
如果您不需要允许其他人访问您的主文件夹(其他人或用户,例如www-data
网络服务器),那么您可以这样做chmod o-rwx "$HOME"
(从“其他”中删除读/写/执行,相当于chmod 750 "$HOME"
因为默认权限是 750)。否则,您应该更改umask
环境以防止新创建的文件默认获得全世界的读取权限。
对于系统范围的配置,请编辑/etc/profile
;可以在中配置每个用户的设置~/.profile
。我更喜欢对所有用户采用相同的策略,因此我将编辑文件/etc/profile
并附加以下行:
umask 027
您需要重新登录才能应用这些更改,除非您在 shell 中。在这种情况下,您可以umask 027
在 shell 中运行。
现在要修复现有的权限,您需要从其他权限中删除读/写/执行权限:
chmod -R o-rwx ~
现在,如果您决定与所有人共享该~/Public
文件夹,请运行以下命令:
chmod o+x ~
- 允许所有人进入目录(x
),但不获取目录列表(r
不应添加)find ~/Public -type f -exec chmod o+r {} \;
- 允许所有人阅读~/Public
find ~/Public -type d -exec chmod o+rx {} \;
- 允许每个人进入目录并列出其内容
如果你使用 GNU coreutils(例如在 Ubuntu 上,而不是在只有 的嵌入式系统上busybox
),那么前面两个使用find
和的命令chmod
可以用这个单一命令替换,该命令以递归方式使文件夹和文件可读(并且另外为目录添加执行(降序)位仅有的):
chmod -R o+rX ~/Public
答案2
Ubuntu 21.04 及更高版本具有安全默认设置,请参阅这篇博客文章(存档链接stackprotector
)在评论部分链接:
对于新安装的 Ubuntu 21.04,或者在升级到 Ubuntu 21.04 的机器上创建的用户,主目录默认是私有的。
但是,文章暗示,即使应用安全更新或升级到 Ubuntu 21.04 或更高版本,在 Ubuntu < 21.04 上创建的用户也不会自动修复。可以使用取自文章的以下命令手动更正这些用户。
修复所有现有用户:
sudo chmod 750 /home/*
要修复将来创建的用户的默认设置:
sudo sed -i s/DIR_MODE=0755/DIR_MODE=0750/ /etc/adduser.conf
echo "HOME_MODE 0750" | sudo tee -a /etc/login.defs
对于 Ubuntu <21.04:
马克·沙特尔沃思Canonical 创始人兼首席执行官
“Ubuntu 系统的大部分用户要么独享机器(个人笔记本电脑),要么与亲朋好友共享。我们假设共享机器的人要么值得信任,要么能够轻松破解机器(从 USB 启动!)。因此,共享机器几乎没有任何好处”
...删除这些权限。
答案3
根据Ubuntuforms.org 工作人员,是为了让新用户之间更轻松地共享文件。
如果您不希望其他人读取和执行该文件,您可以将权限更改为 700 或 750。
命令是:
chmod 750 $HOME
注意:Ubuntu 默认为 755
答案4
我认为莱肯施泰因可以通过将最后两个 find 命令替换为 chmod 并使用 -X 选项(注意大写 X)来改进答案。这两个 find 命令可以替换为
chmod -R o+rX ~/Public
这可以适当地区分文件和目录,但还具有允许其他人运行可执行文件的附加效果。