我有一个使用 cifs 安装到 ubuntu 12.04 的用户目录。/etc/fstab 包含一行;
//cb/share /home/cb cifs user=ubuntu,password=abc123,uid=cb,gid=users 0 0
除 chown/chmod 命令失败外,共享安装并运行正常;
$ sudo touch /home/cb/foo
$ sudo chown cb /home/cb/foo
chown: changing ownership of `/home/cb/foo': Permission denied
忘记 cifs 已将 uid 和 gid 压缩为正确值 (cb:users)。我需要使用一些预先存在的脚本和实用程序,但由于 chown/chmod 返回非零退出状态,它们会失败。
我天真地尝试在其他地方(/mnt/cb)安装它,然后使用 bindfs 重新安装它,但这也不起作用。
sudo bindfs -o perms=0750,mirror=cb,group=users /mnt/cb /home/cb
请注意,我在这里寻找的唯一解决方案是某种配置服务器/挂载的方法,以便 chmod/chown 悄悄失败 - 即返回零退出状态。
答案1
嗯,最简单的答案是先用其他不会失败的程序来取代真正的chmod
和。这些可以是脚本。在(或任何其他您有完全访问权限的方便目录中),创建名为和的脚本,这些脚本只说chown
/home/cab/bin
chmod
chown
#!/bin/sh
您可以exit 0
根据需要添加,但0
如果脚本不执行任何操作,则这将是默认的退出状态。然后,当然,将其添加到环境变量/home/cab/bin
的开头。PATH
如果你希望能够chmod
并且chown
能够在可以的时候让脚本说
[编辑]
#!/bin/sh
/bin/"$(basename "$0")" "$@"
exit 0
/bin
用实际chmod
和所在的目录替换chown
。这将使用脚本的参数执行实际命令,然后以状态 0 退出,而不管程序的退出状态如何。
并且由于这两个脚本是相同的(只要真实的chmod
和chown
命令位于系统上的同一目录中),您可以编写一个并将另一个作为指向它的链接。