好的,我以为我了解了 Linux 权限,然后我遇到了这个。
我在 Windows 7 pro 笔记本电脑上的虚拟机中运行 Ubuntu 14.04 LTS。所有更新都适用于 Windows、虚拟机和 Ubuntu。
我已经使用 virtualmin 4.12 gpl 安装脚本来设置虚拟主机 - 再次,所有更新都已应用。
我想编辑 /home/staging/fcgi-bin 中的 php5.fcgi 文件以延长控制 php5 脚本执行的超时值。使用 ls -l 时,目录 /home/staging/fcgi-bin 归 staging:staging 所有,权限为 drwxr-xr-x,文件 php5.fcgi 归 staging:staging 所有,权限为 -rwxr-xr-x。通过文件 GUI 查看它们时,它们都显示为“Me”所有,并分组在 staging 中,权限与 ls -l 显示的相同。通过文件,目录没有显示任何锁,但 php5.fcgi 有一个覆盖文件图标的小锁图标。
好的,我可以打开、读取和找到该文件,我相信我可以执行它,因为这就是我的 php 脚本的运行方式。但是,即使我使用 sudo 运行它们,也无法通过 gedit 或 nano 保存任何更改。gedit 始终显示保存图标为灰色/不可用。nano 读取文件并允许我修改它,但当我尝试保存它时,我收到权限被拒绝的错误。
我尝试重命名并更改所有权和权限,但 mv、sudo mv、chown、chmod、sudo chown 和 sudo chmod 均因操作不允许而失败。
当我查看文件是否用 lsof | grep "php" 打开时,没有列出任何内容,我认为这意味着文件未打开。
所以我感到很困惑,真的需要一些帮助。我不明白如果文件未打开,它是如何被锁定的,我不明白为什么如果我是文件的所有者并拥有 rwx 权限,我就无法以任何方式修改文件。
答案1
如果 Linux 权限还不够复杂,我刚刚学习了扩展属性。原来有一种叫做不可变属性的东西。使用lsattr php5.fcgi
显示已设置 i(mmutable) 属性。使用chattr -i php5.fcgi
允许我保存修改,然后chattr +i php5.fcgi
恢复不可变属性。
谁知道!