Shell 脚本用于将文件移动到另一个用户的目录中?

Shell 脚本用于将文件移动到另一个用户的目录中?

我正在运行 Ubuntu 16.04 服务器。在我的服务器上,目录中有一个文件/home/userA/dirA

userA@myUbuntu:~$ 
userA@myUbuntu:~$ pwd
/home/userA
userA@myUbuntu:~$ 
userA@myUbuntu:~$ ls -l
total 8
drwxrwxr-x 3 userA userA 4096 Feb 17 14:13 dirA
userA@myUbuntu:~$ 
userA@myUbuntu:~$ ls -l dirA/
total 7796
-rw-rw-r-- 1 userA userA  1234 Feb 17 14:05 theFile.txt
userA@myUbuntu:~$

注意这里的所有权;用户userA拥有该文件以及该文件所在的目录。

我需要一个 shell 脚本来移动theFile.txt到另一个位置,移动到不属于 的目录中userA。这是我的脚本:

#!/bin/bash
echo "Attempting to move file..."
{
        sudo mv /home/userA/dirA/theFile.txt /home/userB/dirB/.
} || {
   echo "Failed to move file!"
}

...输出:

userA@myUbuntu:~$ ./myScript.sh
Attempting to move file...
Failed to move file!
userA@myUbuntu:~$ 

正如您所看到的,该脚本以 的形式运行userA。我不想以 的形式运行它root

因此,我假设脚本失败是因为权限问题;以 身份运行的脚本userA没有权限将文件移动到 拥有的目录中userB。我尝试了该命令和其他命令的各种变体sudo,但都无济于事。我也尝试了一些愚蠢的解决方法,例如将文件复制到/tmp(有效),然后执行chown更改文件所有权(无效)。但一定有办法巧妙地做到这一点。有什么想法吗?

全面披露::我也发布了这个问题这里

答案1

这里提供解决方案。

必须将 userA 和 userB 都添加到同一个用户组中。然后,必须将目标目录的 path 中所有目录的权限分配给该组。此外,您还必须为每个目录设置“chmod 777”。

相关内容