Como posso permitir que o usuário jenkins grave em um diretório específico sob o diretório inicial do usuário minecraft?

1

Estou usando o Jenkins, quero copiar um arquivo do diretório Jenkins para o diretório de usuário minecraft , mas não sei como fazer isso, como quando eu executo

cp build/versions/*.info /home/*minecraft*/www/files/Minecraft/versions

Recebo 'Permissão negada'

    
por user3809867 07.07.2014 / 12:59

1 resposta

4

A maneira tradicional seria usar grupos. Usuário Jenkins é adicionado ao grupo de minecraft (o grupo de corrosão para minecraft usuário). Em seguida, o usuário do minecraft fornece as permissões de gravação do grupo de minecraft para o diretório em questão (por exemplo, chmod g+w ~minecraft/some_directory ). É claro que também é possível (para root) criar um grupo personalizado para ser usado com este diretório (por exemplo, um novo grupo de máquinas de escrever ou algo assim). Se o minecraft-user for o administrador do minecraft-group, ele poderá adicionar usuários ao grupo com gpasswd -a user group ( gpasswd -a jenkins minecraft ). Caso contrário, root deverá adicionar usuários ao grupo.

Uma maneira mais nova, melhor e mais apurada (embora um pouco complexa) é utilizar as Listas de Controle de Acesso (acl), em que o proprietário de um arquivo ou diretório pode conceder a usuários específicos e / ou grupos acesso a um arquivo ou diretório . O minecraft-user apenas adicionaria jenkins à "lista de acesso" do diretório em questão, e daria ao jenkins permissões de gravação para o diretório.

setfacl -m user:jenkins:rwx ~minecraft/some_directory

Isso dará ao usuário jenkins o direito de criar novos arquivos (w), listar os contens com ls (r) e mudar para o diretório (x).

+++

O acesso a arquivos e diretórios é um pouco dependente do acesso dos usuários aos diretórios acima. Se o usuário jenkins não puder entrar no diretório home do usuário minecraft (/ home / minecraft), ele não poderá acessar nenhum diretório sob ele ... mesmo que tenha recebido permissão com chmod ou setfacl para o diretório específico.

Assim, o usuário minecraft deve implicitamente ou explicitamente dar ao usuário jenkins pelo menos execute (x) permissão para seu diretório home (e todos os diretórios entre seu diretório home e o diretório jenkins devem ter permissão para escrever para). Executar permissão para um diretório, dá o direito de "entrar" no diretório (por exemplo, com o comando cd ). A maioria dos usuários também terá acesso à permissão de leitura (r) - que lhes dá o direito de listar o conteúdo do diretório com comandos como ls - para que eles possam se orientar.

Se as permissões do diretório home do minecraft já forem 'rwxr-x ---' ou 'rwxr-xr-x' (o que geralmente é), isso é suficiente ... se for 'rwx ----- - 'então o acesso deve ser modificado para dar ao menos membros do grupo de minecraft - ou usuário jenkins - acesso.

+++

Também é uma boa idéia adicionar o sticky-bit ao diretório que os jenkins devem ter permissão para gravar (por exemplo, chmod a+t ~minecraft/some_directory ). Isso impede que os usuários com permissões de gravação em um diretório excluam arquivos pertencentes a outros usuários (com exceção do proprietário do diretório, que ainda pode excluir arquivos).

    
por 07.07.2014 / 13:34