ænd*_*rük 46 permissions default users privacy
我刚刚添加了一个新的、没有特权的“桌面用户”,我惊讶地发现它可以看到我的主文件夹中的文件。
设置如此宽松的权限的理由是什么?
Lek*_*eyn 38
Public
您的主目录 ( /home/user
) 中存在一个文件夹,用于与其他用户共享文件。如果其他用户想要访问此Public
文件夹,则应在主目录上设置世界的执行位。
如果您不需要允许其他人访问您的主文件夹(其他人或用户,例如www-data
网络服务器),则可以使用chmod o-rwx "$HOME"
(从“其他”中删除读/写/执行,相当于chmod 750 "$HOME"
因为默认权限为 750 )。否则,您也应该更改umask
设置以防止默认情况下新创建的文件获得对世界的读取权限。
对于系统范围的配置,编辑/etc/profile
; 每个用户的设置可以在~/.profile
. 我更喜欢对所有用户使用相同的策略,因此我会编辑/etc/profile
文件并附加以下行:
umask 027
Run Code Online (Sandbox Code Playgroud)
您需要重新登录才能应用这些更改,除非您在 shell 中。在这种情况下,您可以umask 027
在 shell 中运行。
现在要修复现有权限,您需要从其他权限中删除读/写/执行权限:
chmod -R o-rwx ~
Run Code Online (Sandbox Code Playgroud)
现在,如果您决定将~/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
Run Code Online (Sandbox Code Playgroud)
Jas*_*son 13
据Ubuntuforms.org 工作人员称,这是为了让新用户之间更容易共享文件。
如果您不希望文件被其他人读取和执行,您可以将权限更改为 700 或 750。
命令是:
chmod 750 $HOME
Run Code Online (Sandbox Code Playgroud)
注意:Ubuntu 默认为 755
Ubuntu 21.04 及更高版本有一个安全的默认值,请参阅此博客文章(存档链接)stackprotector
在评论部分链接:
对于 Ubuntu 21.04 的新安装,或在已升级到 Ubuntu 21.04 的机器上创建的用户,默认情况下主目录将是私有的。
但是,文章暗示在 Ubuntu < 21.04 上创建的用户不会自动修复,即使在应用安全更新或升级到 Ubuntu 21.04 或更高版本之后也是如此。可以使用本文中的以下命令手动更正这些用户。
要修复所有现有用户:
sudo chmod 750 /home/*
Run Code Online (Sandbox Code Playgroud)
要修复将在将来创建的用户的默认值:
sudo sed -i s/DIR_MODE=0755/DIR_MODE=0750/ /etc/adduser.conf
echo "HOME_MODE 0750" | sudo tee -a /etc/login.defs
Run Code Online (Sandbox Code Playgroud)
对于 Ubuntu < 21.04:
Canonical 的创始人兼首席执行官Mark Shuttleworth 表示,
“Ubuntu 系统的大多数用户要么独占使用这台机器(个人笔记本电脑),要么与亲友共享。我们假设共享这台机器的人要么是可信的,要么有能力破解该机器(启动来自 USB!)微不足道。因此,几乎没有好处”
...从删除这些权限。