Impossible d'accéder au répertoire dont je suis membre du groupe


9

Sur mon serveur Web, j'ai un répertoire 'www' qui a la permission drwxrwxr--et user: group root:www-datapour qu'Apache puisse y accéder.

Maintenant, j'ai ajouté mon compte au groupe www-data avec

sudo usermod -g www-data myuser

et si je groupspuis www-dataest parmi eux, mais lorsque je tente simplement cd dans ce que je reçois « Autorisation refusée ».

Si je change l'utilisateur en «myuser» ou que je mets le groupe dans un autre groupe dont je suis membre, je peux entrer.

Suis-je en train de manquer quelque chose?

Réponses:


14

Votre processus a sa liste de groupes définie au moment de la connexion, vous devez donc vous reconnecter pour que la modification prenne effet.

Je suggérerais également que vous ajoutiez en www-datatant que groupe supplémentaire plutôt que le groupe principal (qui est défini sur un groupe dont vous êtes membre. Vous devriez pouvoir le faire avec les commandes suivantes:

# Reset to your original primary group
sudo usermod -g myuser myuser
# Add an extra supplementary group
sudo usermod --append -G www-data group

Si vous souhaitez que les fichiers que vous créez soient lisibles par les autres membres du www-datagroupe, ajustez votre umask en conséquence:

umask 002

Étant donné que votre appartenance à un groupe principal est un groupe personnel, cela ne devrait pas affecter la sécurité des fichiers que vous créez.

Il vaut également la peine de définir le setgidbit sur les répertoires dans lesquels vous allez créer des fichiers: cela fera hériter les fichiers de la propriété du groupe du répertoire parent:

chmod g+s www/

1
se reconnecter a fait l'affaire, tellement stupide. Aussi très utile serverfault.com/questions/6895/…
dazz

Merci d'avoir mentionné Dazz. Je n'ai jamais compris pourquoi cela ne fonctionnait pas pour moi xD. Maintenant je peux me reposer en paix.
f4der le

0

Pour moi, ce fut une chose différente entraînant cette erreur

même nom d'utilisateur avec deux UID différents

J'ai l'utilisateur "apache" configuré localement avec UID = 123 et dans le répertoire NIS avec le même nom ("apache") mais différent UID = 456. Selon l'ordre de démarrage et la dépendance du service, l'utilisateur local peut être utilisé avant que l'utilisateur NIS ne soit disponible. Cela signifie également que lorsque vous afficherez des noms d'utilisateur, cela sera source de confusion, les deux apparaîtront comme "apache". Seulement lorsque vous regardez les UID numériques (par exemple en faisant cela, ls -lnvous verrez la différence. Exemple: [root@mymachine]# ls -l drwxr-x--- 4 apache ggg1 88 May 31 17:12 file1 drwxr-x--- 4 apache ppp2 88 May 31 17:12 file2 voir l'UID est différent pour file2 (456 au lieu de 123): [root@mymachine]# ls -ln drwxr-x--- 4 123 48 88 May 31 17:12 file1 drwxr-x--- 4 456 48 88 May 31 17:12 file2

groupe différent défini dans la configuration Apache

Un autre problème que j'ai rencontré avec la non-concordance des utilisateurs et l'erreur de permission qui en a résulté, était lorsque je restreignais l'accès aux fichiers en utilisant le groupe "httpd". Il s'agissait du groupe principal d'utilisateurs "apache" (qui était affiché à l'aide de idou getent) Apache démarre en tant que root, puis passe à l'utilisateur configuré et supprime l'autorisation. L'utilisateur vers lequel il bascule est défini /etc/httpd/conf/httpd.confpar Userparamètre. Voici le problème cependant - le groupe (GID) dans lequel le processus sera exécuté n'est PAS le groupe principal de cet utilisateur. Le groupe est défini dans le même fichier de configuration par Groupparamètre.

Donc dans mon cas, c'était ( /etc/httpd/conf/httpd.conf ): User apache Group apache

Et le répertoire a obtenu un accès comme celui-ci: drwxr-x--- 4 someuser httpd 88 May 31 17:12 mydir

Parce que httpd (GID = 444) était le groupe principal de cet utilisateur: [root@somemachine]# id apache uid=48(apache) gid=444(httpd) groups=444(httpd)

Cela a entraîné un certain temps passé à déboguer jusqu'à ce que je réalise que le Groupfichier de configuration était "apache" et non "httpd".

Erreur de / var / log / httpd / error_log : [Fri May 31 17:13:40.070343 2019] [authz_core:debug] [pid 2527] mod_authz_core.c(809): [client 11.22.32.21:53824] AH01626: authorization result of Require all granted: granted [Fri May 31 17:13:40.070367 2019] [authz_core:debug] [pid 2527] mod_authz_core.c(809): [client 11.22.32.21:53824] AH01626: authorization result of <RequireAny>: granted [Fri May 31 17:13:40.070396 2019] [core:error] [pid 2527] (13)Permission denied: [client 11.22.32.21:53824] AH00132: file permissions deny server access: /var/www/html/somedir/otherdir/css/file1.txt

J'espère que ça aide.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.