Alionet - Communauté openSUSE francophone

openSUSE => Général => Discussion initiée par: xiloa le 02 Mars, 2020, 14:18:43

Titre: protéger sans verrouiller un repertoire
Publié par: xiloa le 02 Mars, 2020, 14:18:43
Bonjour
Je voudrais protéger le nom et l'emplacement d'un répertoire, sans toutefois interdire ou géner l'utilisation de celui ci ( pouvoir ecrire à l'intérieur, ajouter ou enlever des fichiers ) . 
une astuce ?
Titre: Re : protéger sans verrouiller un repertoire
Publié par: oh!rocks le 02 Mars, 2020, 15:59:43
Salut,

Peut-être avec ACL ?

https://fr.wikipedia.org/wiki/Access_Control_List

man acl(5)


à plus,
oh!rocks
Titre: Re : protéger sans verrouiller un repertoire
Publié par: bendia le 02 Mars, 2020, 19:41:06
Salut :)


Ben, il n'y a pas besoin de ça à mon sens, les droits unix le permettent nativement

cd /tmp
sudo mkdir plop #on créé un dossier dont le propriétaire et le groupe sont root
ls -l
drwxr-xr-x 2 root root  40  2 mars  19:22 plop
sudo chown :users plop/ #on change le groupe propriétaire en users, dont chaque utilisateur créé est membre par défaut
ls -l
drwxr-xr-x 2 root users 40  2 mars  19:22 plop
sudo chmod g+w plop/ #on ajoute le droit d'écriture au groupe propriétaire
ls -l
drwxrwxr-x 2 root users 60  2 mars  19:29 plop
rmdir plop
rmdir: impossible de supprimer 'plop/': Opération non permise
mv plop pouet
mv: impossible de déplacer 'plop' vers 'pouet': Opération non permise
#Le dossier est donc protégé contre le renommage ou l'effacement
touch plop/coucou
ls -l plop
-rw-r--r-- 1 user users 0  2 mars  19:29 coucou #On peu bien écrire dans le dossier comme on veut
Voilà, il suffit juste de créer un répertoire avec les droits 77n, et de mettre les utilisateurs dans le groupe propriétaire du répertoire.

Edit : correction signalé par Denebe, merci à lui
Titre: Re : protéger sans verrouiller un repertoire
Publié par: xiloa le 05 Mars, 2020, 11:38:53
Bonjour
Merci de vos réponses. Salut Oh!Rocks !! Ca fait un moment que l'on ne s'est croisé !

Je comprends le principe posé par bendia. C'est ce que je cherche à faire, mais l'enchainement des commandes ne fonctionnent pas
:(

sur le principe, il faudrait que je passe la propriété de groupe du répertoire plop à un groupe autreque users pour que ses membres ( ceux du groupe users ndlr) ne puisse modifier le repertoire  ?
Titre: Re : protéger sans verrouiller un repertoire
Publié par: bendia le 05 Mars, 2020, 13:39:04
sur le principe, il faudrait que je passe la propriété de groupe du répertoire plop à un groupe autreque users pour que ses membres ( ceux du groupe users ndlr) ne puisse modifier le repertoire  ?
Oui, c'est ça je pense. Tu peux créer un  groupe spécifique pour ton usage, et y ajouter les utilisateurs qui peuvent y accéder.

Je ne suis pas encore trop habitué aux outils graphiques de Suse, mais je pense que ça peut se faire avec Yast User and groups, ou sinon, en ligne de commande avec
groupadd tonNouveauGroupe #création du nouveau groupe
useradd -G tonNouveauGroupe tonLogin #ajout de l'utilisateur au nouveau groupe
Je crois qu'il faut se déconnecter de la session graphique (voire redémarrer, je ne sais plus) pour que l'ajout au groupe soit effectif.
Titre: Re : protéger sans verrouiller un repertoire
Publié par: xiloa le 05 Mars, 2020, 17:04:29
Bonjour
Merci, on  peut utiliser yast pour creer des groupes , mais la ligne de commande fonctionne bien aussi et est souvent plus rapide.

Par contre, je n'arrive toujours pas au resultat escompté, que je précise : je veux protéger le nom et l'emplacement d'un répertoire, sans  toutefois priver un groupe autorisé ( ou un utilisateur autorisé ) d'ecrire à l'intérieur, ajouter , renommer, retirer, modifier des fichiers à l'intérieur.
Je cale
Titre: Re : protéger sans verrouiller un repertoire
Publié par: chalu le 05 Mars, 2020, 17:09:28
Tu le créés où ton répertoire ?
Titre: Re : protéger sans verrouiller un repertoire
Publié par: bendia le 05 Mars, 2020, 21:36:58
Comme dit chalu, ça serait effectivement plus simple avec des infos sur l'arborescence et une description plus précise de ce qui ne colle pas au résultat escompté (le répertoire est renomable ou effaçable, personne ne peut y écrire ... )

Néanmoins, j'ai oublié une information importante au dessus, il faut le droit d’exécution pour qu'un répertoire soit traversable.

Exemple

tree -pug
.
└── [drwxr----- root     users   ]  pouet
    └── [drwxr-xr-x root     users   ]  pinpon
#on voit que les membres du groupe users on théoriquement accès en lecture au répertoire pinpon
cd pouet/pinpon
bash: cd: pouet/pinpon: Permission non accordée
# Ceci-dit, le répertoire reste inaccessible car le répertoire pouet n'a pas les droits d’exécution pour le groupe users 
Titre: Re : protéger sans verrouiller un repertoire
Publié par: xiloa le 06 Mars, 2020, 10:58:37
Tu le créés où ton répertoire ?
dans ~/
par exemple ~/NotreBeauProjetDeConqueteDuMonde
Je veux qu'il soit accessible, qu'on puisse travailler à l'intérieur ( on = groupe users ou autre ad hoc), mais que personne ne puisse le renommer ni le déplacer meme par inattention. 

ça à l'air simple, mais pas en fait.
Titre: Re : protéger sans verrouiller un repertoire
Publié par: oh!rocks le 06 Mars, 2020, 11:40:52
Salut Xiloa,

 "sticky bit" pourrait correspondre ?

https://tech.feub.net/2008/03/setuid-setgid-et-sticky-bit/


à plus,
oh!rocks
Titre: Re : protéger sans verrouiller un repertoire
Publié par: chalu le 06 Mars, 2020, 12:12:29

dans ~/
par exemple ~/NotreBeauProjetDeConqueteDuMonde
Je veux qu'il soit accessible, qu'on puisse travailler à l'intérieur ( on = groupe users ou autre ad hoc), mais que personne ne puisse le renommer ni le déplacer meme par inattention. 

ça à l'air simple, mais pas en fait.
~/ c'est le home de l'utilisateur 1 connecté, l'utilisateur 2 aurait accès au home de l'utilisateur 1 ?
Tu n'es pas clair sur ce qui ne fonctionne pas comme tu veux,  comme le dit Bendia, il faudrait que tu sois plus explicite. :)
Titre: Re : protéger sans verrouiller un repertoire
Publié par: bendia le 06 Mars, 2020, 19:59:04
Oui, il faut des détails, là, parce-que viens d'essayer dans le home d'un user d'écrire dans un dossier je viens d'essayer, et ça fonctionne ...

.
├── [drwxrwx--- machin      users   ]  MonProjetQuiTue
│   └── [-rw-r--r-- test     users   ]  plop

Le seul truc qui coince, c'est le mode 622 sur le fichier, qui interdit au groupe de modifier le fichier. Il faut donc un chmod pour donner accès au groupe users.

Ca ce règle avec umask, mais je ne sais pas comment automatiser ça pour que ça n'ait lieu que dans le répertoire commun  :-[
Titre: Re : protéger sans verrouiller un repertoire
Publié par: xiloa le 13 Mars, 2020, 13:01:25
Bonjour
Merci de vos réponses.

Pour préciser ce que je veux faire : je veux verrouiller un répertoire pour ne pas l'effacer, le renommer, ou le déplacer par erreur.
Je veux par contre continuer à pouvoir faire ce que je veux à l'intérieur.
 
Titre: Re : protéger sans verrouiller un repertoire
Publié par: denebe le 17 Mars, 2020, 12:08:16
@Bendia
Dans ta réponse#2 (https://www.alionet.org/index.php?topic=247.msg2006#msg2006), pour ajouter les droits d’écriture au groupe du répertoire ''plop', c'est
sudo chmod g+w plop
qu'il faut écrire. (tu as glissé un 'x' à la place...)
Titre: Re : protéger sans verrouiller un repertoire
Publié par: denebe le 17 Mars, 2020, 12:29:34
Je viens de trouver une commande pas mal chez tux-planet.fr (http://www.tux-planet.fr/empecher-la-suppression-dun-fichier-ou-dun-repertoire/)
C'est chattr.
Je cite le wiki (https://fr.wikipedia.org/wiki/Chattr):
chattr [-RVf] [-+=AacDdijsSu] [-v version] fichiers

    -R pour la récursivité
    +i pour définir le bit d’immutabilité pour empêcher root ou tout autre utilisateur d’effacer ou de changer un fichier.
    -i pour retirer le bit d’immutabilité
Concrètement, pour interdire toute personne, même root, d'effacer ou de renommer un répertoire:
sudo chattr +i -R foldername
Pour revenir en arriere, permettre a nouveau un effacement ou un renommage:
sudo chattr -i -R foldername

C'est pareil pour avec un fichier, mais sans le paramètre +-R

Par contre, je n'arrive pas à écrire dans le répertoire (avec ou sans -R), c'est gênant...
Oui, en fait cette commande ne convient pas je pense, le 'man chattr' donne
A file with the 'i' attribute cannot be modified: it cannot be deleted or renamed, no link can be created to this file and no data can be written to the file.  Only the  superuser  or  a process possessing the CAP_LINUX_IMMUTABLE capability can set or clear this attribute.
Titre: Re : protéger sans verrouiller un repertoire
Publié par: denebe le 17 Mars, 2020, 15:32:43
je veux verrouiller un répertoire pour ne pas l'effacer, le renommer, ou le déplacer par erreur.
Je veux par contre continuer à pouvoir faire ce que je veux à l'intérieur.
En tant que 'root' ou bien en tant qu' utilisateur normal ?

- En tant que root, c'est possible c.f. ma reponse au dessus, par contre tu ne pourras plus rien faire dans ce repertoire...
- En tant qu'utilisateur normal, @bendia a donne une reponse qui fonctionne, et avec laquelle tout reste possible dans le repertoire.
Titre: Re : protéger sans verrouiller un repertoire
Publié par: chalu le 14 Avril, 2020, 12:11:33
Salut Xiloa,

 "sticky bit" pourrait correspondre ?

https://tech.feub.net/2008/03/setuid-setgid-et-sticky-bit/


à plus,
oh!rocks
 
 ça semble être ça d'après ce que j'ai aussi trouvé sur le wiki d'ubuntu
https://doc.ubuntu-fr.org/permissions#droits_speciaux
la flag t au lieu de x comme pour le répertoire /tmp du système
Citer
le bit restriction de suppression ou Sticky permet quant à lui de restreindre la suppression d'un fichier ou répertoire à son seul propriétaire