Veja permissões para novos arquivos em um determinado diretório

1

Eu não entendo como minha máquina Linux está operando em novos arquivos.

Eu tenho uma Amazon Linux AMI (distro baseada no RHEL) e quando eu executo umask eu recebo 0002 , então sempre que eu crio coisas novas, outros usuários não recebem write access.

Mas depois vou para meu diretório pessoal e digito:

$ mkdir myDir
$ touch myDir/myFile
$ ls -l | grep myDir

e eu recebo

drwxrwxr-x 2 myself myself 4096 May 11 22:37 myDir

e para a pasta:

$ ls -l myDir
-rw-rw-r-- 1 myself myself 0 May 11 22:37 myFile

Então, aparentemente, há mais coisas acontecendo lá do que minha umask , pois as permissões myFile são mais restritivas do que apenas write protection.

Indo mais fundo, se eu tentar:

$ sudo touch /var/run/myPidFile.pid
$ ls -l /var/run/ | grep myPidFile.pid
-rw-r--r-- 1 root    root       0 May 11 22:42 myPidFile.pid

Portanto, myPidFile.pid recebe uma permissão padrão muito mais restritiva, em /var/run , em seguida, myFile sob minha pasta pessoal.

Poderíamos culpar o root umask , mas se eu executar umask em root , recebo 0022 , que é realmente mais restritivo do que o usuário 0002 umask , mas ainda não explica como a permissão do bit de execução não está definida.

Então, como posso entender a permissão padrão de uma pasta no Linux?

    
por mFeinstein 12.05.2017 / 00:47

2 respostas

1

O umask é a maior parte do quebra-cabeça. Raiz tem uma umask diferente. Isso é bem típico.

A parte do quebra-cabeça que você está perdendo é que o umask é uma máscara . Quando um aplicativo cria um arquivo, ele especifica algumas permissões; o umask é um filtro para essas permissões que remove alguns bits de permissão. O arquivo tem apenas bits de permissão que o aplicativo incluiu. Por exemplo, um aplicativo que pretende criar um arquivo não executável (como touch ) transmite os bits de permissão 666 (em octal); com a umask 002 isso resulta em permissões 664, ou seja, rw-rw-r--: o umask removeu o bit write-other. Ao criar um diretório, o aplicativo (como mkdir ) normalmente permitiria a execução e, portanto, especifica 777 como as permissões; o umask 002 resulta em permissões 775 no diretório, ou seja, rwxrwxr-x.

Você pode ver quais permissões o aplicativo usa observando as chamadas do sistema . Por exemplo:

$ strace -e open,mkdir touch foo
… skipping opening of dynamically linked libraries etc. …
open("foo", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
+++ exited with 0 +++
$ strace -e open,mkdir mkdir goo
… skipping opening of dynamically linked libraries etc. …
mkdir("goo", 0777)                      = 0
+++ exited with 0 +++
    
por 12.05.2017 / 02:55
0

Um diretório precisa executar permissões nele para mudar para ele ou obter uma listagem, então, quando um diretório é criado, ele recebe automaticamente os bits + x.

Arquivos, no entanto, só precisam executar o (s) bit (s) se eles forem um binário compilado (c / c ++ / etc) ou um script interpretável (sh / bash / php / perl / etc), bem como não fazer coisas executáveis por padrão por motivos de segurança.

    
por 12.05.2017 / 02:21