установка бита 'x' (исполняемость) с помощью ACL

установка бита 'x' (исполняемость) с помощью ACL

Мне не удаётся установить бит 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 по умолчанию копируется в разрешения файла, но

  1. Записи 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, поскольку очень немногие программы на самом деле явно заявляют, что хотят создать исполняемый файл.

Связанный контент