От man 1 tar
:
[...]
-p, --preserve-permissions, --same-permissions
extract information about file permissions (default for superuser)
[...]
--no-same-permissions
apply the user's umask when extracting permissions from the archive
(default for ordinary users)
[...]
От этого я понимаю, что полномочиями извлеченных файлов значения по умолчанию установлены на основе umask пользователя, если пользователь не является корнем:
% umask
002
Таким образом, файлы, извлеченные мной, должны иметь полномочия 664
(666
-002
).
Однако:
% touch foo
% chmod +x foo
% ls -l
total 0
-rwxrwxr-x 1 user user 0 nov 3 19:36 foo
% tar cf foo.tar foo
% rm foo
% tar xf foo.tar
% ls -l
total 12
-rwxrwxr-x 1 user user 0 nov 3 19:36 foo
-rw-rw-r-- 1 user user 10240 nov 3 19:36 foo.tar
Т.е. Tar сохраняет полномочия исходного файла даже при том, что я не передал -p
, --preserve-permissions
или --same-permissions
переключатель.
Тем не менее, если я передаю --no-same-permissions
переключатель:
% tar xf foo.tar --no-same-permissions
% ls -l
total 12
-rwxrwxr-x 1 user user 0 nov 3 19:36 foo
-rw-rw-r-- 1 user user 10240 nov 3 19:36 foo.tar
Все еще Tar сохраняет полномочия исходного файла.
Кто-то может объяснить, почему это?
Так как Адонис (кто определил проблему) еще не отправил ответ, я отправлю ответ сам.
[...]
--no-same-permissions
apply the user's umask when extracting permissions from the archive
(default for ordinary users)
[...]
Это, наоборот к тому, что я думал, означает, что umask применяется к полномочиям папок / файлы в архиве, а не к стандартным полномочиям недавно созданных папок / файлы (777
/ 666
) как я думал.
Т.е. папка / файл, извлеченный, не передавая -p
, --preserve-permissions
или --same-permissions
переключателю не установят полномочия на 777 & ~umask
/ 666 & ~umask
, но к folder's/file's_archived_permissions & ~umask
.
В этом конкретном случае меня дополнительно дурачило то, что, применяя umask 002
в файл с полномочиями 775
ничего не изменяет, с тех пор 775 & ~002 = 775
.
Так, короче говоря, извлекая файл с полномочиями 775
с пользователем umask 002
производит, правильно, файл с полномочиями 775
, результат 775 & ~002
.