Como alterar permissões em todos os arquivos em um diretório e quando novos arquivos são adicionados aos valores padrão?

5

Eu tenho uma pasta /home/userName/Public/Media na qual eu armazeno todas as mídias na máquina; esta pasta destina-se a ser acessível por todos os outros usuários da máquina - ou apenas para impedi-los de baixar / copiar os mesmos arquivos de mídia independentemente.

Existe alguma maneira de alterar as permissões para:

owner: userName /* my own user */
Access: read and write

group: users
Access: read only /* I'm not entirely sure I trust all my users enough to give them powers of delete */

Others
Access: read only

Idealmente, gostaria que outras pessoas pudessem adicionar sua própria mídia, mas para as permissões para qualquer mídia / arquivos / diretórios adicionados por mim como padrão para aqueles listados acima. Permissões para arquivos que meus usuários adicionam Eu gostaria de usar como padrão os acima, com a exceção de que os usuários mantêm a propriedade.

Estou assumindo que inotify e umask poderiam ser usados; mas - e só posso pedir desculpas por isso - não tenho ideia de como usá-los para efetuar uma solução.

Obrigado por qualquer ajuda que você possa fornecer. Um dia, espero poder usar o Ubuntu sem perplexidade ... =)

    
por David Thomas 27.09.2009 / 13:07

1 resposta

7
chown -R userName:groupname folderName
chmod -R 744 folderName

umask 022 (in .login or .profile)

chmod altera as permissões nos arquivos. É um pouco estranho se você não está acostumado, mas em poucas palavras:

Uso (para octal): chmod ABC (arquivo / pasta de destino)

"A" são as permissões para o proprietário, "B" são as permissões para o grupo proprietário e C é permissões para todos.

As permissões são divididas da seguinte forma

1 = executar 2 = escrever 4 = ler

Adicione-os para determinar o nível de permissão. Por exemplo, para ler e escrever, mas não executar, você usa (2 + 4) = 6. Para ler, escrever e executar, use (1 + 2 + 4) = 7. Somente para execução, use 1.

Então "chmod -R 744 folderName" significa:

Definir permissões para o proprietário ler + gravar + executar (7) Definir permissões para o grupo Possuir para Ler (4) Definir permissões para todos lerem (4)

Aplique essas permissões ao folderName e, a partir daí, aplique-as recursivamente (-R) a todos os arquivos da pasta.

Isso é bem básico; existem outras maneiras de usar o chmod e outras propriedades que você pode definir com ele, etc., mas isso é um bom começo.

Agora umask:

O Umask é basicamente uma maneira de definir as permissões padrão para a criação de arquivos e diretórios. Normalmente é definido para cada usuário em seu arquivo .profile ou .login, mas você pode configurá-lo para si mesmo em vários momentos apenas digitando umask 022 ou qualquer outra coisa ... Ele permanecerá até você alterá-lo ou sair.

As permissões (octal) umask são o reverso das permissões chmod. Eu sei que é estranho. Mas se você quiser que todos os arquivos no diretório sejam criados com permissão de arquivo 777 (leia + escreva + execute para o proprietário, grupo e todos), defina o umask como 000.

Portanto, para que todos os seus usuários criem arquivos 644 (leitura / gravação, leitura, leitura), você definiria o umask como 022 (o que parece errado, mas os arquivos não são executáveis por padrão, portanto, os arquivos criados serão 644 e os diretórios recém-criados serão 755).

Espero que não seja muito confuso.

    
por 01.10.2009 / 18:05