É possível implementar um sistema de reserva de "nome" usando permissões de arquivo linux

10

Eu tenho um servidor multiusuário linux com mais de 100 usuários em / etc / passwd

Gostaria de permitir que os usuários "reservem" / "reservem" um nome de sua preferência (neste caso, um subdomínio, mas esses detalhes não importam)

Eu criei um diretório chamado /reservationse com o chmod 777.

Se o usuário johndoe sim, touch /reservations/coolsiteele indica que gostaria de "possuir" esse nome "site legal"

O "mecanismo" deve ser configurado para que,

  • johndoe pode mudar de ideia mais tarde e rm /reservations/coolsitecancelar a reserva desse nome

  • outro usuário não tem permissão touch /reservations/coolsite, porque johndoe pediu primeiro.

  • se johndoe rmseu arquivo, outro usuário pode reservar.

  • os usuários não podem rm / rename / mv / etcoutros arquivos de pessoas

  • O usuário johndoe pode ter várias reservas fazendo touch /reservations/coolsite && touch /reservations/coolsite2

Isso é possível usando algum tipo de mecanismo padrão de permissões linux?

Eu odiaria recorrer ao perl por isso, minhas habilidades com o perl tornaram-se enferrujadas desde o dia em que ruby ​​apareceu com seus cabelos loiros ondulados ...

guerreiro ninja americano
fonte
Não vejo nada aqui fora do comum. Tenha o "site legal" criado como "700" (sem permissões para o grupo e outros) e somente o próprio usuário + administrador pode fazer alguma coisa. Todos os outros recebem uma permissão negada.
Rinzwind
Então, instrua manualmente os usuários a se lembrarem do chmod 700 depois touch?
american-ninja-warrior
1
JoshSverns Eu acho que você pode aplicar isso? (com umask). Oh boa @perlduck
Rinzwind
Por que você não pode programá-lo em ruby?
pipe

Respostas:

31

O que você pede para o diretório /reservationsé exatamente como o /tmpdiretório padrão se comporta:

Todo usuário pode criar arquivos lá e somente ele pode excluí-los ou modificá-los. Isso é conseguido pelo tbit (também conhecido como bit pegajoso ) nas permissões. Nenhum usuário precisa de permissões especiais ou umasks então.

Portanto:

chown root /reservations
chmod 1777 /reservations

é tudo o que você precisa. A chown rooté apenas para impedir que outros usuários (regulares) de brincar com esse diretório. Não é realmente necessário. Leia mais sobre a parte difícil aqui:

PerlDuck
fonte