使用 cifs mount 防止 chown/chmod 访问被拒绝错误

使用 cifs mount 防止 chown/chmod 访问被拒绝错误

我有一个使用 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/binchmodchown

#!/bin/sh

您可以exit 0根据需要添加,但0如果脚本不执行任何操作,则这将是默认的退出状态。然后,当然,将其添加到环境变量/home/cab/bin的开头。PATH

如果你希望能够chmod并且chown能够在可以的时候让脚本说
[编辑]

#!/bin/sh
/bin/"$(basename "$0")" "$@"
exit 0

/bin用实际chmod和所在的目录替换chown。这将使用脚本的参数执行实际命令,然后以状态 0 退出,而不管程序的退出状态如何。

并且由于这两个脚本是相同的(只要真实的chmodchown命令位于系统上的同一目录中),您可以编写一个并将另一个作为指向它的链接。

相关内容