我刚刚编写了一个简单的 bash 文件,用于将完整目录复制到我的主目录,以避免在使用 git 跟踪它时出现权限问题。
该脚本如下所示:
#!/bin/bash
working_directory="/opt/lampp/htdocs/vocab/"
target_directory="."
cp -R $working_directory $target_directory
该脚本归我的本地用户名“peter”所有。
-rwxrwx--- 1 peter peter 123 Sep 11 11:02 update.sh
在复制过程中,我得到一个错误,文件夹“ /opt/lampp/htdocs/vocab/files ”的文件由于权限限制而无法复制。
ls -l /opt/lampp/htdocs/vocab/
回报
drwxr-xr-x 2 root root 4096 Sep 10 22:59 css
drwxrwxrw- 2 www-data www-data 4096 Sep 11 11:06 files
drwxr-xr-x 2 root root 4096 Aug 17 21:33 html
-rw-r--r-- 1 root root 918 Sep 3 08:28 index.html
...
如您所见,导致目录“ files ”的问题既不被 peter 拥有,也不包含 peter。我检查了这个运行命令groups peter
。
为什么我可以复制除“ files ”以外的所有目录和文件?一方面,peter 没有权限对“ files ”做任何事情,因为他不是所有者,也不属于该组,但另一方面,所有其他目录都归 root 所有——这实际上是一样的案子。peter 不属于 root,但不知何故,他可以毫无问题地复制那些文件和目录。为什么?
您无权阅读该文件夹的内容
/opt/lampp/htdocs/vocab/files
。如果您以用户身份启动脚本并且文件夹的
peter
组和所有者是的权利。www-data
x
others
并且您应该添加
p
开关以保留mode, ownership, timestamps
.(或者,您可以使用
sudo
权限启动脚本)从
man chmod