Defina a permissão padrão para novas pastas e arquivos no Linux

1

Estou usando o OpenSuSE e meu computador tem apenas duas contas: root e me.Eu tenho um diretório /srv/www/htdocs/abc .

Eu só quero configurá-lo para que, quando novas pastas ou arquivos forem criados nesse diretório, eles tenham as permissões definidas para 777.

Quando novos arquivos são criados neste diretório, tenho que configurá-los para o 777 novamente para obter acesso de gravação.

Eu uso root e digito:

chmod me /srv/www/htdocs

Mas eu não trabalho. Como posso fazer isso?

    
por tunghk_54 29.07.2013 / 13:14

1 resposta

1

O uso de chmod é para alterar permissões, o comando chown é para alterar a propriedade dos arquivos & diretórios.

propriedade

Para alterar a propriedade de um diretório, você pode usar o seguinte comando:

$ sudo chown -R me /srv/www/htdocs

OBSERVAÇÃO: estamos usando o recurso sudo para elevar nossos privilégios para o mesmo nível que o root para esses comandos, sem precisar se tornar root.

permissões

Para alterar as permissões neste diretório:

$ sudo chmod -R 777 /srv/www/htdocs

umask

Usar o comando umask configura seu terminal para que, quando arquivos & diretórios são criados suas permissões podem ser influenciadas um pouco. Cuidado deve ser usado ao usar umask , pois há situações em que ele não lhe dará as permissões exatamente da maneira que você pensa.

Para um diretório, parece bem:

$ for i in 'seq 1 7';do echo "umask: 00$i"; umask 00$i; rm -fr blah; mkdir blah;ls -l|grep blah;done
umask: 001
drwxrwxrw-   2 saml saml     4096 Jul 29 14:39 blah
umask: 002
drwxrwxr-x   2 saml saml     4096 Jul 29 14:39 blah
umask: 003
drwxrwxr--   2 saml saml     4096 Jul 29 14:39 blah
umask: 004
drwxrwx-wx   2 saml saml     4096 Jul 29 14:39 blah
umask: 005
drwxrwx-w-   2 saml saml     4096 Jul 29 14:39 blah
umask: 006
drwxrwx--x   2 saml saml     4096 Jul 29 14:39 blah
umask: 007
drwxrwx---   2 saml saml     4096 Jul 29 14:39 blah

No entanto, ele não permite que você tenha arquivos exatamente da maneira que você pretende que sejam com determinados membros. Veja umask 006 , por exemplo, abaixo:

$ for i in 'seq 1 7';do echo "umask: 00$i"; umask 00$i; rm -fr blah; touch blah;ls -l|grep blah;done
umask: 001
-rw-rw-rw-   1 saml saml        0 Jul 29 14:40 blah
umask: 002
-rw-rw-r--   1 saml saml        0 Jul 29 14:40 blah
umask: 003
-rw-rw-r--   1 saml saml        0 Jul 29 14:40 blah
umask: 004
-rw-rw--w-   1 saml saml        0 Jul 29 14:40 blah
umask: 005
-rw-rw--w-   1 saml saml        0 Jul 29 14:40 blah
umask: 006
-rw-rw----   1 saml saml        0 Jul 29 14:40 blah
umask: 007
-rw-rw----   1 saml saml        0 Jul 29 14:40 blah

Existem outros, isso é só para destacar um exemplo!

Então o que você deve fazer?

Dado que você está lidando com um diretório Apache (baseado no caminho /srv/www/htdocs ) eu procuraria por um grupo Unix que seu usuário me e o usuário que o Apache está executando como ambos são membros. Você pode usar o comando groups para determinar isso:

$ groups saml
saml : saml vboxusers jupiter newgrp

$ groups apache
apache : apache

Você também pode usar o comando id :

$ id saml
uid=500(saml) gid=501(saml) groups=501(saml),502(vboxusers),503(jupiter),10000(newgrp)

$ id apache
uid=48(apache) gid=48(apache) groups=48(apache)

No meu sistema, o Apache é executado por um usuário apache . Olhando para este usuário, você pode ver que ele está em um único grupo apache também. Então, uma abordagem seria adicionar o usuário me a esse grupo.

Por exemplo, adicione me aos apache groups:

$ sudo usermod -a -G apache me

A outra abordagem seria criar outro grupo e adicionar apache e me a esse grupo secundário (por exemplo, apacheplus) e, em seguida, executar este comando em /srv/www/htdocs :

$ sudo chgrp -R apacheplus /srv/www/htdocs
    
por 29.07.2013 / 20:49