误用 go-r *

TJ-*_*TJ- -2 permissions chmod

我正在测试服务器上工作。以 root 身份登录并发出

cd /
chmod go-r *
Run Code Online (Sandbox Code Playgroud)

我当然撤销了我创建的用户的写权限。

我是否撤消了为 mysql、httpd、ftp 等进程创建的所有组的权限 (r/w/x) - 或者他们是否拥有它?

我如何检查?

[更新] 我已经重新启动了 mysql 和 apache。mysqld 没有以 root 身份运行。正在写入日志。检查还有什么是个好主意?

der*_*ert 7

首先,chmod go-r不删除写入权限,它删除读取权限。的内容/主要是目录;目录读取权限意味着您可以列出它。例如,ls /bin现在会给出一个权限被拒绝(除了目录所有者和 root,当然在这种情况下所有者是 root)。

如果这是一个错字并且您的意思是chmod go-w,那么您确实删除了写入权限。可能其中有写权限的唯一目录roup或Ø疗法是/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
Run Code Online (Sandbox Code Playgroud)

t文件类型:对于普通文件、d目录、l符号链接、c字符设备、p命名管道、b块设备,可能还有一些我忘记了。

acl+如果没有这个文件的访问控制列表,你可以用getfacl看看吧。

1我没有标签的链接数; 如果您对文件进行了硬链接,则两个名称都会显示 2。添加另一个名称,它们会显示 3,依此类推。

权限字段为所有者(用户)的三个字符;三人为团体;其他三个。所有者(用户)可以[R EAD和w ^仪式的文件,但不执行(因为有一个-,而不是x那里)。该Debian-exim组的成员可以读取该文件,但没有其他权限。既不是 Debian-exim 的所有者也不是成员的人没有这个文件的权限。