#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.
Ce compte ne servira plus : vous pouvez le supprimer si le coeur vous en dit...
Laissé par l'auteur pour historique.
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ébuter ⋅ Doc ⋅ Bien rédiger ⋅ Retour commande ⋅ Insé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
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.
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)
#8 Le 23/07/2021, à 14:24
- Coeur Noir
Re : autorisation d'accès a Firefox
@LeoMajor à propos de x et X → X 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.
Débuter ⋅ Doc ⋅ Bien rédiger ⋅ Retour commande ⋅ Insé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 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ébuter ⋅ Doc ⋅ Bien rédiger ⋅ Retour commande ⋅ Insérer image | illustrations & captures d'écran < ⋅ >
Hors ligne