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 18/07/2021, à 20:19

scorpion.dz

autorisation d'accès a Firefox

Bonjour;
je viens de crée 3 utilisateurs USER1, USER2, USER3 j'ai affecter USER1 ET USER2 au même groupe et USER3 a un autre groupe
USER1 => GRP10
USER2 => GRP10
USER3 => GRP30
maintenait je veut autoriser les utilisateurs USER1 et USER2 à naviguer à travers Firefox (/usr/bin/firefox) mais pas USER3.
et je ne sais vraiment pas comment faire pour configure cette étape.
PS: Tout les utilisateurs sont sur le meme PC
Merci

Dernière modification par scorpion.dz (Le 18/07/2021, à 21:02)

Hors ligne

#2 Le 18/07/2021, à 21:03

jplemoine

Re : autorisation d'accès a Firefox

Je pense que la solution n'est pas la bonne. Il faut mettre en place un proxy type Squid + SquiGuard.
Mais si USER3 a les droits sudo, ça ne fonctionnera pas.
Après on peut jouer avec les droits du fichier /usr/bin/firefox mais je pense que ça va être remis aux "bonnes permissions" (donc, celles que l'on veut pas) à chaque mise à jour.


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#3 Le 18/07/2021, à 21:30

scorpion.dz

Re : autorisation d'accès a Firefox

bonsoir
merci pour votre réponse rapide, ce n'est pas ce que je cherche, il ya une une méthode via bash mais je me souviens vraiment pas des étapes de la configuration.

Hors ligne

#4 Le 21/07/2021, à 16:23

LeoMajor

Re : autorisation d'accès a Firefox

salut,

a/ promiscuité des exécutables;  exemple; firefox;
autoriser seulement user1 et user2, à l'exécuter.

:~$ stat -c %a:%U:%G:%n $(readlink -f /usr/bin/firefox)
755:root:root:/usr/lib/firefox/firefox.sh
...
getent group commun || grep "commun" /etc/group  # vérifie si le group "commun" existe
sudo addgroup commun    # crée le groupe commun
sudo adduser user1 commun  # ajoute user1 au groupe commun
sudo adduser user2 commun
sudo chgrp commun /usr/lib/firefox/firefox.sh  # remplace le groupe root par commun
sudo chmod 750 /usr/lib/firefox/firefox.sh  # interdit toutes les permissions "des autres"   

b/ promiscuité des homes
user1 peut naviguer chez user2 via navigateur de fichiers ou web.
le mode par défaut est le 755, déterminé par adduser (cat /etc/adduser.conf)

Attention,  chmod -R  est interdit

sudo chmod 750 /home/user1
sudo chmod 750 /home/user2
sudo chmod 750 /home/user3

c/promiscuité des pids
user1 peut lire les pids de user2, voire root, via des commandes du genre top, ps, ....

ajouter dans le /etc/fstab

proc    /proc    proc    defaults,hidepid=2    0    0

user1 ne peut plus lire les pids de user2, ni ceux de root.

pour sudo et root, eux, ont tous les droits comme avant;   donc sudo ps ... ne change rien.

d/ facultatif;
une certaine promiscuité de /
Attention,  chmod -R  est interdit

sudo chmod 751 /
sudo chmod 751 /etc
sudo chmod 751 /sbin
sudo chmod 751 /usr/sbin

le 751 n'interdit pas vraiment si on connait le chemin exact, mais est gênant en cas contraire (glob et shopt inopérants). Gêne surtout la navigation dans un environnement graphique de bureau. C'est le but recherché.
interdit: sudo chmod 751 /usr  est interdit (effets secondaires importants, disfonctionnement du système)

Edit: étourderie oubli de /home  /home/user1

Dernière modification par LeoMajor (Le 22/07/2021, à 16:48)

Hors ligne

#5 Le 22/07/2021, à 01:27

Coeur Noir

Re : autorisation d'accès a Firefox

le mode par défaut est le 755, déterminé par adduser
Mode par défaut « historique », il me semble que Canonical a changé ça dans Ubuntu 21.04.
Ça n'est pas adduser qui détermine cela, lui ne fait que suivre ce qu'indique le fichier /etc/login.defs pour l'UMASK vers la ligne #150.

Les sous entendus c'est dangereux :

cd /home

puis

sudo chmod 750 user1
sudo chmod 750 user2
sudo chmod 750 user3

OU

sudo chmod 750 /home/user1
sudo chmod 750 /home/user2
sudo chmod 750 /home/user3

Un chmod -R bien employé n'a rien d'interdit - quand on vise comme ici des données « humaines » pas des données « système ».
Ce qu'on devrait interdire c'est la pseudo gestion des droits en octal - qui ne permet pas de distinguer fichiers et dossiers, qui requièrent pourtant des droits différents.
Sur le dossier d'un_utilisateur et tout son contenu, pour obtenir en une seule commande des droits 750 rwxr-x--- sur tous les dossiers et 640 rw-r----- sur tous les fichiers, ce sera

sudo   chmod   -R   a-rwx,u+rwX,g+rX   /home/un_utilisateur

X majuscule → dans ce cas, replace l'exécution uniquement sur les dossiers.

Le droit d'exécution est obligatoire sur les dossiers ( pour les ouvrir ), pas nécessaire sur les fichiers de type documents ( qu'on se contente d'afficher dans des logiciels ).
L'exécution sur des fichiers ne concerne que des spéciaux qu'on veut explicitement lancer : scripts, binaires, programmes…


DébuterDocBien rédigerRetour commandeInsérer image | illustrations & captures d'écran <>

Hors ligne

#6 Le 22/07/2021, à 17:28

LeoMajor

Re : autorisation d'accès a Firefox

L'impact de "X majuscule" dans le chmod est nul. Tu peux le vérifier via strace. chmod appelle fchmodat et conclut à une notation octale quelquesoit la casse de caractère de xX.

exemple: tu pars du 740 pour arriver au 750, en utilisant  g+x et g+X

sudo strace -o /tmp/chmod+X chmod g+X /home/toto

idem avec g+x

~$  diff -y  /tmp/chmod+x /tmp/chmod+X
execve("/bin/chmod", ["chmod", "g+x", "/home/toto"], [/* 17 |	execve("/bin/chmod", ["chmod", "g+X", "/home/toto"], [/* 17
brk(NULL)                               = 0x15ad000	      |	brk(NULL)                               = 0x20cf000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such 	access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such 
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such 	access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such 
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3		open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=155016, ...}) = 0	fstat(3, {st_mode=S_IFREG|0644, st_size=155016, ...}) = 0
mmap(NULL, 155016, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f10998c |	mmap(NULL, 155016, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fcc15e7
close(3)                                = 0			close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such 	access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such 
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) =	open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) =
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\t\2\	read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\t\2\
fstat(3, {st_mode=S_IFREG|0755, st_size=1868984, ...}) = 0	fstat(3, {st_mode=S_IFREG|0755, st_size=1868984, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYM |	mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYM
mmap(NULL, 3971488, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENY |	mmap(NULL, 3971488, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENY
mprotect(0x7f10994b8000, 2097152, PROT_NONE) = 0	      |	mprotect(0x7fcc15a73000, 2097152, PROT_NONE) = 0
mmap(0x7f10996b8000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE |	mmap(0x7fcc15c73000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE
mmap(0x7f10996be000, 14752, PROT_READ|PROT_WRITE, MAP_PRIVATE |	mmap(0x7fcc15c79000, 14752, PROT_READ|PROT_WRITE, MAP_PRIVATE
close(3)                                = 0			close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYM |	mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYM
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYM |	mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYM
arch_prctl(ARCH_SET_FS, 0x7f10998bf700) = 0		      |	arch_prctl(ARCH_SET_FS, 0x7fcc15e7a700) = 0
mprotect(0x7f10996b8000, 16384, PROT_READ) = 0		      |	mprotect(0x7fcc15c73000, 16384, PROT_READ) = 0
mprotect(0x60c000, 4096, PROT_READ)     = 0			mprotect(0x60c000, 4096, PROT_READ)     = 0
mprotect(0x7f10998e7000, 4096, PROT_READ) = 0		      |	mprotect(0x7fcc15ea2000, 4096, PROT_READ) = 0
munmap(0x7f10998c1000, 155016)          = 0		      |	munmap(0x7fcc15e7c000, 155016)          = 0
brk(NULL)                               = 0x15ad000	      |	brk(NULL)                               = 0x20cf000
brk(0x15ce000)                          = 0x15ce000	      |	brk(0x20f0000)                          = 0x20f0000
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 	open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 
fstat(3, {st_mode=S_IFREG|0644, st_size=4412752, ...}) = 0	fstat(3, {st_mode=S_IFREG|0644, st_size=4412752, ...}) = 0
mmap(NULL, 4412752, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f1098e |	mmap(NULL, 4412752, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fcc154
close(3)                                = 0			close(3)                                = 0
umask(0)                                = 022			umask(0)                                = 022
stat("/home/toto", {st_mode=S_IFDIR|0740, st_size=4096, ...	stat("/home/toto", {st_mode=S_IFDIR|0740, st_size=4096, ...
fchmodat(AT_FDCWD, "/home/toto", 0750) = 0			fchmodat(AT_FDCWD, "/home/toto", 0750) = 0
close(1)                                = 0			close(1)                                = 0
close(2)                                = 0			close(2)                                = 0
exit_group(0)                           = ?			exit_group(0)                           = ?
+++ exited with 0 +++						+++ exited with 0 +++

x:  Un dossier, répertoire se laisse traverser pour atteindre d'autres dossiers, fichiers.  Il n'y a pas de concept d'exécution pour un dossier, répertoire.

Hors ligne

#7 Le 23/07/2021, à 08:17

bruno

Re : autorisation d'accès a Firefox

LeoMajor a écrit :

L'impact de "X majuscule" dans le chmod est nul

Merci d'éviter de raconter n'importe quoi. Et c'est hors-sujet par rapport à la question initiale.

man chmod a écrit :

       Les lettres rwxXst sélectionnent les bits de comportement de fichier des utilisateurs concernés : lecture (r), écriture (w), exécution (ou recherche  pour
       les  répertoires)  (x), exécution/recherche uniquement si le fichier est un répertoire ou s'il a déjà une autorisation d'exécution pour une des catégories
       d'utilisateur (X)
,

L'explication de Coeur Noir en #5 est tout à fait exacte et pertinente.


--
@scorpion.dz
Pour faire court : on ne pas pas interdire à un utilisateur de lancer un programme installé sur le système, sauf à placer cet utilisateur dans un environnement restreint (chroot).
On peut effectivement essayer de l'en empêcher en bidouillant les droits d'accès sur les fichiers de celui-ci, comme l’ébauche proposée en #4. Je le déconseille fortement, comme toute manipulation des droits d'accès sur les fichiers du système. De toute façon un utilisateur déterminé pourra facilement contourner cela et lancer Firefox s'il en a envie.

Dernière modification par bruno (Le 23/07/2021, à 08:20)

Hors ligne

#8 Le 23/07/2021, à 14:24

Coeur Noir

Re : autorisation d'accès a Firefox

@LeoMajor à propos de x et XX permet ( dans ce cas, en récursif ) d'appliquer l'exécution uniquement sur les dossiers, alors que x l'appliquerait sur les dossiers ET les fichiers.

Quand j'écris « ce qu'on devrait interdire c'est la pseudo gestion des droits en octal » c'est pour dire qu'il vaut mieux utiliser la commande « en toutes lettres » plutôt qu'avec les « raccourcis » en octal ; en toutes lettres elles permettent davantage de finesse ou de « granularité » puisqu'on peut trier l'application des droits selon fichiers ou dossiers :

un_utilisateur@une_machine:~$ chmod   -R   a-rwx,u+rwX,g+rX   /home/un_utilisateur

aura pour conséquences :
⋅ tous les dossiers en 750
⋅ tous les fichiers en 640
sur le dossier /un_utilisateur ET tout ce qu'il contient comme (sous)dossiers ET fichiers.

Alors qu'un

un_utilisateur@une_machine:~$ chmod   -R   750   /home/un_utilisateur

mettrait du 750 partout, dossiers comme fichiers, alors que ça n'est pas souhaitable sur tous les fichiers.

Voir https://doc.ubuntu-fr.org/permissions#recursivement


DébuterDocBien rédigerRetour commandeInsérer image | illustrations & captures d'écran <>

Hors ligne

#9 Le 24/07/2021, à 11:07

LeoMajor

Re : autorisation d'accès a Firefox

@Coeur Noir
chmod 750 est suffisant pour isoler les homes, dans une perspective "anti-promiscuité"
Pas besoin d'en faire plus (-R)

:~$ unset c; for h in /home/*; do [ -d "$h" ] && ((c++)); [ $(stat -c %a "$h") -ne 750 ] && echo "sudo chmod 750 $h"; done; echo "$c, homes "
sudo chmod 750 /home/titi
5, homes 

Ta commande, légèrement schizophréne, qui ne ne fonctionne qu'avec -R, ne se justifie pas. Tu veux protéger l'utilisateur de lui-même avec le 640 ??. Juste utopique.

Si pour une raison quelconque, l'administrateur veut revenir en arrière, au 755, cela est très facile.

unset c; for h in /home/*; do [ -d "$h" ] && ((c++)); [ $(stat -c %a "$h") -ne 755 ] && echo "sudo chmod 755 $h"; done; echo "$c, homes "

impact minimal sur les permissions.

Après, chacun fait ce qu'il veut, ce qui lui plaît ...

Hors ligne

#10 Le 24/07/2021, à 14:37

Coeur Noir

Re : autorisation d'accès a Firefox

Têtu Léo ?

chmod 750 est suffisant pour isoler les homes, dans une perspective "anti-promiscuité"
Oui si tu ne vises qu'un dossier : hello Léo je n'ai jamais dit autre chose roll le 750 sur le répertoire perso est même dorénavant la situation par défaut depuis Ubuntu 21.04.
Sauf qu'en gérant les droits en octal, on peut facilement commettre l'erreur d'appliquer le bit exécution partout, alors qu'il n'est nécessaire que sur les dossiers.
Tu t'en étais mis à l'abri en n'utilisant pas l'option récursive. Je pense qu'on peut faire mieux - puisque l'option récursive est parfois bien pratique.

Tu veux protéger l'utilisateur de lui-même avec le 640 ?
Euh… non, je m'assure que les fichiers n'ont pas de bit exécution car c'est la situation souhaitable par défaut.
Par contre les dossiers eux, l'auront bien.

Un dossier sans bit exécution n'est pas très pratique ( euphémisme ) ET seuls des fichiers bien spécifiques nécessitent le bit exécution : des scripts, des .appimage, des « programmes », des lanceurs type .desktop… mais pas des « documents » qui sont essentiellement ce qu'on stocke dans un répertoire perso.

Puisqu'on en était à toucher aux droits et permissions d'un répertoire personnel, je proposais juste de mettre au propre les droits et permissions de TOUT ce répertoire personnel en UNE SEULE commande. Et une commande littérale pas trop compliquée puisqu'elle fait ce qu'on lui demande dans l'ordre où on l'écrit.

Si pour une raison quelconque, l'administrateur veut revenir en arrière, au 755, cela est très facile
…encore plus facile comme ça :

chmod   a-rwx,a+rX,u+w   /home/utilisateur

si on ne vise que ce dossier.
Ou avec le mode récursif -R si on veut au final du 755 sur les dossiers ET du 644 sur les fichiers, sur le répertoire et son contenu, en une seule « passe » de commande.
Tu peux ajouter l'option -c qui te rendra compte des changements effectués.
Pas besoin d'être administrateur, puisque l'utilisateur propriétaire peut gérer les droits sur des objets lui appartenant.

Dernière modification par Coeur Noir (Le 24/07/2021, à 14:41)


DébuterDocBien rédigerRetour commandeInsérer image | illustrations & captures d'écran <>

Hors ligne