Мне не удаётся установить бит x для созданного файла.
archemar@foobar:~/D> echo echo hello world > v.sh
archemar@foobar:~/D> ls -l v.sh
-rw-rw-r--+ 1 archemar group1 17 Apr 12 08:12 v.sh
нет x-bit, давайте посмотрим на acl
archemar@foobar:~/D> getfacl v.sh
# file: v.sh
# owner: archemar
# group: group1
user::rw-
group::rwx #effective:rw-
group:group1:rwx #effective:rw-
mask::rw-
other::r--
group1 находится rwx
в acl!!
давайте посмотрим на acl для локального каталога
archemar@foobar:~/D> getfacl .
# file: .
# owner: FTP_D_adm
# group: admin
user::rwx
group::rwx
group:group2:rwx
group:admin:rwx
group:group1:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:group1:rwx
default:mask::rwx
default:other::r-x
Я вхожу в группу1:
archemar@foobar:~/D> id
uid=1001(archemar) gid=1001(group1) groups=1001(group1),16(dialout),33(video)
давайте попробуем выполнить
archemar@foobar:~/D> ./v.sh
-bash: ./v.sh: Permission denied
настройка g+x тривиальна, но реальный файл придет через ftp. Есть ли способ установить бит x?
Операционная система — Suse 11.4, каталог смонтирован по NFS 3, ACL настроен на файловую систему.
решение1
Я не думаю, что можно использовать ACL для принудительногонаборбит разрешения.
ИспользуяСтраница руководства Linux ACLдля справки, ACL по умолчанию копируется в разрешения файла, но
- Записи ACL доступа, соответствующие битам разрешений файла, изменяются таким образом, чтобы они не содержали разрешений, которые не содержатся в разрешениях, указанных параметром режима.
open()
[ даноcreat()
и т.д.].
Поскольку маска битов разрешений соответствует битам разрешений группы, она здесь затрагивается.
Если ACL по умолчанию отсутствует, umask
вместо него используется , но маскирование все равно выполняется.
Что, конечно, соответствует обычной практике, когда программа может ограничивать разрешения теми, кому она передает их open
при создании файла, будь то исключение разрешений на выполнение с помощью mode 0666
или исключение других пользователей из доступа к файлу с помощью mode 0600
.
решение2
На этот вопрос косвенно ответили следующие два вопроса:
Как umask влияет на списки контроля доступа?
https://superuser.com/questions/180545/настройка-различных-acls-для-каталогов-и-файлов
Соответствующие фрагменты обычно берутся из man setfacl
:
Поле прав представляет собой комбинацию символов, которые указывают права доступа: чтение (r), запись (w), выполнение (x),выполнять только в том случае, если файл является каталогом или уже имеет разрешение на выполнение для какого-либо пользователя (X). В качестве альтернативы поле полномочий может быть представлено восьмеричной цифрой (0–7).
(Выделено мной)
Соответствующий раздел из первого вопроса в ответе@slm♦следующее:
Обобщить
Файлы не получат разрешение на выполнение (маскирующее или эффективное). Неважно, какой метод мы используем: ACL, umask или mask & ACL.
Каталоги могут получить разрешения на выполнение, но это зависит от того, как настроено поле маскирования.
Единственный способ установить разрешения на выполнение для файла, находящегося под разрешениями ACL, — это вручную установить их с помощью chmod.
По сути, это означает, что вы не можете делать то, что хотите, с помощью ACL, поскольку очень немногие программы на самом деле явно заявляют, что хотят создать исполняемый файл.