我严重依赖我的别名.bashrc
,我突然想到,我可以通过递归更改我的主目录及其子目录和文件(600
文件和700
目录)的权限来提高我的隐私/安全性并在某种程度上强化我的 Ubuntu 20.04 桌面)。所以我跑了:
sudo chmod -R 600 /home/undoxed && sudo chmod -R u+X /home/undoxed
其中undoxed
是我的管理用户的名称。递归标志也未能幸免.bash_logout
,.bashrc
, 和.profile
。
从我之前在修补时注意到的情况来看/etc/adduser.conf
,设置在其中 DIR_MODE=0700
随着设置umask
为.bashrc
然后0077
添加新用户,useradd
结果将获得600
新用户主目录中任何文件的权限,但以下文件除外:.bash_logout
.bashrc
.profile
。上述三个文件都获得了644
权限,而不是600
像我预期的那样。
为什么这三个文件能够幸免呢?制作这些文件600
(就像我手动使用的那样chmod -R 600
)是否会使我的操作系统无法使用?与 相比,这些具有此类权限的文件是否会产生其他后果644
?
到目前为止,一切似乎都很好,但sudo chmod -R 600 /home/undoxed && sudo chmod -R u+X /home/undoxed
今天跑步后我还没有重新启动,我很想这样做。
答案1
TL,DR:.bash*
可以是 600,但是chmod -R 600
很危险。
您可以将您的主目录设置为只有您可以访问:
chmod 700 ~
这不需要递归。如果不访问文件所在的目录,就不可能访问该文件。对于目录,这意味着如果不访问其父目录,就不可能访问该目录。因此,使目录不可访问(无x
权限)会使该目录下的所有内容都不可访问。
(有一种方法可以绕过访问包含目录的需要,即已经具有访问权限:如果进程已经打开了一个文件,则该文件将保持打开状态,即使某些更改现在导致该进程无法打开这里的“打开文件”包括将目录作为进程的工作目录,例如,权限更改、移动到不同的目录或进程降低其权限。)
在某些情况下,您可能需要让其他用户或系统服务可以访问您的主目录的某些部分(例如,可以访问.plan
或fingerd
)。如今,当大多数人使用不运行任何公共服务的个人机器时,这种情况并不常见。在这种情况下:~/public_html
httpd
- 使您的主目录可供所有人访问,但只有您可读和可写:
chmod 711 ~
- 将主目录的内容设置为私有:(
chmod go= ~/* ~/.[!.]* ~/..?*
非隐藏文件、除.
和 之外的隐藏文件..*
以及以除自身..
以外的方式开头的隐藏文件..
- 如果这些模式之一与任何内容都不匹配,请忽略该错误) - 允许对需要它的特定文件和目录进行读取 (
r
) 访问以及对目录的执行/遍历 ( ) 访问。x
这些权限允许任何本地用户检查给定名称的文件是否存在(是否ls ~jerzy/somefile
因“权限被拒绝”或“没有此类文件或目录”而失败),但不列出主目录中的文件。
您使用的程序(例如 bash)的配置文件不需要公开。唯一需要访问它们的进程在您的帐户上运行。如果你愿意的话也可以chmod 600 ~/.bash*
。如果您的主目录无论如何都只能由您访问,则不会产生任何实际差异,但这不会有什么坏处。
如果您将 umask 设置为 077,则所有新文件将只有您可以访问。
别跑chmod -R 600
。作为 root,这会使您的系统很难恢复,而重新安装会更容易。作为非特权用户,恢复起来更容易,但仍然很痛苦。
chmod -R 600
删除目录的执行权限,对于目录,“执行”权限(x
chmod 中的数值位 1)意味着能够访问该目录中的文件。 “读取”(r
, 4)权限仅允许列出目录中的文件。因此chmod -R 600 ~
禁止每个人,甚至您,访问您的主目录中的文件。然后chmod -R u+X ~
恢复目录的执行权限,但前提是系统在此期间没有崩溃。
此外,该序列删除了所有常规文件的执行权限。一些常规文件需要执行权限。这显然包括您可能已安装在主目录中的任何独立软件以及个人脚本或其他程序。这还可以包括通常不被认为是直接可执行的文件;例如,旧版本的 Ubuntu 使用执行权限来指示某些类型的文件是可信的,包括.desktop
文件(尽管新版本不再使用此机制)。
该序列还使所有文件都可写。将某些文件设置为只读可能很有用,例如您希望避免意外覆盖或删除的重要文件。许多版本控制程序将某些文件设为只读,因为它们是通常不会更改的内部状态文件,或者指示用户不应直接更改它们,或者指示文件已锁定。然而,这并不重要。
(顺便说一句,有几个文件必须是私有的,例如 SSH 密钥。主目录中的递归 chmod添加非用户权限会破坏这一点,特别是可能导致无法通过 SSH 登录您的帐户。)
如果您想将所有文件单独设置为私有,请不要更改适用于您的权限。
chmod -R go= ~