RHEL - desmascarar permanentemente todas as subpastas e arquivos

1

Sou novo no RHEL e estou tendo problemas para desmascarar coleções de diretórios.

Eu tenho uma pasta onde o conteúdo será gerado conteúdo de um script python. As subpastas existirão por um período e serão excluídas. As pastas foram originalmente mascaradas com um usuário capaz de ler / escrever para elas, mas recentemente precisávamos permitir que qualquer pessoa acessasse essas pastas. Eu corri o comando unmask na pasta com o -R (opção recursiva) para desmascarar todas as subpastas e arquivos. Parecia funcionar até que o novo conteúdo fosse gerado e o mesmo problema do BAM, as pastas e os arquivos estivessem mascarados.

Como desmascarar permanentemente todas as subpastas e arquivos de uma pasta? Eu preciso que esses arquivos sejam acessíveis a todos com acesso create / read / write.

    
por code base 5000 28.08.2013 / 12:08

1 resposta

1

O processo que está criando os arquivos é o problema. Este processo / programa está sendo executado com um dado umask tal que quando ele cria arquivos, os arquivos recém-criados serão criados com um umask específico. Você tem basicamente 3 opções:

  1. Modifique umask de processos

    Dependendo do processo (servidor web), provavelmente não é o que você deseja fazer.

  2. Adicione um grupo

    A maneira mais amigável de fazer isso seria criar um grupo Unix (dados da web), novamente se for um conteúdo relacionado ao servidor web que todos precisam acessar. Em seguida, altere o grupo de nível superior dos diretórios em questão, para que eles sejam de propriedade / acessíveis por membros de dados da Web do grupo.

    Em seguida, execute comandos semelhantes a estes para criar os dados da web do grupo de diretórios e forçar o grupo a ficar fixo, para que todos os novos arquivos / pastas criados sejam criados com esse grupo como padrão.

    $ chgrp web-data /path/to/dir
    $ find /path/to/dir -type d -exec chmod g+xs {} +
    

    Por fim, adicione o usuário do servidor da web (apache) a esse grupo junto com outros que precisam acessar esse diretório.

  3. use listas de controle de acesso (ACLs)

    Você pode usar as ferramentas setfacl e getfacl para manipular as ACLs em um determinado diretório ou arquivo.

    Exemplo

    Como root:

    $ mkdir somedir
    $ getfacl somedir
    # file: somedir
    # owner: root
    # group: root
    user::rwx
    group::r-x
    other::r-x
    

    Agora adicione o acesso do usuário sam ao diretório.

    $ setfacl -Rm u:sam:r-x,d:sam:r-x somedir
    getfacl somedir/
    # file: somedir
    # owner: root
    # group: root
    user::rwx
    user:sam:r-x
    group::r-x
    mask::r-x
    other::r-x
    default:user::rwx
    default:user:sam:r-x
    default:group::r-x
    default:mask::r-x
    default:other::r-x
    

    Agora, todos os diretórios e / ou arquivos subseqüentes que forem criados terão seus diretórios configurados para que o usuário sam possa acessá-los:

    $ mkdir anotherdir
    $ echo "hello world" > anotherfile
    

    Confirme as permissões:

    $ getfacl another*
    # file: anotherdir
    # owner: root
    # group: root
    user::rwx
    user:sam:r-x
    group::r-x
    mask::r-x
    other::r-x
    default:user::rwx
    default:user:sam:r-x
    default:group::r-x
    default:mask::r-x
    default:other::r-x
    
    # file: anotherfile
    # owner: root
    # group: root
    user::rw-
    user:sam:r-x            #effective:r--
    group::r-x          #effective:r--
    mask::r--
    other::r--
    

    Agora como usuário sam :

    $ more anotherfile 
    hello world
    

    Se outro usuário precisar de acesso semelhante, simplesmente execute novamente o comando setfacl usando o nome de usuário desse usuário no lugar de sam .

    A abordagem acima pode ser modificada para que, em vez de um único usuário receber acesso, um grupo de usuários possa receber acesso.

Referências

por 28.08.2013 / 15:14