Por que os arquivos no diretório home são criados como graváveis em todo o mundo, apesar de umask mais restritiva?

10

Eu percebi que as permissões para novos arquivos e diretórios se comportam um pouco estranhamente. Primeiro de tudo, umask parece retornar a resposta certa:

$ umask
0002

Isso significa acesso total para o meu usuário e meu grupo, sem acesso de gravação para o resto do mundo, sem suid. Mas se eu criar um arquivo no meu $ HOME, será assim:

$ ls -l testfile 
-rw-rw-rw- 1 robe robe 0 mar 16 12:58 testfile

i.e. , dando acesso de gravação a todos. O mesmo acontece com os diretórios:

$ ls -ld testdir
drwxrwxrwx 2 robe robe 6 mar 16 13:00 testdir

Eu acho que isso é o mesmo que ter umask 0000, não 0002. Eu procurei em / etc por alguma instância de umask que muda o padrão 0002 ou 0022, mas não encontrei nenhum. Esta é uma instalação padrão do CentOS 5.5. Alguma dica de por que isso está acontecendo?

    
por rsuarez 16.03.2011 / 13:07

3 respostas

3

Não sei se é apropriado responder minha própria pergunta. Editores, por favor, avisem sobre isso, se este não for o caso. Agradecemos antecipadamente.

Acho que resolvi esse mistério: o problema era a falta de uma ACL padrão nos volumes XFS. Aqui está a entrada ACL para / srv / backups, um dos diretórios afetados:

# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

Sempre que eu fiz um "teste mkdir" ou "touch testfile", ele criava as permissões 777. Então eu fiz isso:

setfacl -m d:u::rwx /srv/backups

Deixando a ACL assim:

# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:other::r-x

Anteriormente (supostamente) não havia ACL, mas agora existe. Eu posso ver o sinal "+" anexado às permissões quando eu faço um "ls -l". E magicamente, agora "teste mkdir" e "touch testfile" funcionam com as permissões esperadas:

# ls -l testfile 
-rw-r--r-- 1 root root 0 Dec 20 10:00 testfile
# ls -ld testdir
drwxr-xr-x+ 2 root root 6 Dec 20 10:00 testdir

Eu não sei porque isso acontece. Eu acho que o XFS não gosta de não ter uma ACL padrão e se comporta de maneira estranha quando isso acontece. Além disso, eu vi isso acontecer apenas no CentOS, não no Debian / Ubuntu. Talvez esteja relacionado à versão do XFS no kernel, ou algo parecido. Não faço ideia.

De qualquer forma, isso resolve o caso para mim. Muito obrigado por todas as sugestões: -)

    
por 20.12.2011 / 10:03
0

A chamada de criação pode especificar explicitamente permissões que têm precedência sobre umask.

Você não respondeu como está criando testfile,testdir .

Crie o arquivo usando touch testfile , depois liste e poste as permissões

    
por 09.12.2011 / 15:11
0

Teste um getfacl . no diretório em que você está criando seu arquivo de teste para ver se há uma acl padrão que afeta as permissões.

    
por 12.12.2011 / 12:34

Tags