登录后,我可以执行以下操作:
mkdir foo
touch foo/bar
chmod 400 foo/bar
chmod 500 foo
Run Code Online (Sandbox Code Playgroud)
然后我可以打开 vim (不是 as root
),编辑bar
,用 强制写入w!
,然后修改文件。
如何让操作系统禁止任何文件修改?
2017 年 3 月 2 日更新
chmod 500 foo
是一个红鲱鱼:目录的写权限与修改文件内容的能力无关——只有创建和删除文件的能力。
chmod 400 foo/bar
实际上确实可以防止文件的内容被更改。但是,它并不能阻止更改文件的权限——文件的所有者始终可以更改其文件的权限(假设他们可以访问该文件,即对所有祖先目录具有执行权限)。事实上,strace(1) 揭示了这就是 vim (7.4.576 Debian Jessie) 正在做的事情——vim 调用 chmod(2) 来临时添加文件所有者的写权限,修改文件,然后调用 chmod( 2)再次删除写权限。这就是为什么使用chattr +i
作品——只有 root 可以调用chattr -i
. 理论上,如果以 root 身份运行,vim(或任何程序)可以对 chattr 执行与对不可变文件中的 chmod 执行相同的操作。
所以有一个桌面,不需要 root 权限(或者如果需要,然后重新启动到单模式/whateverlivecd 修复配置文件-> 获取 root,用它做这些事情,最后,再次禁用 root )。这台机器上没有服务(例如:)sshd
,因为它是台式机。
我的问题:如果我在系统上禁用 root 用户,是否会带来更多安全性?(如果是,如何为它做呢?禁用密码?修改root用户的默认外壳,/sbin/nologin
在/etc/passwd
和/etc/master.passwd
文件没有帮助,因为重启后壳将成为ksh
它。尽管如此,例:passwd文件仍然包含/sbin/nologin
)