我有一个目录和一个文件,该目录标记为只读:
$ mkdir directoryname
$ touch directoryname/filename
$ chmod a-w directoryname
我无法删除该文件,即使将-f
标志传递给rm
:
$ rm -f directoryname/filename
rm: cannot remove `directoryname/filename': Permission denied
有没有办法强制rm
删除这个文件?显然,我可以暂时授予directoryname
写入权限,但我正在寻找一种更方便的方法。
我相信底层unlink
系统调用也会以同样的方式失败。有办法解决这个问题吗?
答案1
关于什么:
sudo rm directory/filename
或者:
su -c "rm directory/filename"
取决于您的发行版和/或设置。
root
在执行上述命令期间,您给自己一个临时的时间,就像root
Unix/Linux 上的全能一样,您可以做任何事情。这与 MS Windows 形成鲜明对比,在 MS Windows 中,您可以删除对管理员帐户的访问权限(尽管有一些方法可以解决此问题)。
SELinux
可以像各种扩展属性工具(例如chattr
)一样提供帮助,但最终,它们可以被绕过,因为root
可以更改扩展属性并可以配置(甚至禁用)SELinux
。