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á rwx
em 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
- 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á umask
usado, 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 open
ao 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:
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.