Estou construindo um pequeno conjunto de bash
funções utilitárias e aliases que residirão em uma /root
partição especial. Percebi que sempre que eu touch aFile
ou vim aFile
, o resultado fica aFile
com as permissões -rw-r--r--
.
Isso é altamente indesejável se seu objetivo é executar alguns scripts de shell, e é isso que eu pensei que era o ponto /root
principal.
Minhas /root
permissões de diretório são dr-xr-x---
e minhas umask
são 0022
. Pelo que entendi, devo esperar que novos arquivos sejam 0755
... mas não são.
- Por quê?
- Este é o padrão?
- Como posso tornar novos arquivos executáveis?
Se você notar, a máscara 022 gera 755 nos diretórios (o sinalizador executável os torna navegáveis, em oposição a invisível quando não está presente nas permissões octal), tornando-os pesquisáveis. Os arquivos, no entanto, não obtêm esse bit executável por padrão. Esta é uma questão de conveniência e segurança dentro da especificação POSIX.
Além de querer usar o diretório /root como um repositório para scripts, ninguém quer ter que definir explicitamente seus vários arquivos que são criados para serem não executáveis no sistema como um preço por ter diretórios pesquisáveis. Portanto, no interesse da usabilidade, você tem esse problema de execução padrão em diretórios, mas não em arquivos.
Seu problema pode ser facilmente resolvido por ACLs, que são capazes de herança de permissão (algo que as permissões do UNIX não podem fazer). Leia atentamente as man pages para getfacl, setfacl e a documentação aqui: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/ch-acls.html
Essencialmente, as ACLs são um conjunto de controle de permissão estendida que pode utilizar além de estender os recursos de acesso POSIX existentes. O conjunto POSIX ACL bastante limitado, mas universalmente aceito, realizará o que você deseja.
Se você não está interessado em herança, mas apenas deseja tornar os arquivos executáveis de forma única, o comando "chmod" fará o que você deseja. Por exemplo,
chmod u+x /root/script.sh
irá tornar o arquivo /root/script.sh executável por seu usuário proprietário (que deve ser o root nesse caso). A página de manual do chmod contará mais do que preciso aqui.