复制目录的文件继承权限?


9

我已将文件创建到我的主目录中,并且只有用户具有读取权限(r-- --- ---)。我想将此文件复制到另一个/etc/test/文件夹权限为744(rwx r-- r--)的目录。我需要允许要复制的文件继承复制文件夹的权限,因为到目前为止,当我复制该文件时,文件的权限仍然相同(r-- --- ---)。我已经尝试过setfacl命令,但是没有用?请帮忙。

PS。我不能只是chmod -r /etc/test/因为有很多文件会随着时间的推移而复制到此文件夹中,并且我不想每次复制文件时都运行chmod命令。


setfacl您尝试了什么命令?它的输出是什么?
Mikel 2014年

setfacl -Rm d:u :: rwx,d:g :: r,d:o :: r / etc / test。没有输出,仅接受命令。
LUUUUUUUUUUUUUU

您如何复制文件?如果/bin/cp不选择使用该怎么办?
Mikel

我使用的命令是sudo cp / home / file / etc / test / file。我现在也尝试使用/ bin / cp,但结果没有不同
LUUUUUUUUUUUUUUUU 2014年

Answers:


14

通常,权限不会通过文件复制到的目录传播,而是由用户的来控制新的权限umask。但是,当您将文件从一个位置复制到另一个位置时,这是一种特殊情况,其中用户的umask位置实际上被忽略,并且保留了文件的现有权限。了解此概念是获得所需内容的关键。

因此,要复制文件但“放弃”其当前权限,您可以cp使用--no-preserve=all开关将其告知“不保留” 。

说我有以下与您一样的文件。

$ mkdir -m 744 somedir

$ touch afile
$ chmod 400 afile 

$ ll
total 0
-r--------. 1 saml saml 0 Feb 14 15:20 afile

正如您已经确认的那样,如果我们只是使用它盲目地复制它,cp我们将得到以下信息:

$ cp afile somedir/
$ ls -l somedir/
total 0
-r--------. 1 saml saml 0 Feb 14 15:20 afile

现在,让我们重复一遍,但这一次告诉cp“删除权限”:

$ rm -f somedir/afile 

$ cp --no-preserve=all afile somedir/

$ ls -l somedir/
total 0
-rw-rw-r--. 1 saml saml 0 Feb 14 15:21 afile

因此,复制的文件现在的权限设置为664,它是从哪里获得的?

$ umask
0002

如果我将其更改umask为其他内容,我们可以第三次重复此测试,并查看umask对未保存的影响cp

$ umask 037
$ rm somedir/afile 

$ cp --no-preserve=all afile somedir/
$ ls -l somedir/
total 0
-rw-r-----. 1 saml saml 0 Feb 14 15:29 afile

请注意,权限不再是664,而是640?那是决定的umask。告诉所有创建文件的命令以禁用权限的低5位……这些家伙:(----wxrwx)。


--no-preserve标志不是标准的,大概是GNUism。
vonbrand

正确,谢谢,我想在A.
slm

本着情人节的精神,我给你一个虚拟的吻,这很有效!谢谢!
LUUUUUUUUUUUUUU 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.