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 21/09/2010, à 20:22

fove2

quel droit unix puis-je choisir ?

Bonjour,

dans /mnt/ j'ai un dossier nommée "Biblotheque" où je met toute ressource dont pourrait avoir besoin une user (Cinéma, musique, littérature, documentation mais aussi, scripts, installateurs deb et peut être même des exécutables bref une bibli).
Je veux donc donné accès en lecture seulement à tous les répertoires de la bibliothèque et leur sous répertoires, en lecture donc pas d'écriture ni modification, ni exécution. La seule exécution possible étant celle des répertoires (pour les ouvrir), c'est à dire des droits unix de 5.
Oui mais je ne veux pas que les scripts et les exécutables puissent êtres exécutés et je ne voudrais pas non plus que les *.deb puissent êtres dépaquetés. Dois-je donc affectés des droits de 5 (lecture+exécution), aux dossiers, et a tous les autres fichiers des droits de 4 (lecture seule) ? et le cas échéant comment faire une telle chose en une seule commande sans a voir a trier manuellement tous les fichiers ?


Bien à vous,

très cordialement

Hors ligne

#2 Le 21/09/2010, à 20:37

geenux

Re : quel droit unix puis-je choisir ?

Tu n'as pas besoin de droits d'exécutions pour ouvrir un répertoire.
Un chmod 444 devrait faire l'affaire.

Hors ligne

#3 Le 21/09/2010, à 20:44

alej

Re : quel droit unix puis-je choisir ?

fove2 a écrit :

dans /mnt/ j'ai un dossier nommée "Biblotheque"

C'est un dossier ou c'est une partition ?

Hors ligne

#4 Le 21/09/2010, à 20:47

sputnick

Re : quel droit unix puis-je choisir ?

Si c'est une partition, il y a l'option noexec ( man mount ) :

noexec Ne pas permettre l’exécution directe de fichiers binaires sur le système de fichiers monté. (Jusqu’à récemment, il était possible de lancer des fichiers binaires n’importe comment en utilisant une commande comme « /lib/ld*.so /mnt/binaire ». Cette ruse échoue depuis Linux 2.4.25/2.6.0).


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

En ligne

#5 Le 21/09/2010, à 20:48

alej

Re : quel droit unix puis-je choisir ?

geenux a écrit :

Tu n'as pas besoin de droits d'exécutions pour ouvrir un répertoire.
Un chmod 444 devrait faire l'affaire.

T'as essayé ?

Hors ligne

#6 Le 21/09/2010, à 20:49

sputnick

Re : quel droit unix puis-je choisir ?

geenux a écrit :

Tu n'as pas besoin de droits d'exécutions pour ouvrir un répertoire.
Un chmod 444 devrait faire l'affaire.

!? wut !? oO

T'a raté qq chose ou c'est moi qui te comprends pas smile


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

En ligne

#7 Le 21/09/2010, à 20:52

ehmicky

Re : quel droit unix puis-je choisir ?

geenux a écrit :

Tu n'as pas besoin de droits d'exécutions pour ouvrir un répertoire.
Un chmod 444 devrait faire l'affaire.

Fait donc le test, tu auras une surprise ^^

Edit : pour la question des permissions sur les répertoires, voici ce que j'ai dans ma doc' perso (fichier est pris au sens large, comprenant donc aussi les répertoires, qui sont des fichiers) :

Pour un répertoire :
- la lecture (r) signifie le droit de connaitre le nom des fichiers qu'il contient, mais rien d'autre. Couplé avec (x), cela implique aussi :
   - droit de connaître le proprietaire, etc.
   - droit de lire le contenu des repertoires contenus par le repertoire
- la modification (w) signifie le droit de créer, modifier et supprimer des fichiers dans ce repertoire ou le repertoire lui-même.
- l'execution (x) signifie le droit de parcourir le repertoire, mais non d'en connaitre le nom des fichiers qu'il contient, qui n'est possible que couplé avec (r). Par ailleurs, couplé avec (r), permet aussi d'exécuter ou lire les fichiers qu'il contient.

Ces droits ne concerne que le répertoire désigné, et non les répertoires qu'il contient de manière récursive.
Le contenu d'un repertoire n'herite pas ses permissions de celui-ci.
Les droits d'accès lors de la création d'un fichier dépendent de l'umask, pas des droits d'accès du répertoire dans lequel il se trouve.

Bon c'est ma doc' perso, donc y'a peut-être des imprécisions, mais c'est déjà une approche smile

Dernière modification par ehmicky (Le 21/09/2010, à 21:15)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#8 Le 21/09/2010, à 20:55

geenux

Re : quel droit unix puis-je choisir ?

En effet, j'avais jamais testé.
Donc lire ne permet pas d'entrer dans un dossier. Assez stupide comme définition de lire... C'est pas adapté aux dossiers.
Autant pour moi, j'aurais du tester avant, je serais moins bête aujourd'hui smile

Hors ligne

#9 Le 21/09/2010, à 21:18

ehmicky

Re : quel droit unix puis-je choisir ?

Sinon, pour changer les droits d'accès récursivement, c'est l'option -R de chmod : à utiliser avec précaution, modifier les droits de /home ou de / te causera de gros problèmes.

Sinon, envisage aussi de faire chrooter ton utilisateur smile


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#10 Le 25/09/2010, à 14:35

fove2

Re : quel droit unix puis-je choisir ?

Désolé de répondre si tardivement, mais j'ai été coupé d'internet un long moment,


geenux a écrit :

Tu n'as pas besoin de droits d'exécutions pour ouvrir un répertoire.
Un chmod 444 devrait faire l'affaire.

Comme dit plus haut la lecture ne permet pas à un dossier de s'ouvrire, ce qui est ma foi assez logique puisque x ne permet de faire que la seule chose que ne font pas r et w sur un dossier : l'ouvrir.

De toute façon, moi j'ai besoin de tous les droits donc 744 au minimum et 755 si je veux que les autres puissent ouvrir les dossier hmm ce qui reviens à ce que j'ai dit au début mais donc je voudrais que seuls les dossiers aient 5 comme droit unix, tout autre fichier ne devant avoir que 4.


alej a écrit :
fove2 a écrit :

dans /mnt/ j'ai un dossier nommée "Biblotheque"

C'est un dossier ou c'est une partition ?

C'est bien une partition, labellisée en "Bibliotheque" qui est montée en /mnt/Bibliotheque.


sputnick a écrit :

Si c'est une partition, il y a l'option noexec ( man mount ) :

noexec Ne pas permettre l’exécution directe de fichiers binaires sur le système de fichiers monté. (Jusqu’à récemment, il était possible de lancer des fichiers binaires n’importe comment en utilisant une commande comme « /lib/ld*.so /mnt/binaire ». Cette ruse échoue depuis Linux 2.4.25/2.6.0).

noexec ne me convient pas comme option de montage vue que j'ai besoin d'y exécuter des trucs. mais il faudrait que moi et moi seul puisse exécuter les trucs qui s'y trouvent.


ehmicky a écrit :

Sinon, pour changer les droits d'accès récursivement, c'est l'option -R de chmod : à utiliser avec précaution, modifier les droits de /home ou de / te causera de gros problèmes.


Sinon, envisage aussi de faire chrooter ton utilisateur smile

Comme je l'ai dit plus haut dans ce post, je ne souhaite pas que toute l'arborescence aie rigoureusement les mêmes droits. En fait tous fichier doit avoir 744 sauf les dossiers qui doivent avoir 755, -R ne me permettra pas de faire des conditions hmm

Dernière modification par fove2 (Le 25/09/2010, à 14:37)

Hors ligne

#11 Le 25/09/2010, à 15:19

ehmicky

Re : quel droit unix puis-je choisir ?

Tu pourrais utiliser find -type "f" ou "d" pour faire un chmod 444 ou 555 selon tes envies, mais je me dis que le chroot serait quand même une bonne idée par ailleurs.
Par ailleurs, si tu veux que seul toi puisse exécuter les fichiers, il faut que tu sois propriétaire de ces fichiers et que tu fasses un chmod 544 sur ces derniers.
Après, d'autres personnes auront surement des solutions plus intelligentes, car faire des chmod à la pelle, je pense qu'il doit y avoir de meilleurs solutions.


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#12 Le 25/09/2010, à 15:21

fove2

Re : quel droit unix puis-je choisir ?

@ehmicky: je suis déja propriétaires de tous les fichiers de la partition.

Hors ligne

#13 Le 25/09/2010, à 21:13

sputnick

Re : quel droit unix puis-je choisir ?

Le mieux serais un chroot je pense.


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

En ligne

#14 Le 25/09/2010, à 22:11

chopinhauer

Re : quel droit unix puis-je choisir ?

geenux a écrit :

Donc lire ne permet pas d'entrer dans un dossier. Assez stupide comme définition de lire... C'est pas adapté aux dossiers.

La permission 'r' permet de lire le dossier, qui n'est rien d'autre qu'une liste de noms et numéros de inode.

La permission 'w' permet de modifier la liste de noms du répertoire.

C'est vrai que la permission 'x' est bien plus complexe: en gros elle permet d'accéder (mnemonique: axéder) aux fichiers du répertoire. Mais comme décrit dans path_resolution elle est aussi nécessaire pour renommer, effacer ou ajouter des fichiers, et devient une condition sine qua non pour pouvoir se servir de la permission 'w'.

Pour finir avec les particularités du système UNIX, pour les fichiers ordinaires 'x' n'est pas vraiment nécessaire pour les exécutables dynamiques et scripts, pour lesquels 'r' est suffisant. En effet (sauf si désactivé à niveau de système de fichiers, comme cité par sputnick) un

/lib/ld-linux.so.2 /chemin/vers/exécutable/exécutable

marche toujours.


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#15 Le 25/09/2010, à 22:39

ehmicky

Re : quel droit unix puis-je choisir ?

chopinhauer a écrit :

Pour finir avec les particularités du système UNIX, pour les fichiers ordinaires 'x' n'est pas vraiment nécessaire pour les exécutables dynamiques et scripts, pour lesquels 'r' est suffisant. En effet (sauf si désactivé à niveau de système de fichiers, comme cité par sputnick) un

/lib/ld-linux.so.2 /chemin/vers/exécutable/exécutable

marche toujours.

Y'a aussi tout bêtement :

bash /chemin/vers/le/script

Si l'exécutable est un script Bash (bien que Bash appelle peut-être en interne au final ld, ce qui revient au même en fait, mais je suis pas sûr). Pas besoin non plus alors de la permission d'exécution.

Dernière modification par ehmicky (Le 25/09/2010, à 22:42)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#16 Le 25/09/2010, à 22:52

chopinhauer

Re : quel droit unix puis-je choisir ?

ehmicky a écrit :

Si l'exécutable est un script Bash (bien que Bash appelle peut-être en interne au final ld, ce qui revient au même en fait, mais je suis pas sûr). Pas besoin non plus alors de la permission d'exécution.

Pour un script:

/lib/ld-linux.so.2 /bin/bash /chemin/vers/script

marche et dans ce cas pas besoin de permission d'exécution sur /bin/bash, ni sur le script. Et ld-linux.so.2 devrait pouvoir s'en passer de la permission de lecture.


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#17 Le 25/09/2010, à 22:56

ehmicky

Re : quel droit unix puis-je choisir ?

De mon côté, quand j'enlève la permission de lecture de script, ça ne marche plus avec ld.


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#18 Le 25/09/2010, à 23:10

chopinhauer

Re : quel droit unix puis-je choisir ?

Dans les trois variantes pour exécuter le script on a besoin:

* (directement) 'rx' sur le script, 'x' sur bash et 'x' sur ld-linux.
* (via bash) 'r' sur le script, 'x' sur bash et 'x' sur ld-linux.
* (via ld-linux et bash) 'r' sur le script, 'r' sur bash et 'x' sur ld-linux.

En tout cas 'x' et 'r' sont fortement mélangés.

En vérité enlever la permission 'x' sur les exécutables n'est pas une bonne idée: par exemple libgconf va chercher de se connecter à gconfd-2 et si elle ne le trouve pas elle va lancer 'gconfd-2' et pas '/lib/ld-linux.so.2 gconfd-2'. Donc échec total. Et de manière générale tous les exécutables (ou librairies) qui lancent d'autres exécutables auraient des problèmes.


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne