Файл, наследующий разрешение каталога, в который он копируется?


9

У меня есть файлы, созданные в моем домашнем каталоге только с правами чтения пользователя ( r-- --- ---). Я хочу скопировать этот файл в другой каталог /etc/test/с разрешением 744 ( rwx r-- r--). Мне нужно разрешить файлу, который я копирую, наследовать разрешение папки, в которую он копируется, потому что до сих пор, когда я копирую его, права доступа к файлам остаются теми же ( r-- --- ---). Я пробовал команду setfacl, но она не работала? Пожалуйста помоги.

PS. Я не могу просто chmod -r /etc/test/потому, что есть много файлов, которые со временем будут скопированы в эту папку, и я не хочу запускать команду chmod каждый раз, когда файл копируется.


Какую setfaclкоманду вы пробовали? Каков был его выход?
Микель

setfacl -Rm d: u :: rwx, d: g :: r, d: o :: r / etc / test. Там не было никакого выхода, он просто принял команду.
LUUUUUUUUUUUUU

Как вы копируете файл? Что произойдет, если вы используете /bin/cpбез вариантов?
Микель

Я использую команду sudo cp / home / file / etc / test / file. Я тоже пытался использовать / bin / cp без другого результата
LUUUUUUUUUUUUUU

Ответы:


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

в духе Дня святого Валентина я вас виртуально целую, все работает! СПАСИБО!
LUUUUUUUUUUUUU
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.