复制文件时出现权限问题

复制文件时出现权限问题

我刚刚编写了一个简单的 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/文件“由于权限限制,无法复制。

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
...

正如您所看到的导致目录的问题“文件“既不属于 peter,其组也不包含 peter。我运行命令检查了这一点groups peter

为什么我可以复制除“之外的所有目录和文件”文件“?一方面,Peter 没有权限做任何事情”文件“,因为他不是所有者也不属于该组,但另一方面,所有其他目录都归 root 所有 - 这实际上是相同的情况。peter 不属于 root,但他不知何故毫无问题地复制了这些文件和目录。为什么?

答案1

您无权读取该文件夹的内容/opt/lampp/htdocs/vocab/files

如果您以用户身份启动脚本peter,并且文件夹的组和所有者是www-data,那么您必须将x(执行权限,这是查看目录内容所必需的 - 当您访问其内容时,您会“执行”它们)设置为的权限others

sudo chmod o+x /opt/lampp/htdocs/vocab/files

并且您应该添加p开关来保存mode, ownership, timestamps

cp -pR $working_directory $target_directory

(或者,您可以使用权限启动脚本sudo


man chmod

字母 rwxXst 为受影响的用户选择文件模式位:读取(r),
写(w),执行(或搜索目录)(x)、执行/搜索
仅当文件是目录或已经具有某些目录的执行权限时
用户(X)、执行时设置用户或组 ID、限制删除标志
或粘着位 (t)。除了这些字母中的一个或多个之外,您还可以指定
恰好是字母 ugo 中的一个:授予拥有
文件(u),授予属于该成员的其他用户的权限
文件所属组 (g),以及授予不属于以下任一组的用户的权限
前两个类别(o)。

相关内容