Como definir umask para uma pasta específica

18

Por alguns motivos óbvios, preciso definir o valor umask para uma pasta específica. Como alguém pode fazer isso?

Obrigado de antemão!

UPDATE 1

A razão pela qual eu preciso usar umask para uma pasta específica é a seguinte. Eu tenho um aplicativo da web e quando ele cria algum arquivo, a permissão padrão é 700. Mas eu preciso de pelo menos 755 permissão para esse arquivo. Eu acho que eu poderia explicar o problema mais claramente agora.

    
por Bakhtiyor 22.05.2011 / 22:02

4 respostas

24

você pode usar setfacl

setfacl -d -m group:name:rwx /path/to/your/dir

Onde name é o nome do grupo

Para descobrir a quais grupos você ou um usuário específico pertence, consulte No unix / linux, como você descobre em que grupo um determinado usuário está na linha de comando?

    
por yogi70 14.11.2012 / 17:31
10

Você não pode definir umask por diretório, é um valor no nível do processo. Se você precisar impedir que outras pessoas leiam arquivos em um diretório, revogue os bits de permissões correspondentes.

Por exemplo, se você tiver um diretório /home/user/directory com alguns arquivos e diretórios que podem obter permissões como 777 de um processo, defina os bits de permissão de /home/user/directory para algo como 700. Isso tornará impossível para outros usuários (excluindo a raiz do superusuário) para descer em /home/user/directory .

Sou paranóico e defino as permissões em /home/user para 750, para que apenas eu possa ler, escrever e descer no meu diretório pessoal. Isso tem como consequência que pastas como /home/user/Public não podem ser acessadas por outros, mas eu posso viver com isso.

Por atualização da sua pergunta: ainda assim, você não pode controlar isso no sistema de arquivos (além de usar um tipo diferente de sistema de arquivos como o FAT, que é strongmente desaconselhado), você precisa fazer isso em seu webapp. Se seu webapp está codificado em PHP, você pode mudar o umask na hora usando a função umask :

<?php
umask(0022);
// other code
?>

Você pode colocar isso em um arquivo de configuração, como o arquivo que contém a senha de conexão com o banco de dados (pensando em aplicativos como o Wordpress).

Lembre-se de que é um valor de processo, alguns servidores da Web permitem que você os configure em seus arquivos de configuração, caso contrário, você poderia modificar os scripts de inicialização para definir a umask desejada. Lembre-se de que as permissões como 755 e 644 são muito perigosas para aplicativos da web, se o código for confidencial, todos poderão lê-lo.

    
por Lekensteyn 22.05.2011 / 22:18
0

Outra solução pode ser apenas definir o ID do grupo nos arquivos criados no diretório, o que torna os novos arquivos pertencentes ao ID do grupo de diretórios, em vez do ID do grupo do usuário que criou os arquivos. Então eu acho que você poderia fazer:

chown www-data:www-data /my/folder

chmod 4755 /my/folder

Isso define a permissão de arquivo especial setgid, o que faria com que todos os arquivos criados em /my/folder pertencessem ao grupo www-data , que tem permissão rx (5) por causa do diretório pai.

    
por Bastiaan 11.07.2017 / 10:49
-1

Para alterar as permissões de uma pasta, use chmod. umask é para arquivos.

Defina umask para o que você precisa por

umask xxx

e mudar de volta quando o seu feito

umask 022
    
por wojox 22.05.2011 / 22:09