definindo o bit 'x' (executável) usando ACL

definindo o bit 'x' (executável) usando ACL

Não consigo definir x bit no 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

sem x-bit, vamos dar uma olhada em 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--

grupo1 está rwxem acl !!

vamos dar uma olhada em acl para diretório 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

Faço parte do grupo1:

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 definir o bit x?

O sistema operacional é suse 11.4, o diretório é montado em NFS 3, a ACL está definida no sistema de arquivos.

Responder1

Eu não acho que você possa usar ACLs para forçardefinirum pouco de permissão.

Usando oPágina de manual da ACL do Linuxcomo referência, a ACL padrão é copiada para as permissões do arquivo, mas

  1. As entradas ACL de acesso correspondentes aos bits de permissão do arquivo são modificadas para que não contenham permissões que não estejam contidas nas permissões especificadas pelo parâmetro mode [dado a 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 nenhuma ACL padrão, será umaskusado, mas o mesmo mascaramento ainda será feito.

O que, obviamente, está de acordo com o costume usual de um programa ser capaz de limitar as permissões àqueles para quem ele passa openao criar o arquivo, seja excluindo permissões de execução com mode 0666, ou excluindo outros usuários de acessar o arquivo com mode 0600.

Responder2

Isso foi respondido perifericamente nestas duas perguntas:

Como o umask afeta as ACLs?

https://superuser.com/questions/180545/setting-differing-acls-on-directories-and-files

Os bits relevantes são geralmente de man setfacl:

O campo perms é uma combinação de caracteres que indicam as >permissões: leitura (r), gravação (w), execução (x),execute somente se o arquivo for um diretório ou já tiver permissão de execução para algum usuário (X). Alternativamente, o campo de permissões pode ser um dígito octal (0-7).

(ênfase minha)

A seção relevante da primeira pergunta na resposta de@slm♦é o seguinte:

Para resumir

  • Os arquivos não receberão permissão de execução (mascarada ou efetiva). Não importa qual método usamos: ACL, umask ou máscara e ACL.

  • Os diretórios podem obter permissões de execução, mas isso depende de como o campo de mascaramento está definido.

  • A única maneira de definir permissões de execução para um arquivo que está sob permissões ACL é defini-las manualmente usando chmod.

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

informação relacionada