Como posso obter as permissões de um arquivo no formato octal?

0

... e como posso configurá-los? Isso funciona para diretórios da mesma maneira? O que acontece com o sticky bit e com coisas mais "exóticas"?

    
por Gustave 15.07.2015 / 19:02

3 respostas

2

Como sugerido por @Gustave , o programa stat (que faz parte de GNU coreutils e essencialmente um programa "Linux" por esse motivo, embora você possa ter uma porta ou pacote em sistemas BSD) pode fazer isso. O comando

stat -c "%a %n" arquivo

produz uma listagem formatada apenas com o modo octal (incluindo o setuid, setgid e sticky bits codificados) e o nome do arquivo. Segundo 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 a saída assim de 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 octal retornados para os direitos de acesso , dependendo de o setuid, etc., estar definido. O primeiro dígito (quarto) combina

  • 4 (setuid)
  • 2 (setgid)
  • 1 (pegajoso)

Os direitos de acesso retornados excluem os bits extras retornados pela chamada do sistema stat que informa se o nome é um diretório ( S_IFDIR ) ou arquivo ( S_IFREG ). Todos esses bits, a propósito, se encaixam em um valor de 16 bits por causa das implementações antigas do Unix nos anos 1970 e início dos anos 80 - e têm valores padrão . Como os direitos de acesso excluem o tipo de arquivo, você pode usar esse valor como está no comando chmod (e também o chmod function), porque é octal, e o chmod espera isso. Mesmo o setuid, etc., trabalha com octal, embora coisas como

chmod u+s /usr/bin/whatever

são mais legíveis.

Para ler mais

por 16.07.2015 / 02:08
0
stat -c "%a %n" <file>

parece funcionar - mas eu não sei mais.

    
por 15.07.2015 / 19:07
0

Obtenção: como Gustave respondeu.

Configuração:

chmod 0755 myfile

O mesmo para diretórios. Para o bit pegajoso, o primeiro dígito deve ser 1. Sobre o bit pegajoso: link

    
por 15.07.2015 / 20:23