Answers:
首先,使用次要术语nitpick:chmod
不会删除权限。它CHANGES他们。
现在问题的关键了-该模式的777
意思是“任何人都可以读取,写入或执行该文件”-您已授予任何人(有效地)执行其想要的任何操作的权限。
现在,为什么这样不好?
login
程序,让它们每次都运行)。rm -r /
,一切都结束了。操作系统被告知让他们做他们想做的事!sudo
,sendmail
和,其他许多都将不再启动。他们将检查关键文件的权限,查看它们是否不应该是应有的权限,然后回显错误消息。ssh
会令人震惊地崩溃(密钥文件必须具有特定的权限,否则它们是“不安全的”,并且默认情况下SSH将拒绝使用它们。)777
实际上是。前导数字中的和是位。
setuid / setgid的大多数程序都设置了该位,因为它们必须以某些特权运行。他们现在坏了。0
777
setuid
setgid
/tmp
,/var/tmp
而导致零的前八进制数字中的另一件事是sticky bit
-保护/tmp
(和/var/tmp
)中的文件不被不拥有它们的人删除的功能。rm -r /tmp/*
,而没有设置任何粘滞位,/tmp
您就可以告别目录中的所有文件。/dev
/proc
以及类似的文件系统,/dev
是一个真实的文件系统,并且其中包含的内容是使用创建的特殊文件mknod
,因为权限更改将在重新启动后保留,但在任何系统上更改设备权限可能会导致严重的问题,从明显的安全风险(每个人都可以读取每个TTY)到不太明显的潜在的内核恐慌原因。Credit to @Tonny for pointing out this possibility
Credit to @Tonny for pointing out this possibility
.
的PATH
环境变量中都有(您不应该这样做!)-这可能会引起令人不快的意外,因为现在任何人都可以像命令一样方便地删除一个文件(例如make
或ls
,以及尝试让您运行他们的恶意代码。Credit to @RichHomolka for pointing out this possibility
chmod
将重置访问控制列表(ACL),Credit to @JamesYoungman for pointing out this possibility
系统中已经在运行的部分会继续运行吗?大概,至少一会儿。
但是,下一次您需要启动程序或重新启动服务时,或者天堂禁止重新启动您的设备时,您可能会遭受重创,因为上面的#2和#3会抬起头来。
/tmp
上,重启后会被修复。尽管所有其他事情似乎都坏了。至少在我刚刚测试过的VM中,它似乎重新启动了固定的/tmp
权限。启动脚本中的某处必须有某些内容。
tmpfs
通常会自行修复,在磁盘上具有/ tmp的系统可能会(取决于其启动脚本)
find / -perms -4000 -type f
并find / -perms -2000 -type f
查看依赖于这些标志的各种二进制文件。
everyone
被定义为一组,包括谁拥有的文件,用户拥有该文件的组中,和用户谁不符合任何这些标准的用户工会(字面意思是三个八进制数字权限:User
,Group
,和Other
)。换句话说,任何有权访问系统的用户。(在这种情况下,“访问”可以是一个shell帐户,这是我通常要解决的问题,但是它还包括通过将数据写入磁盘的Web表单/ CGI进行的访问:www
用户现在可以写入系统上的任何文件,这也意味着随机访问者也可以。)