umask não está funcionando para diretórios

1

Eu tenho um problema estranho com umask. Minha configuração atual é:

$ umask
0022
$ umask -S
u=rwx,g=rx,o=rx

Isso funciona apenas para arquivos e não para diretórios:

$ touch abc
$ ll abc
0 -rw-rw-rw- 1 user1 group1 0 Dec 12 11:39 abc
$ mkdir def
$ ll -d def
8.0K drwxrwxrwx+ 2 user1 group1 4.0K Dec 12  2012 def

Alguém pode sugerir porque umask não está funcionando para o diretório? Qualquer ajuda é apreciada!

Este é um novo sistema linux Centos.

Edit: obrigado pelos comentários. Como alguns apontaram, isso também não funciona para arquivos.

Informações extras: Esse problema parece ocorrer apenas no diretório inicial que é montado sobre o NFS e não nos diretórios locais. O NFS poderia estar causando o problema de alguma forma?

    
por Tetsuo 12.12.2012 / 03:50

3 respostas

1

Eu acho que o problema é que você tem a lista de controle de acesso sendo aplicada aqui também. Observe o diretório, def? Ele tem um '+' à direita, o que significa que há ACL permissões sendo aplicadas aqui também. Você pode executar o comando getfacl no seu nível de diretório $HOME ? Isso nos dará mais informações sobre o que está acontecendo.

Por exemplo:

% getfacl .
# file: .
# owner: saml
# group: saml
user::rwx
group::rwx
other::r-x
    
por 12.01.2013 / 14:07
0

Os diretórios têm permissão de execução, a menos que você o desative explicitamente. Tente umask 0033 se é isso que você quer.

    
por 12.12.2012 / 04:19
0

O umask não funciona de todo.

Para o arquivo, o comando touch criará com -rw-rw-rw- e o umask é 0022 , depois da máscara 0666 & ~ 0022 . A permissão final será 0644 (-rw-r--r--) . Por isso, não funciona para arquivo.

Para o diretório, o comando mkdir criará com rwxrwxrwx e o umask será 0022 , depois da máscara 0777 & ~ 0022 . A permissão final será 0755 (rwxr-xr-x) .

Mas eu não sei porque isso não funciona. Talvez seja o problema do seu SHELL.

    
por 12.12.2012 / 04:35