Protéger un repertoire en shell !!!

Fermé
sarat92 Messages postés 16 Date d'inscription lundi 18 août 2008 Statut Membre Dernière intervention 27 novembre 2012 - 5 nov. 2009 à 01:00
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 - 7 nov. 2009 à 01:25
Bonjour,
j'ai un serveur dédié .je fais appel à un prestataire pour modifier le code et faire des test PHP sur mon site.
toutefois j'aimerais protéger un repertoire précis .j'aimerais que mon prestataire n'ait pas acces à ce repertoire ni au fichier dans ce repertoire .
Comment faire celui en shell ?
Vraiment un grand merci si vous avez une solution
A voir également:

10 réponses

mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
5 nov. 2009 à 01:38
Il suffit qu'il n'ait pas les droits en exécution sur ce fichier. A toi de régler le propriétaire (a priori toi ?) et le groupe propriétaire (avec la commande chown en root) et les droits (avec la commande chmod) en conséquence. Supposons que ce répertoire appartienne à mando et au groupe users auquel ton prestataire appartient. À ce moment-là seul mando doit avoir les droits en exécution sur ce répertoire.
chmod 700 le_repertoire


Si certains de tes collaborateurs doivent en plus de toi y avoir accès, à toi de créer un groupe (par exemple tapir) et d'affecter ce répertoire à ce groupe (voir commande addgroup et le fichier /etc/group). Naturellement le groupe tapir aura les droits en exécution et ton prestataire ne devra pas en faire partie.

sudo chown -R mando:tapir le_repertoire
chmod 770 le_repertoire


Si le groupe tapir ne doit pas pouvoir modifier (juste lire) le contenu du répertoire :

chmod 750 le_repertoire


Pour plus de détails :

man 5 group
man addgroup
man chown
man chmod


Bonne chance
0
sarat92 Messages postés 16 Date d'inscription lundi 18 août 2008 Statut Membre Dernière intervention 27 novembre 2012 3
5 nov. 2009 à 16:01
merci infiniment mamiemando.
je reflechis à tes réponses pour voir si j'ai compris
0
sarat92 Messages postés 16 Date d'inscription lundi 18 août 2008 Statut Membre Dernière intervention 27 novembre 2012 3
5 nov. 2009 à 16:56
je pensais faire quelques choses comme ca:
pour proteger le repertoire le_repertoire
creer un user presta et créer un groupe presta
pour le repertoire protégés le_repertoire
1-affecter au groupe presta le repertoire
chgrp -R presta le_repertoire
2-et lui donner que le droit d'execution
chmod 10
pour les autres répertoires , presta a le meme droit que le proprietaire
d'ou presta peut modifier mon site mais ne peut voir les fichiers dans le repertoire le_repertoire

maintenant comment écrire correctement en shell
0
jerem1985 Messages postés 65 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 19 novembre 2009 2
5 nov. 2009 à 18:00
bonjour
fais sa :
groupadd presta
useradd presta
chown -R presta:presta /ton/path/vers/le_repertoire
chmod 770 /ton/path/vers/le_repertoire
0
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
5 nov. 2009 à 18:59
@jerem1985 : non ca ne marche pas car le répertoire à "protéger" doit justement être refusé à presta.

@sarat92 : idem. Et le chmod est faux. Supposons que tu aies un groupe developer (auquel tu appartiens avec presta) et un groupe admin (auquel tu appartiens avec tes collègues ayant le droit d'aller dans le répertoire protégé, mais pas presta). Ces deux groupes devront être créés avec la commande addgroup et remplis en corrigeant /etc/group. Supposons que ton login soit mando et que tu sois propriétaire des fichiers du projet.

Alors :
1) tous les fichiers appartiennent à mando
2) les fichiers protégés appartiennent au groupe admin, les autres au groupe developer
3) les droits en exécution sont activés uniquement pour le propriétaire et le groupe.

En notation octale voici comment fonctionnent les droits :
- r (read) droits en lecture : vaut 4
- w (write) droits en écriture (supprimer, modifier...) : vaut 2
- x (execute) droits en exécution (pour un répertoire, ceci correspond à pouvoir rentrer dedans) : vaut 1.

Ainsi :
- les droits rwx correspondent en notation octale à 4+2+1=7
- les droits rx correspondent en notation octale à 4+1=5
- aucun droit correspond à 0 en notation octale

Comme tu le sais, les droits sont linux se déclinent en trois jeux de droits rwx, comme le montre la commande "ls -l". Le premier triplet correspond au droit de l'utilisateur, le second au groupe propriétaire, et le troisième aux autres. Comme il y a trois jeux de droits, en theorie ta notation octale devrait comporter 3 chiffres.

Résumons tout ça. Quand tu écris :

chmod 770 mon_repertoire


Ceci revient à donner des droits rwx à l'utilisateur, au groupe, et au aucun droit aux autres.

En espérant que ce soit plus clair pour toi...
0
sarat92 Messages postés 16 Date d'inscription lundi 18 août 2008 Statut Membre Dernière intervention 27 novembre 2012 3
5 nov. 2009 à 20:37
baleze mamiemando.
je suis en train d'essayer de comprendre ta logique .Je crois avoir compris .Il me faut plusieurs heures avant d'êtr bien sur d'avoir .Je répondrais par la suite
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jerem1985 Messages postés 65 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 19 novembre 2009 2
5 nov. 2009 à 19:01
meacoulpa
j'avais compris que seul presta et son group devait accèder au repertoire
0
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
6 nov. 2009 à 00:59
je suis en train d'essayer de comprendre ta logique .Je crois avoir compris .Il me faut plusieurs heures avant d'êtr bien sur d'avoir .Je répondrais par la suite

C'est pas ma logique, c'est celle de linux ^^. Je te rappelle que tu peux voir les droits, le propriétaire et le groupe propriétaire avec la commande ls -l :

(mando@aldur) (~) $ ls -l plop.cpp
-rw-r--r-- 1 mando users 1711 sep 25 11:16 plop.cpp


Ici :
- le propriétaire est mando et il a les droits en lecture et écriture (4+2)
- Le groupe propriétaire est users il a juste les droits en lecture (4)
- Les autres ont juste les droits en lecture (4)
... soit 644 en octal.

Comme tu le vois tu as trois niveaux de permission.

- le propriétaire (qui en général peut faire tout ce qu'il y a à faire) ie lire, modifier, supprimer le fichier et l'exécuter s'il s'agit d'un exécutable ou d'un répertoire. Ainsi sur un répertoire ou un exécutable il aura en général les droits rwx, et sinon les droits rx.
- le groupe utilisateur a généralement des droits égaux ou moindres
- les autres ont généralement des droits encore moindres.

Dans ton cas le but on pourrait imaginer :

-rwxr-x---  mando admin mon_repertoire


Ainsi :
- seul mando peut tout faire (ainsi que root bien sûr) (4+2+1),
- les membres du groupe admin peuvent juste lire et aller dans le répertoire (car les ils ont les droits en exécution) mais pas le supprimer (car ils n'ont pas les droits en écriture) (4+1),
- les autres ne peuvent rien faire (0).
... ce qui donne des droits 650.

En espérant que
0
sarat92 Messages postés 16 Date d'inscription lundi 18 août 2008 Statut Membre Dernière intervention 27 novembre 2012 3
6 nov. 2009 à 15:49
- seul mando peut tout faire (ainsi que root bien sûr) (4+2+1),
- les membres du groupe admin peuvent juste lire et aller dans le répertoire (car les ils ont les droits en exécution) mais pas le supprimer (car ils n'ont pas les droits en écriture) (4+1),
- les autres ne peuvent rien faire (0).
... ce qui donne des droits 650. 

ca m'a l'air tres cohérent tout ca .Du coup le groupe developper qui n'est pas propriétaire du repertoire en question ne peut rien faire (ni voir le code, ni modifier )
Par contre il est préférable qu'il puisse executer et donc plutot 651 car sinon le fichier ne pourra même plus être lu par apache
je suis bon là ou pas ?
0
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
6 nov. 2009 à 16:33
Du coup le groupe developper qui n'est pas propriétaire du repertoire en question ne peut rien faire (ni voir le code, ni modifier ) .

Voilà :-)

Par contre il est préférable qu'il puisse executer et donc plutot 651 car sinon le fichier ne pourra même plus être lu par apache je suis bon là ou pas ?

Il faut effectivement que le fichier appartienne à apache ou que apache appartienne au groupe propriétaire, sinon tu vas avoir un "permission denied" ou message d'erreur voisin.

Bonne chance
0
sarat92 Messages postés 16 Date d'inscription lundi 18 août 2008 Statut Membre Dernière intervention 27 novembre 2012 3
6 nov. 2009 à 16:39
merci mamiemando pour ton aide et ta patience
et comment faire en shell pour que apache appartienne au groupe propriétaire ?
donc 651 t'es d'accord avec moi ?j'aimerais une confirmation de la part d'un connaisseur comme toi
0
jerem1985 Messages postés 65 Date d'inscription lundi 17 novembre 2008 Statut Membre Dernière intervention 19 novembre 2009 2
6 nov. 2009 à 18:08
je sais pas ce que t'appel connaisseur
donc pour confirmer voici une copie du man

DESCRIPTION
La commande usermod modifie les fichiers d´administration des comptes
du système selon les modifications qui ont été indiquées sur la ligne
de commande.

-a, --append
Ajouter l´utilisateur aux groupes supplémentaires. N´utilisez cette
option qu´avec l´option -G.


-G, --groups GROUPE1[,GROUPE2,...[,GROUPEN]]]
A list of supplementary groups which the user is also a member of.
Each group is separated from the next by a comma, with no
intervening whitespace. The groups are subject to the same
restrictions as the group given with the -g option. If the user is
currently a member of a group which is not listed, the user will be
removed from the group. This behaviour can be changed via the -a
option, which appends the user to the current supplementary group
list.


donc si tu fais sa se sera bon

usermod -aG nom-du-group nom-user-a-ajouter-au-group

usermod -aG proprietaire apache

si tu veux vérifier
vi /etc/group
0
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
7 nov. 2009 à 01:25
et comment faire en shell pour que apache appartienne au groupe propriétaire ?

La commande groups permet de retourner le groupe auquel appartient l'utilisateur courant. On peut changer d'utilisateur avec la commande su :

su - apache
groups


Les groupes et membres des groupes sont définis dans /etc/group dont la syntaxe est détaillée ici :

man 5 group


Tu peux sois modifier directement ce fichier, soit utiliser la commande usermod, comme vient de l'indiquer jerem1985.

Bonne chance
0