Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/01/2009, à 13:58

Samuelion

Droit recursif d'execution sur dossier mais pas sur fichiers

Bonjour, bonjour.

Utilisateur depuis quelques temps de linux, je me met pour la première à chercher à gérer le multi-user. Je cherche par conséquent à modifier un peu les droits pour rendre des fichiers personnels et d'autres communs à plusieurs users.
Et évidement je rencontre quelques difficultés smile.

Après quelques frayeurs avec un /home illisible, et tout, je voulais ressortir un /home avec des droits corrects et j'ai donc fait un chmod 750 sur le répertoire (why not) mais ce qui m'embête, c'est que tout les fichiers se retrouvent avec des droits d'exécutions, des simples txt aux ogg. Au contraire, avec un chmod 640, je supprimer le droit d'exécution des répertoires et je peux plus naviguer via nautilus.

Y a t il une solution pour rendre tous les fichiers d'un répertoire non exécutable et mettre ses directory exécutables ?

2ème question : moins importante car je pense pouvoir trouver la réponse en fouillant (je la pose quand même au cas où qqun soit plus rapide que moi smile ).
Je crée d'autres users. Je modifie leur /home en 770 et je m'inclus dans le groupe de ces nouveaux users. Je peux donc gérer leur config depuis mon user principal mais la création de fichier à l'intérieur reste avec mon nom et mes droits.

Je crois que les droits des fichiers crée se gère avec l'UMASK mais je sais pas trop comment ça marche, quand aux possesseurs des fichiers crées ? Je crois qu'il faut des droits d'admin pour changer le user, mais si le nom du group pouvait devenir celui du dossier ou je trifouille ainsi qu'avec les droits du dit dossier, l'utilisateur final ne sera pas gêné ... je crois me souvenir d' un chmod s ?

Merci d'avance smile.
Samµ.

Hors ligne

#2 Le 24/01/2009, à 15:03

ohmbar

Re : Droit recursif d'execution sur dossier mais pas sur fichiers

avec find xargs et chmod +x (-x)
comme tu es "Utilisateur depuis quelques temps de linux" je te laisse le soin de faire la commande si le coeur t'en dis, sinon je me ferai un plaisir de t'aider...

Hors ligne

#3 Le 24/01/2009, à 19:44

Samuelion

Re : Droit recursif d'execution sur dossier mais pas sur fichiers

Je suis utilisateur depuis quelques temps mais plus amateur que connaisseur tongue.
Je pense m'en être sorti pour tous les fichiers avec extension smile.

Je ne maitrise pas du tout le xargs smile mais j'avais réussi à choper une ligne intéressante que je réutilise de temps en temps ^_^.
J'en suis donc à un.
find /home/myuser -name "*.*" -print0 | xargs -0 chmod 640
On peut aussi peut-être faire un truc comme ça ?
find /home/myuser -name "*.*" -exec chmod 640 {}; . Connais pas trop la syntaxe du -exec yikes

Le problème étant que les fichiers avec extensions sous linux ne sont pas forcement les plus courant. Je dois reconnaitre que je ne sais pas comment faire néanmoins pour distinguer via find un répertoire d'un fichier, vu que rien dans leur nom n'indique ce qu'il est.
Je pensais jouer avec le -regex et filtrant les chemins se terminant par / mais hélas les répertoires sont sans le / de fin sad.
Je fais appel à mon joker, avis du public smile.

Merci encore tongue.

Edit : Aie !! Ça marche pas !!
Ouh pas top on va dire, ça me prend aussi les dossiers cachés !! (c'est vrai qu'ils ont un point <_<).
Je crois qu'un script bash sera plus simple hmm avec un truc du style if -x sauf que je connais pas encore le bon test, je fouille tongue.

ReEdit :
#!/bin/bash
for myfile in *; do
    if [ ! -d "$myfile" ]; then
        chmod 640 "$myfile"
    fi
done

C'est un peu lourd mais ça marche smile. Enfin que sur les fichiers du répertoire courant mais ce sera pas le plus compliqué à changer smile.
C'est marrant, au plus j'avance, et au plus j'ai l'impression de reculer smile. La formule ci-dessus marche, sauf pour les fichiers à espace !! >_<.

J'en suis à ça maintenant :
    find "$Repertory" -name "*" | while read myfile
        do if [ ! -d "${myfile}" ]; then
            chmod "$Rules" "${myfile}"
        fi
    done
Ça à l'air de tourner .... jusqu'à preuve du contraire !!!

Reste plus que je me renseigne sur l'umask et le groupe auquel appartient les nouveaux fichiers crées smile.

Dernière modification par Samuelion (Le 25/01/2009, à 14:24)

Hors ligne

#4 Le 08/04/2009, à 13:50

teke

Re : Droit recursif d'execution sur dossier mais pas sur fichiers

il y a peut être plus simple :
pour les fichier

$ find . -type f -exec chmod [mesdroits] \;

pour les dossier

$ find . -type d -exec chmod [mesdroits] \;

le {\;} à la fin est important...
Si tu utilise la récursion de la commande chmod, tu peux mettre un X (x majuscule) pour ne toucher que les dossiers :

$ chmod -r u-x+Xrw,u-xw+Xr,o-Xxrw .

#5 Le 10/04/2009, à 13:55

Samuelion

Re : Droit recursif d'execution sur dossier mais pas sur fichiers

Nikel ça !!
J'ignorais que le chmod pouvait faire ça !!
En même temps, c'est une fonctionnalité basique. Ca me paraissait aussi bizarre de devoir faire autant d'efforts pour arriver à mes fins.
Merci beaucoup !!

Hors ligne

#6 Le 22/05/2012, à 22:35

mohican

Re : Droit recursif d'execution sur dossier mais pas sur fichiers

Précision (avec avoir pal mal tâtonné hmm )
Rappel du problème : on veut avoir les droits d'exécution sur les dossiers mais pas sur les fichiers, et on opère récursivement.

si les fichiers situés dans les sous-dossiers ont les droits -rwxrwx--- (770) et que l'on veut les mettre en -rw-rw---- (660),
la commande

chmod -R u-x+X,g-x+X *

ne vas rien faire car X concerne à la fois les dossiers ET les fichiers qui ont un x quelque part. Donc si u-x enlève le premier x (ce qui donne -rw-rwx---), la suite +X va aussitôt remettre un x car il reste un x (celui du groupe !).
Vous suivez ? big_smile
Donc il faut d'abord enlever tous les x : u-x,g-x avant de les remettre (sera fait uniquement pour les dossiers cette fois)
ce qui donne finalement :

chmod -R u-x,g-x,u+X,g+X *

-> j'ai mis des explications dans la page "permissions" de la doc.

Dernière modification par mohican (Le 22/05/2012, à 23:31)


mohican, plus tout à fait débutant sur Ubuntu

Ub 22.04 // Mint 21 Xfce // Mint 21 Cinnamon // Win7 SP1

Hors ligne