não permite que um diretório seja excluído, mas cria novos arquivos nele?

2

A pergunta na minha tarefa diz isso:

create a directory temp with all permissions for everybody, that cannot be deleted

and copy hello.sh in this directory giving execution rights for everybody, but hello.sh will be executed as the owner.

Então criei um diretório chamado temp e dei permissões como esta:

chmod 555 temp

mas quando eu tento cp hello.sh para temp eu recebo um erro como temp tem as permissões 555. O que exatamente o professor quis dizer aqui? Como eu não permito que um diretório seja excluído, mas copie arquivos para ele?

    
por varchar1 26.02.2012 / 01:58

2 respostas

7

Considerando que este é um trabalho de casa, não darei uma resposta exata, mas pense nisso: se você recebeu essa tarefa, isso significa que setuid e sticky bits foram explicados a você. Esse conhecimento deve ser suficiente para completar esta tarefa.

    
por 26.02.2012 / 04:02
2

O Linux divide as configurações de permissão em três grupos:

  • Proprietário - o usuário que possui o arquivo
  • Grupo - conjunto de usuários
  • Mundo - Não é proprietário e não faz parte do grupo

A seguinte permissão pode ser concedida:

  • ler
  • Escrever
  • Executar

Você pode usar o comando chmod para definir as permissões para cada grupo ( Owner/User/World ), aplicando as tags desejadas ( Read/Write/Execute ) a cada uma delas. Os dígitos usados para definir as permissões são, na verdade, a representação decimal dos sinalizadores binários ( 0/1 ) configurados por grupo. Por exemplo, você deseja definir permissões que permitirão o seguinte:

  • Proprietário - leia, escreva e execute
  • Grupo - leia e execute (mas não escreva)
  • Mundo - sem permissões

Então, nesse caso, para Owner , teremos: read=1 , write=1 e execute=1 resultando em permissão:

111 -> 7

O Group terá: read=1 , write=0 e execute=1 resultando em permissão:

101 -> 5

E, finalmente, o World terá: read=0 , write=0 e execute=0 resultando em permissão:

000 -> 0

Além disso, você pode definir o que é chamado de sticky bit em um diretório. Isso impedirá que outros usuários excluam ou renomeiem os arquivos dentro desse diretório. Apenas o proprietário pode excluir ou renomear os arquivos dentro desse diretório. Portanto, no seu caso, o comando chmod correto será parecido com este:

chmod 1777 temp

Onde 777 permite read/write/execute para todos os três grupos e o adicional 1 é o bit pegajoso .

    
por 26.02.2012 / 08:30