... e como posso configurá-los? Isso funciona para diretórios da mesma maneira? O que acontece com o sticky bit e aquelas coisas mais “exóticas”?
Responder1
Como sugerido por@Gustave, o stat
programa (que faz parteCoreutils GNUe essencialmente um programa "Linux" por esse motivo, embora você possa ter umportaoupacoteem sistemas BSD) pode fazer isso. O comando
stat -c "%a %n"
arquivo
produz uma listagem formatada apenas com o modo octal (incluindo os bits setuid, setgid e sticky codificados) e o nome do arquivo. De acordo com a documentação
%a
é o "Direitos de acesso em octal"%n
é o "Nome do arquivo"
Por exemplo, dado este script:
#!/bin/sh
for name in $*
do
ls -ld "$name"
stat -c '%a %n' "$name"
done
você pode ver uma saída como esta em myscript /usr/bin /usr/bin/X /usr/bin/bsd-write
:
drwxr-xr-x 5 root root 118784 Jul 11 19:55 /usr/bin
755 /usr/bin
-rwsr-sr-x 1 root root 9232 Dec 16 2011 /usr/bin/X
6755 /usr/bin/X
-rwxr-sr-x 1 root tty 11000 Jun 17 2010 /usr/bin/bsd-write
2755 /usr/bin/bsd-write
Você veria 3 ou 4 dígitos octais retornados para odireitos de acesso, dependendo se o setuid, etc., está definido. O (quarto) dígito inicial combina
- 4 (setuídeo)
- 2 (setgid)
- 1 (pegajoso)
Odireitos de acessoretornado exclui os bits extras retornados pela chamada do sistemastat
que informam se o nome é um diretório ( S_IFDIR
) ou arquivo ( S_IFREG
). A propósito, todos esses bits cabem em um valor de 16 bits por causa das antigas implementações do Unix na década de 1970 e início da década de 1980 - e foramvalores padrão. Porque odireitos de acessoexcluir o tipo de arquivo, você pode usar esse valor como está no chmod
comando (e também ochmod
função), porque é octal, e ochmod
comando espera isso. Até o setuid, etc., funciona com octal, embora coisas como
chmod u+s /usr/bin/whatever
são mais legíveis.
Para leitura adicional
Responder2
stat -c "%a %n" <file>
parece funcionar - mas não sei mais.
Responder3
Obtendo: como Gustave respondeu.
Contexto:
chmod 0755 myfile
O mesmo para diretórios. Para sticky bit, o primeiro dígito deve ser 1. Sobre o sticky bit:https://askubuntu.com/a/432703