/bin
根目录下的文件(或保留可执行文件的任何其他标准目录)中的文件是否可以由root写入并不重要。在我正在使用的Linux服务器上,它们可以由root写入,而在我的OpenBSD机器上则不能。
只要它们不能由组或“其他”写!
没有安全问题,例如
-rwxr-xr-x 1 root root 126584 Feb 18 2016 /bin/ls
如果有人想覆盖它,他们必须是根,如果他们是root
和覆盖它,那么他们要么
- 安装新版本,或
- 笨拙的,或
- 具有root权限的攻击者。
要考虑的另一件事是,无论根是否受到写保护,root都可以将其写入文件,因为... root。
还要注意,“脚本”与二进制文件一样,都是可执行文件。脚本不需要是可写的,因为它是文本文件。如果有的话,它可能应该与同一目录中的其他可执行文件具有相同的权限。
现在不要去更改所有内容的权限!这可能造成各种破坏,并可能使可能会验证权限设置正确的程序包管理器感到困惑。如果您不小心更改了安全性至关重要的应用程序上的权限,也可能使系统容易受到攻击。
只要假设可执行文件的权限设置正确即可,除非您发现看起来确实很奇怪的东西,在这种情况下,您应该联系相关的软件包维护者进行验证,而不是开始进行更改。
从评论和聊天中,有一段历史的呼唤。
我对Linux上的二进制文件的权限的历史一无所知。可以推测,他们只是从目录或仅从umask
Linux 的默认继承了权限,但我真的不知道。
我所知道的是,OpenBSD 默认在许可模式555下将二进制文件安装在基本系统1中(-r-xr-xr-x
)。这是在Makefile片段中指定的,该片段/usr/share/mk/bsd.own.mk
设置BINMODE
为555(除非已设置)。稍后在make build
in中安装可执行文件时使用/usr/src
。
我查看了该文件的带注释的CVS日志,发现该文件中的这一行自1995年从NetBSD导入以来未更改。
在NetBSD上,该文件于1993年首次放入CVS,BINMODE
设置为555。
FreeBSD项目似乎至少从1994年开始就使用了与NetBSD完全相同的文件,并且在以后的提交中,在提交消息中添加了一个提示,即旧文件来自Berkeley Software Distribution的4.4BSD版本。
除此之外,伯克利的CSRG将源代码保存在SCCS中,但是它们的存储库在GitHub 2 上以Git形式提供。我们要在这里给forencic treatement文件似乎一直致力于通过基思·博斯蒂克(或有人接近他)于1990年。
那就是那个故事。如果您想要为什么,那么我想我们不得不问基思。我有点希望看到一条提交更改的提交消息,说“ 这必须是555,因为... ”,但是没有。
1 BSD系统比Linux更严格地划分为“基本系统”和“第三方软件包”(端口/软件包)。基本系统是一个连贯的单元,为运行操作系统提供了一套完整的功能,而端口或程序包则被视为“本地软件”,并安装在下/usr/local
。
2 从70年代开始,也可以获得更全面的Unix版本的GitHub存储库。
root
对二进制文件具有写权限?如果没有其他帮助,则在升级该软件包时会有所帮助。