Como evitar que o diretório seja excluído pelo usuário?

4

Suponha que um diretório dir1 seja criado por sudo on Desktop.

sudo mkdir dir1

Em seguida, apliquei chown e chmod da seguinte forma:

sudo chown root:root dir1
sudo chmod go-rwx dir1

Agora, dir1 é acessível somente pelo proprietário root .

$ ls -ld dir1
drwx------ 2 root root 4096 Jul 29 19:21 dir1

Se o usuário ( $USER = pandya ) tentar excluir dir1 com Nautilus da GUI (sem sudo ) , ele não poderá , o que é aceitável .

Mas se tentou remover com terminal, então ele pode, o que não é ok: -

  • rm -r (sem sudo ):

     $ rm -r dir1
     rm: descend into write-protected directory ‘dir1’? Y
     rm: remove write-protected directory ‘dir1’? Y
     $
    
  • E mais facilmente com rmdir ! (sem sudo):

    $ rmdir dir1
    $ 
    

Assim, como evitar que dir1 seja excluído do usuário, em vez de sudo ?

[opcional]
Meu objetivo final é: Somente o proprietário pode excluir o diretório, o grupo e outros somente podem ler / executar.

    
por Pandya 29.07.2014 / 16:02

2 respostas

5

O que disse Class Stacker em sua resposta está correta, mas não resolveu seu problema. Para evitar que um diretório seja excluído pelo usuário que possui todos os direitos do diretório pai ( /home/pandya no seu caso), você precisa usar o comando chattr .

Aqui está um exemplo:

$ sudo mkdir dir1
$ sudo chattr +i dir1
$ rmdir dir1
rmdir: failed to remove ‘dir1’: Operation not permitted
$ rm -r dir1
rm: remove write-protected directory ‘dir1’? y
rm: cannot remove ‘dir1’: Operation not permitted
$ chattr -i dir1
chattr: Permission denied while setting flags on dir1

E no Nautilus:

Por favor, leia man chattr para mais informações.

    
por Radu Rădeanu 30.07.2014 / 11:50
2

Na verdade, os diretórios são arquivos especiais.

Em um diretório /home/user , o direito de criar ou remover entradas (como arquivos ou diretórios) é determinado pelos direitos de /home/user , não pelos direitos das entradas.

No seu caso, seria melhor fornecer um subdiretório, como /home/user/fixed , e definir os direitos dele para r-x . Em seguida, o usuário não poderá criar ou excluir arquivos ou diretórios. Ele ainda pode editar, descender, etc. com base nos direitos dos arquivos e diretórios individuais dentro de /home/user/fixed .

    
por Run CMD 29.07.2014 / 16:08