У меня есть файлы, созданные в моем домашнем каталоге только с правами чтения пользователя ( r-- --- ---
). Я хочу скопировать этот файл в другой каталог /etc/test/
с разрешением 744 ( rwx r-- r--
). Мне нужно разрешить файлу, который я копирую, наследовать разрешение папки, в которую он копируется, потому что до сих пор, когда я копирую его, права доступа к файлам остаются теми же ( r-- --- ---
). Я пробовал команду setfacl, но она не работала? Пожалуйста помоги.
PS. Я не могу просто chmod -r /etc/test/
потому, что есть много файлов, которые со временем будут скопированы в эту папку, и я не хочу запускать команду chmod каждый раз, когда файл копируется.
setfacl
команду вы пробовали? Каков был его выход?/bin/cp
без вариантов?Ответы:
Разрешения, как правило, не распространяются в каталог, в который копируются файлы, скорее новые права контролируются пользователем
umask
. Однако, когда вы копируете файл из одного места в другое, это особый случай, когда пользователь поumask
существу игнорируется и существующие права на файл сохраняются. Понимание этой концепции - ключ к получению того, что вы хотите.Таким образом, чтобы скопировать файл, но «отбросить» его текущие разрешения, вы можете сказать
cp
«не сохранять» с помощью--no-preserve=all
переключателя.пример
Скажем, у меня есть следующий файл, как вы.
И, как вы уже убедились, если мы просто слепо копируем его,
cp
мы получим следующее:Теперь давайте повторим это, но на этот раз скажем
cp
«сбросить разрешения»:Итак, скопированный файл теперь имеет свои права доступа 664, где он их взял?
Если я изменил свое значение
umask
на что-то другое, мы можем повторить этот тест в третий раз и посмотреть, какое влияние этоumask
окажет на незафиксированноеcp
:Обратите внимание, что разрешения больше не 664, а 640? Это было продиктовано
umask
. Он говорил любым командам, которые создают файл, чтобы отключить нижние 5 бит в разрешениях ... эти парни: (----wxrwx
).источник
--no-preserve
Флаг не является стандартным, предположительно GNUism.