Definindo nome de usuário e grupo padrão para arquivos no diretório

9

Usando este post útil eu sou capaz de definir um grupo padrão e permissões de arquivo em uma pasta.

Estou tendo problemas para configurar um proprietário padrão (teamlead uid 1234).

setfacl -d -m g::rwx /my/test/folder
setfacl -d -m o::rx /my/test/folder

getfacl /my/test/folder

# file: /my/test/folder
# owner: teamlead
# group: web_prod
# flags: -s-
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x

Com isso:

[mary@boxen]# touch /my/test/folder/somefile
[mary@boxen]# ll /my/test/folder/somefile
-rw-rw-r--. 1 mary web_prod 0 Nov  6 08:58 somefile

Assim, o grupo certo é atribuído, mas o novo arquivo tem a propriedade do usuário que criou o arquivo. Gostaria que os arquivos recém-criados tivessem teamlead: web_prod owner / group.

Parece que setfacl pode ser usado para definir um usuário padrão também. Com a pasta existente acl config (acima):

[mary@boxen]# setfacl -d -m u:1234:rwx /my/test/folder

Agora, crie um arquivo como um usuário diferente. Espero que ele tenha teamlead: propriedade web_prod.

[mary@boxen]# touch /my/test/folder/anotherfile
[mary@boxen]# ll /my/test/folder/anotherfile
-rw-rw-r--+ 1 mary web_prod 0 Nov  6 08:58 somefile

O novo arquivo ainda possui a propriedade do proprietário que criou o arquivo, não o uid 1234 (teamlead).

O que eu estou procurando é possível, ou o jeito que estou indo é errado?

    
por a coder 06.11.2013 / 15:24

4 respostas

13

Com o setfacl, você pode definir permissões padrão, mas não o proprietário / grupo padrão para arquivos recém-criados.

Para obter novos arquivos pertencentes a um usuário específico, você precisa de um bit setuid que funcione como o bit setgid nos diretórios. Infelizmente isso não está implementado.

Com o setfacl, você pode fazer algo quase equivalente na maioria dos cenários: você pode definir uma ACL como default:user:teamlead:rwx . Dessa forma, o usuário nomeado pode escrever os novos arquivos, mesmo que alguém o possua.

    
por 06.11.2013 / 17:15
8

Um novo arquivo é sempre criado pertencente ao usuário no qual o processo de criação do arquivo está sendo executado. (O ID do usuário efetivo, para ser preciso.) Isso não pode ser alterado, porque permitir que os usuários criem arquivos pertencentes a outros usuários seria buraco de segurança, semelhante a permitindo que usuários não-root forneçam um arquivo .

Não importa o que você esteja tentando fazer, você não precisa fazer isso. As ACLs são suficientes para garantir que o que precisar ler o arquivo posteriormente terá permissões suficientes. Deixe o arquivo de propriedade do usuário que o criou.

    
por 06.11.2013 / 23:23
0

No Linux, você precisa ter o sgid no diretório pai para herdar o grupo de arquivos. (Embora você não precise de sgid no diretório dos sistemas BSD.)

    
por 06.11.2013 / 16:00
0

Se você quiser que os novos arquivos sejam criados com o novo grupo, será necessário alterar o grupo principal.

Para isso você pode usar usermod e o parâmetro -g

   -g, --gid GROUP
       The group name or number of the user's new initial login group. The group must exist.
       Any file from the user's home directory owned by the previous primary group of the user will be owned by this new group.
       The group ownership of files outside of the user's home directory must be fixed manually.

por exemplo,

test2@kinakuta:/tmp$ id
uid=1002(test2) gid=1002(test2) grupos=1002(test2),1003(testgroup)
test2@kinakuta:/tmp$ touch test2
test2@kinakuta:/tmp$ ls -la test2
-rw-r--r-- 1 test2 test2 0 nov 23 22:26 test2
root@kinakuta:/tmp# usermod -g testgroup test2
root@kinakuta:/tmp# su test2
test2@kinakuta:/tmp$ touch test2_1
test2@kinakuta:/tmp$ ls -la test2_1 
-rw-r--r-- 1 test2 testgroup 0 nov 23 22:27 test2_1
    
por 23.11.2016 / 22:29