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

11

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

Eu gostaria de permitir que os usuários "reservem" / "reservem" um nome de seu gosto (neste caso, um subdomínio, mas os detalhes não importam)

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

Se o usuário johndoe, touch /reservations/coolsite , ele indica que ele gostaria de "possuir" esse nome "coolsite"

O "mecanismo" deve ser configurado para que

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

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

  • se johndoe rm do seu arquivo, outro usuário pode reservar.

  • os usuários não podem rm / rename / mv / etc outros 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 de permissões padrão do Linux?

Eu odiaria recorrer ao perl para isso, minhas habilidades perl tornaram-se enferrujadas desde o dia em que Ruby veio junto com seus cabelos loiros ondulados ...

    
por american-ninja-warrior 29.12.2017 / 15:01

1 resposta

32

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

Todo usuário pode criar arquivos lá e somente ele pode deletá-los ou modificá-los. Isso é obtido pelo t bit (também conhecido como sticky bit ) nas permissões. Nenhum usuário precisa de permissões especiais ou filhas então.

Assim:

chown root /reservations
chmod 1777 /reservations

é tudo que você precisa. O chown root é apenas para evitar que outros usuários (regulares) fujam com esse diretório. Não é realmente necessário. Leia mais sobre a parte pegajosa aqui:

por PerlDuck 29.12.2017 / 15:23