写入Samba作为不同的用户共享?

我的NAS驱动器安装程序上有一个Samba共享,如下所示:

mount -t smbfs -o username=backup,password=backups_password //sharebox/SVNBackup /mnt/SVNBackup 

我然后试图运行:

 sudo svnadmin dump /usr/local/svn/repos/testrepo > /mnt/SVNBackup/test1.svn 

但是我得到:

bash:/mnt/SVNBackup/test1.svn:权限被拒绝

备份位置设置为只接受来自用户“备份”(本地系统上不存在的用户)的访问权限,

我该如何解决这个问题? 谢谢

sudo command > outputfile不会做你的想法。 具体来说,输出文件是打开你的权限,而不是sudo用户(在这种情况下,根)。 这就是为什么当你成为root并运行这个命令的时候它会起作用 – 因为那么redirect以root身份运行,谁可以写入/ mnt / SVNBackup。 sudo以这种方式行事是必要和明智的。

find一些以root身份运行整个命令的方法; 把它放在root的cron中,或者编写一行shell脚本并用sudo调用 ,或者find适合你的另一个修复程序。 在限制(而且稍微愚蠢)的情况下,

 sudo svnadmin dump /usr/local/svn/repos/testrepo | sudo tee /mnt/SVNBackup/test1.svn 

应该在stdout 文件/mnt/SVNBackup/test1.svn产生输出。 虽然看起来很奇怪,但是如果你真的不想输出,最简单的方法可能就是去做

 sudo svnadmin dump /usr/local/svn/repos/testrepo | sudo tee /mnt/SVNBackup/test1.svn > /dev/null 

如果原始的svnadmin命令在STDERR上生成了一些东西,并且你也想在日志文件中使用它,那就试试

 sudo svnadmin dump /usr/local/svn/repos/testrepo 2>&1 | sudo tee /mnt/SVNBackup/test1.svn > /dev/null 

请注意, 2>&1是一个bash论坛,如果你的shell是一个csh变体,或者不同的东西,你需要find合适的东西。