Полномочия обычно не распространяются каталогом, в который копируются файлы, довольно новыми полномочиями управляет пользователь 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
к чему-то еще мы можем повторить этот тест в 3-й раз и видеть эффекты это 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 14.02.2014, 22:38