我对文件权限的某些方面理解有困难。情况如下:
我创建了一个目录/到使用 sudo 然后将其权限更改为 drwxrwsr-x。我还将目录的组更改为我的系统上存在的“xxx”。我是“xxx”组的正式成员。我的理解是,我应该能够在/到因为我是“xxx”小组的成员。
但是,当我运行以下命令时,尝试创建每个文件和目录时都会被拒绝权限/到。
cp -r from/* /to
我对这种情况有什么不明白的地方?我显然可以使用 sudo 或更改所有者来修复此特定实例,但我想了解其原理。
命令输出
jgossage@Hector:~$ cp -r Downloads/* /Downloads
cp: cannot create directory /Downloads/Eclipse': Permission denied
cp: cannot create regular file /Downloads/google-chrome-stable_current_amd64.deb':
Permission denied
cp: cannot create directory /Downloads/Kindle': Permission denied
cp: cannot create directory /Downloads/WindowsDlls': Permission denied
#Target directory information
jgossage@Hector:~$ ls -al /Downloads
total 8
drwxrwsr-x 2 root admins 4096 Feb 13 07:16 .
drwxr-xr-x 28 root root 4096 Feb 14 08:23 ..
jgossage@Hector:~$
答案1
查看您设置的权限,我认为您没有授予“其他人”写入目录的权限。查看您授予的权限
drwxrwsr-x
我很确定这可以分解为:
type: d
owner: rwx (Read/Write/Execute)
group: rws (Read/Write/Special)
all/others: r-x (Read and Execute)
由于该文件夹是以 root (sudo) 身份创建的,因此只有 root 用户才有权写入该文件夹(尽管作为用户,您可以读取目录的内容)。
我认为要解决这个问题你应该能够运行:
sudo chmod o+w /to
自然替代/到用真实的文件夹名称/路径。这将给出全部用户对该文件夹具有写权限,这可能并不理想。或者,您可以取得该文件夹(以及文件夹中的所有文件)的所有权:
sudo chown -R jgossage /to
再次更换/到使用真实的文件夹名称/路径。这应该保持目录权限相同 (drwxrwsr-x),这意味着所有者将具有读/写/执行权限,但其他用户仅具有读取和执行权限。