我正在测试服务器上工作。以 root 身份登录并发出
cd /
chmod go-r *
我当然撤销了我创建的用户的写权限。
我是否撤销了为 mysql、httpd、ftp 等进程创建的所有组的权限(r/w/x),或者它们是否 chown 了它?
我该如何检查?
[更新]我已经重新启动了mysql和apache。 mysqld 没有以 root 身份运行。正在写入日志。检查还有什么是个好主意?
答案1
首先,chmod go-r
不会删除写入权限,而是删除读取权限。的内容/
主要是目录;对目录的读取权限意味着您可以列出它。例如,ls /bin
现在将给予拒绝权限(目录所有者和root除外,当然在这种情况下所有者是root)。
如果这是一个拼写错误,而您的意思是chmod go-w
,那么您确实删除了写权限。可能是唯一具有写权限的目录G组或哦有/tmp
;你需要解决这个问题。
值得庆幸的是,您没有-R
在 中包含(递归)chmod
,因此这很容易修复:只需ls -l /
在测试服务器上与ls -l /
类似服务器上进行比较即可。用于chmod
将权限设置回应有的状态。
请注意,chmod 将遵循符号链接,因此如果根目录中有符号链接,则需要单独确认它们。
最后,您似乎并不了解 Unix 权限模型。每个文件和目录都有一用户(所有者)和一团体。所有者可以对文件/目录具有读、写和/或执行权限。这就是chmod u=...
设定。该组的所有成员都可以拥有相同的权限集 ( chmod g=...
)。最后,其他人(其他人)得到相同的集合(chmod o=...
)。
例子:
$ ls -l /etc/exim4/passwd.client
-rw-r----- 1 root Debian-exim 204 Oct 15 2006 /etc/exim4/passwd.client
|^^^^^^^^^| |||| ^^^^^^^^^^^
| perms | |||| group
t | owner
acl
t
文件类型:空白表示纯文件、d
目录、l
符号链接、c
字符设备、p
命名管道、b
块设备,可能还有一些我忘记了。
acl
如果+
此文件上有 ACL,您可以使用getfacl
它来查看它。
我1
没有标注的是链接数;如果您对文件建立了硬链接,两个名称都会显示 2。添加另一个名称,它们会显示 3,依此类推。
权限字段为三个字符,代表所有者(用户);三个为团体;三个为其他。所有者(用户)可以r埃德和w写入文件,但不执行(因为那里有 a-
而不是 a x
)。该组的成员Debian-exim
可以读取该文件,但没有其他权限。既不是 Debian-exim 的所有者也不是成员的人没有此文件的权限。
答案2
chmod go-r *
根本不影响特殊群体。它只会影响主要群体和“其他人”的权利。中所有内容的主要组/
应该是root
.所以这根本不会改变任何事情,因为 root 无论如何都可以做任何他想做的事。
其他帐户通常不会读取目录的内容,因为/
它们知道其路径。仍然可以访问这些路径(由于x
权限)。
您创建的组是否仍具有这些目录中的显式读取权限取决于是否使用 ACL。如果存在 ACL,则ls -l
输出将从
drwxr-xr-x
到
drwxr-xr-x+
ACL 内容可以通过 来查看getfacl
。
主要问题是:为什么要阻止组读取 中的目录/
?