在我的 debian 中,所有文件,甚至系统文件都具有权限 rw-r--r--,所以这意味着所有用户都可以查看任何文件,甚至某些系统配置或数据库文件等等。
如何防止用户读取所有系统文件? 有没有办法设置全局权限,让用户无法读取所有文件?
答案1
我认为拒绝所有用户访问所有系统文件不是一个好主意。有些文件对于系统运行必不可少。但有几种方法可以限制特定用户。例如,如果您想拒绝用户joe
访问 中的任何内容/etc
,您可以使用ACLs
(使用 setfacl/getfacl 命令进行操作),如下所示:
setfacl -Rm u:joe:--- /etc
其他想法是使用 selinux 策略,或将用户保持在 chroot 中。我认为在系统目录上这样做是个坏主意,因为它会拒绝某些系统服务使用的各种系统用户(如、或)chmod 700
的访问。nobody
ftp
mail
答案2
在我的 debian 中,所有文件,甚至系统文件都具有权限 rw-r--r--,所以这意味着所有用户都可以查看任何文件,甚至某些系统配置或数据库文件等等。
除非你修改了权限,否则它们绝对没问题,因为它们是开箱即用的。请不要更改它们,尤其是在那个范围内。
系统(配置)文件旨在供所有人阅读。在某些情况下,它们必须是可读的(/etc/bash.bashrc
或/etc/default
),而在其他情况下,它们已受到保护(/etc/shadow
)。
Debian 中的数据库文件/var/lib
也受到保护。
drwx------ 10 mysql mysql 4.0K Feb 26 12:49 /var/lib/mysql
您可以假设 Debian 存储库中的大多数软件的权限都是安全的。当然也有例外。Web 托管就是其中之一,您通常必须对文档根目录和 PHP-FPM 套接字文件进行更大的权限调整。
如果您不完全清楚更改“默认”文件夹的权限会产生什么影响,您应该决定不这样做。
/home
至少在我看来,默认权限确实过于宽松的唯一地方是在目录内。
答案3
Linux 权限的一个有趣方面是,默认权限通常为 777 (-rwxrwxrwx),然后使用 umask 自动删除权限,这样当创建新目录或文件时,新创建的目录或文件就不是 777,而是 644 (-rw-r--r--) 或 666 (-rw-rw-rw-)。如果您希望删除所有文件/目录的默认读取权限,可以调整 umask。但是,更改 umask 可能不是解决您面临的任务的办法。
我认为解决方案是使用 chmod 和 chown 或 setfacl 和 getfacl 来控制访问。例如,假设只有 root 才能访问 /var/private。您可以使用以下命令,以便只有 root 可以读取、写入和访问目录中的目录和文件。
将 root 设置为 /var/private 的所有者和组所有者:
chown -R root:root /var/private
您还可以设置目录的权限,以便只有 root 可以访问该目录 (-rwx------):
chmod 0700 /var/private
然后,您可以递归设置目录中所有文件的权限,以便只有 root 可以读取、写入和执行目录中的文件 (-rwx-----):
chmod 0700 -R /var/private/*
注意:我不知道您如何使用数据库。如果您的数据库文件可以通过 Web 浏览器访问(例如通过 PHP 或 ASP.Net),则此权限更改可能会阻止 PHP 或 ASP.Net 与数据库记录交互。