web-dev-qa-db-fra.com

Comment empêcher l'annuaire d'être supprimé par l'utilisateur?

Supposons qu'un répertoire dir1 soit créé par Sudo sur le bureau.

Sudo mkdir dir1

Ensuite, j'ai appliqué chown et chmod comme suit:

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

Maintenant, dir1 est uniquement accessible avec le propriétaire root.

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

Si l'utilisateur ($USER = pandya) tente de supprimer dir1 avec GUI nautilus (sans Sudo), il ne peut pas ce qui est ok.

enter image description here

Mais si essayé de supprimer avec terminal alors il peut ce qui n'est pas correct: -

  • rm -r (sans Sudo):

     $ rm -r dir1
     rm: descend into write-protected directory ‘dir1’? Y
     rm: remove write-protected directory ‘dir1’? Y
     $
    
  • Et plus facilement avec rmdir! (Sans Sudo):

    $ rmdir dir1
    $ 
    

Ainsi, comment empêcher dir1 d'être supprimé avec l'utilisateur que pas Sudo?

[optionnel]
Mon objectif ultime est le suivant: seul le propriétaire peut supprimer un répertoire, un groupe et d’autres uniquement en lecture/exécution.

4
Pandya

Ce qui est dit Class Stacker à sa réponse est correct, mais cela n'a pas résolu votre problème. Pour empêcher un répertoire d'être supprimé par l'utilisateur qui détient tous les droits sur le répertoire parent (/home/pandya dans votre cas), vous devez utiliser la commande chattr.

Voici un exemple:

$ 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

Et dans Nautilus:

enter image description here

Veuillez lire man chattr pour plus d'informations.

5
Radu Rădeanu

En fait, les répertoires sont des fichiers spéciaux.

Dans un répertoire /home/user, le droit de créer ou de supprimer des entires (tels que des fichiers ou des répertoires) est déterminé par les droits de /home/user lui-même et non par les droits des entrées.

Dans votre cas, il serait préférable de fournir un sous-répertoire, tel que /home/user/fixed, et de définir les droits de celui-ci sur r-x. Ensuite, l'utilisateur sera incapable de créer ou de supprimer des fichiers ou des répertoires. Il peut toujours être en mesure d’éditer, de descendre, etc. en fonction des droits des fichiers et des répertoires individuels à l’intérieur de /home/user/fixed.

2
Run CMD