Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

groupe par d

8 réponses
Avatar
denist
Bonjour

Est-il possible de forcer un répertoire/fichier à appartenir à un groupe
donné ?

Exemple :

#ls -alh /home/jean
drwxrwx--- 5 jean apache 4.0K Jun 6 13:11 jean

Pour ce j'ai fais :

chgrp -R apache /home/jean
chmod -R g+rwX /home/jean

"Mais" quand jean créé un dossier via FTP ou SSH, il appartient alors au
groupe jean. Est-il possible de contraindre le système à donner comme
groupe propriétaire apache à tout le contenu de /home/jean ?

Si c'est impossible je vais être obligé de jouer avec cron et ça ne
m'enchante pas.

Merci d'avance

8 réponses

Avatar
Alex
Le 07-06-2011, denist a écrit:
Bonjour




Bonjour,

Est-il possible de forcer un répertoire/fichier à appartenir à un groupe
donné ?

Exemple :

#ls -alh /home/jean
drwxrwx--- 5 jean apache 4.0K Jun 6 13:11 jean

Pour ce j'ai fais :

chgrp -R apache /home/jean
chmod -R g+rwX /home/jean

"Mais" quand jean créé un dossier via FTP ou SSH, il appartient alors au
groupe jean. Est-il possible de contraindre le système à donner comme
groupe propriétaire apache à tout le contenu de /home/jean ?




Il faut utiliser le bit setgid: man chmod. Cela sert à attribuer a tous
les fichiers ou répertoires créés dans le répertoire contenant le bit
setgid le groupe de référence de ce répertoire. Si le répertoire
appartient au groupe 'apache', alors tous les fichiers et répertoires
créés auront ce même groupe d'appartenance.

Exemple:

$ chmod 2750 /home/user

--
Alex
Avatar
denist
Le Tue, 07 Jun 2011 12:36:43 +0000, Alex a écrit :

Le 07-06-2011, denist a écrit:
Bonjour




Bonjour,

Est-il possible de forcer un répertoire/fichier à appartenir à un
groupe donné ?

Exemple :

#ls -alh /home/jean
drwxrwx--- 5 jean apache 4.0K Jun 6 13:11 jean

Pour ce j'ai fais :

chgrp -R apache /home/jean
chmod -R g+rwX /home/jean

"Mais" quand jean créé un dossier via FTP ou SSH, il appartient alors
au groupe jean. Est-il possible de contraindre le système à donner
comme groupe propriétaire apache à tout le contenu de /home/jean ?




Il faut utiliser le bit setgid: man chmod. Cela sert à attribuer a tous
les fichiers ou répertoires créés dans le répertoire contenant le bit
setgid le groupe de référence de ce répertoire. Si le répertoire
appartient au groupe 'apache', alors tous les fichiers et répertoires
créés auront ce même groupe d'appartenance.

Exemple:

$ chmod 2750 /home/user



Bonjour et merci, en effet ça fonctionne. J'avais trouvé setgid mais les
paramètres me semblent compliqués et j'ai peur de créer des trous de
sécurité.
J'ai besoin que apache puisse écrire dans ce répertoire, alors j'ai fais
chmod -R 2770 /home/user
et c'est ok.
Mais lorsque que le user créé un dossier/fichier, apache n'a les droits
qu'en lecture. Est-ce possible ?
Merci
Avatar
Alex
Le 07-06-2011, denist a écrit:

Bonjour et merci, en effet ça fonctionne. J'avais trouvé setgid mais les
paramètres me semblent compliqués et j'ai peur de créer des trous de
sécurité.
J'ai besoin que apache puisse écrire dans ce répertoire, alors j'ai fais
chmod -R 2770 /home/user
et c'est ok.
Mais lorsque que le user créé un dossier/fichier, apache n'a les droits
qu'en lecture. Est-ce possible ?
Merci



Pour gérer les permissions à la création de fichiers / répertoires,
il faut configurer la valeur d'*umask* du shell de l'utilisateur,
dans le .profile, ou encore le .bashrc, ou autre:

umask 017

Ce qui aura pour effet de ne pas mettre de permissions pour le reste du
monde, mais d'autoriser lecture/écriture/exécution pour l'utilisateur
et lecture/écriture pour le groupe.
La valeur par défaut est en général de 022. Pour obtenir la valeur
actuellement utilisée, il suffit de taper 'umask' dans le shell sans
arguments.

Pour avoir plus d'informations: man umask :)

--
Alex
Avatar
denist
Le Tue, 07 Jun 2011 13:58:47 +0000, Alex a écrit :

Le 07-06-2011, denist a écrit:

Bonjour et merci, en effet ça fonctionne. J'avais trouvé setgid mais
les paramètres me semblent compliqués et j'ai peur de créer des trous
de sécurité.
J'ai besoin que apache puisse écrire dans ce répertoire, alors j'ai
fais chmod -R 2770 /home/user
et c'est ok.
Mais lorsque que le user créé un dossier/fichier, apache n'a les droits
qu'en lecture. Est-ce possible ?
Merci



Pour gérer les permissions à la création de fichiers / répertoires, il
faut configurer la valeur d'*umask* du shell de l'utilisateur, dans le
.profile, ou encore le .bashrc, ou autre:

umask 017

Ce qui aura pour effet de ne pas mettre de permissions pour le reste du
monde, mais d'autoriser lecture/écriture/exécution pour l'utilisateur et
lecture/écriture pour le groupe.
La valeur par défaut est en général de 022. Pour obtenir la valeur
actuellement utilisée, il suffit de taper 'umask' dans le shell sans
arguments.

Pour avoir plus d'informations: man umask :)




Merci pour tout, j'ai passé une partie de la nuit à bûcher les
permissions et c'est maintenant réglé ! J'ai aussi découvert que la
majorité des programmes que j'utilise (serveur ftp etc) permettent de
configurer le umask, mon problème venait en partie de là aussi.

Toujours aussi efficace Usenet :)
A+
Avatar
Stephane CHAZELAS
2011-06-7, 13:58(+00), Alex:
Le 07-06-2011, denist a écrit:

Bonjour et merci, en effet ça fonctionne. J'avais trouvé setgid mais les
paramètres me semblent compliqués et j'ai peur de créer des trous de
sécurité.
J'ai besoin que apache puisse écrire dans ce répertoire, alors j'ai fais
chmod -R 2770 /home/user
et c'est ok.
Mais lorsque que le user créé un dossier/fichier, apache n'a les droits
qu'en lecture. Est-ce possible ?
Merci



Pour gérer les permissions à la création de fichiers / répertoires,
il faut configurer la valeur d'*umask* du shell de l'utilisateur,
dans le .profile, ou encore le .bashrc, ou autre:

umask 017

Ce qui aura pour effet de ne pas mettre de permissions pour le reste du
monde, mais d'autoriser lecture/écriture/exécution pour l'utilisateur
et lecture/écriture pour le groupe.
La valeur par défaut est en général de 022. Pour obtenir la valeur
actuellement utilisée, il suffit de taper 'umask' dans le shell sans
arguments.

Pour avoir plus d'informations: man umask :)



Note que sans modifier l'umaks des utilisateurs il y a aussi la
solution d'utiliser les default POSIX acls:

~$ umask
022
~$ sudo install -o chazelas -g audio -m 3775 -d test
~$ ls -ld test
drwxrwsr-t 2 chazelas audio 4096 Jun 8 13:58 test/
~$ touch test/a
~$ setfacl -m d:g::rwx test
~$ touch test/b
~$ ls -l test
total 0
-rw-r--r-- 1 chazelas audio 0 Jun 8 13:58 a
-rw-rw-r-- 1 chazelas audio 0 Jun 8 13:58 b

--
Stephane
Avatar
Hugues
Bonjour,

Ce cher Cyrille Lefevre <cyrille.lefevre-news% a posté :

Le 07/06/2011 14:55, denist a écrit :
Le Tue, 07 Jun 2011 12:36:43 +0000, Alex a écrit :


<snip>
Il faut utiliser le bit setgid: man chmod. Cela sert à attribuer a tous
les fichiers ou répertoires créés dans le répertoire contenant le bit
setgid le groupe de référence de ce répertoire. Si le répertoire
appartient au groupe 'apache', alors tous les fichiers et répertoires
créés auront ce même groupe d'appartenance.

Exemple:

$ chmod 2750 /home/user



Bonjour et merci, en effet ça fonctionne. J'avais trouvé setgid mais les
paramètres me semblent compliqués et j'ai peur de créer des trous de
sécurité.

J'ai besoin que apache puisse écrire dans ce répertoire, alors j'ai fais
chmod -R 2770 /home/user
et c'est ok.

Mais lorsque que le user créé un dossier/fichier, apache n'a les droits
qu'en lecture. Est-ce possible ?
Merci



Bonjour,

si je puis me permettre, c'est assez dégueulasse de faire ce que tu as
fait. en gros, tu as changer les permissions de tous les répertoires
et fichiers à 2770 !



Tout à fait, et je m'étonne que personne n'aie réagi parmi ceux qui ont
donné une solution.

Je m'étonne également du "chgrp -R apache /home/user" !
Depuis quand mélange-t-on les groupes "système" avec les utilisateurs ?
Et qu'on ne me parle surtout pas de rajouter l'utilisateur "user" dans
le groupe "apache" ! Je tape le premier qui ose. Et les suivants ! ;)


Moi, j'aurai procédé de la sorte :

- si c'est pour une appli web dont l'utilisateur "user" n'a rien à voir,
alors j'aurais tout mis dans un dossier appartenant effectivement à
apache:apache, par exemple /var/www/.

- si c'est pour qu'apache puissse lire/écrire dans le site web de
l'utilisateur "user", j'aurais déterminé les dossiers à lire/écrire,
et n'aurait donné les droits au groupe apache que pour ceux-là..

Sauf qu'en tant qu'user lambda, si on ne fait pas soi-même partie du
groupe apache, on peut pas. Donc deux solutions :
- donner les droits en lecture/écriture aux "autres", et bien faire
gaffe à ce qu'il n'y ait rien d'exécutable dans l'histoire
- mettre "user" et "apache" dans un même groupe (par exemple,
"apache-user"), et appliquer le principe du setgid avec ce groupe-là, et
pas un autre. Et seulement pour les dossiers concernés.



Par contre, vu le chmod +R 2770 de son répertoire ~user, huk huk huk...
Je serais plutôt partant pour trasher tout son ~user et repartir de
zéro, histoire d'avoir des bases saines :)

--
Hugues Hiegel [http://www.hiegel.fr/~hugues/]
Avatar
Hugues
Bonjour,

Ce cher denist a posté :


Bonjour et merci, en effet ça fonctionne. J'avais trouvé setgid mais les
paramètres me semblent compliqués et j'ai peur de créer des trous de
sécurité.



Oh, tu sais, tu n'en es pas à ça près, à ce niveau... :-)


J'ai besoin que apache puisse écrire dans ce répertoire, alors j'ai fais
chmod -R 2770 /home/user
et c'est ok.



Non, c'est pas ok du tout !!!!

Mais lorsque que le user créé un dossier/fichier, apache n'a les droits
qu'en lecture. Est-ce possible ?



Je crois surtout qu'on devrait *te* retirer les droits en écriture sur ton
ordinateur. Débranche ton clavier, ça ira mieux ;o)


Blague à part, pour le reste, c'est dans ma réponse à Cyrille ...

--
Hugues Hiegel [http://www.hiegel.fr/~hugues/]
Avatar
Hugues
Ce cher LENHOF Jean-Yves a posté :

Le 09/06/2011 11:27, Hugues a écrit :

Bonjour,

Ce cher Cyrille Lefevre<cyrille.lefevre-news% a posté :

Le 07/06/2011 14:55, denist a écrit :
Le Tue, 07 Jun 2011 12:36:43 +0000, Alex a écrit :


<snip>




<snip>

Moi, j'aurai procédé de la sorte :

- si c'est pour une appli web dont l'utilisateur "user" n'a rien à voir,
alors j'aurais tout mis dans un dossier appartenant effectivement à
apache:apache, par exemple /var/www/.

- si c'est pour qu'apache puissse lire/écrire dans le site web de
l'utilisateur "user", j'aurais déterminé les dossiers à lire/écrire,
et n'aurait donné les droits au groupe apache que pour ceux-là..

Sauf qu'en tant qu'user lambda, si on ne fait pas soi-même partie du
groupe apache, on peut pas. Donc deux solutions :
- donner les droits en lecture/écriture aux "autres", et bien faire
gaffe à ce qu'il n'y ait rien d'exécutable dans l'histoire
- mettre "user" et "apache" dans un même groupe (par exemple,
"apache-user"), et appliquer le principe du setgid avec ce groupe-là, et
pas un autre. Et seulement pour les dossiers concernés.




Il y a aussi la solution suivante...
http://httpd.apache.org/docs/2.0/mod/mod_userdir.html



Ça n'a rien à voir..
mais j'ose croire que denist utilisait déjà cette solution.

Non, je pensais plutôt au mod setuid, mais :
- d'une, je n'ai jamais testé (pas réussi, ou flemme, je sais plus)
- de deux, je vois pas mal de soucis de sécurité...


--
Hugues Hiegel [http://www.hiegel.fr/~hugues/]