configuração 'x' (executável) bit usando o ACL

4

Não consigo configurar x bit para o arquivo criado.

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

no x-bit, vamos ver o 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 em acl !!

vamos dar uma olhada em acl para dir local

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

Eu faço parte do group1:

archemar@foobar:~/D> id
uid=1001(archemar) gid=1001(group1) groups=1001(group1),16(dialout),33(video)

vamos tentar executar

archemar@foobar:~/D> ./v.sh
-bash: ./v.sh: Permission denied

configurar g + x é trivial, mas o arquivo real virá através do ftp. Existe uma maneira de ter bit x set?

o SO é o suse 11.4, o diretório é montado pelo NFS 3, o ACL é configurado no sistema de arquivos.

    
por Archemar 12.04.2017 / 10:27

2 respostas

0

Isso foi respondido de forma periférica nessas duas perguntas:

Como umask afeta as ACLs?

link

Os bits relevantes são geralmente de man setfacl :

The perms field is a combination of characters that indicate the >permissions: read (r), write (w), execute (x), execute only if the file is a directory or already has execute permission for some user (X). Alternatively, the perms field can be an octal digit (0-7).

(ênfase minha)

A seção relevante da primeira pergunta na pesquisa por @ slm ♦ é a seguinte:

To summarize

  • Files won't get execute permission (masking or effective). Doesn't matter which method we use: ACL, umask, or mask & ACL.

  • Directories can get execute permissions, but it depends on how the masking field is set.

  • The only way to set execute permissions for a file which is under ACL permissions is to manually set them using chmod.

O que basicamente significa que parece que você não pode fazer o que deseja fazer com o ACL, já que muito poucos programas explicitamente dizem que querem criar um arquivo executável.

    
por 14.04.2017 / 15:10
3

Eu não acho que você pode usar ACLs para forçar definir um bit de permissão.

Usando a página do Linux ACL como referência, a ACL padrão é copiada para as permissões do arquivo, mas

  1. The access ACL entries corresponding to the file permission bits are modified so that they contain no permissions that are not contained in the permissions specified by the mode parameter [given to open(), creat() etc.].

Como a máscara de bits de permissão corresponde aos bits de permissão do grupo, ela é afetada aqui.

Se não houver uma ACL padrão, o umask será usado, mas o mesmo mascaramento ainda será feito.

O que, é claro, está de acordo com o costume de um programa de limitar as permissões àquelas que ele passa para open ao criar o arquivo, seja excluindo permissões de execução com o modo 0666 ou excluindo outros usuários de acessar o arquivo com o modo 0600 .

    
por 14.04.2017 / 15:18