我正在运行 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”。