1 votes

Permission refusée sur le fichier possédé

J'ai des problèmes pour définir les autorisations pour un utilisateur spécifique.

J'ai un répertoire /srv/git/ dans lequel j'essaie de créer un sous-répertoire test contenant un fichier testfile (propriété de www:www-data ). testfile ne doit pouvoir être lu et écrit que par l'utilisateur et le groupe et personne d'autre.

[root@bartplatak ~]# cd /srv/git
[root@bartplatak git]# mkdir test && touch test/testfile
[root@bartplatak git]# chown -R www:www-data test
[root@bartplatak git]# chmod o= test/testfile
[root@bartplatak git]# chmod -R ug=rw test
[root@bartplatak git]# sync
[root@bartplatak git]# su www

Cependant, pour une raison inconnue, je ne peux pas cd dans le répertoire (et l'énumérer montre des informations très incomplètes)

bash-4.1$ pwd
/srv/git

bash-4.1$ ls -la test
ls: cannot access test/.: Permission denied
ls: cannot access test/testfile: Permission denied
ls: cannot access test/..: Permission denied
total 0
d????????? ? ? ? ?            ? .
d????????? ? ? ? ?            ? ..
-????????? ? ? ? ?            ? testfile

bash-4.1$ cd test
bash: cd: test: Permission denied

Ce qui me semble étrange, c'est le fait que .. présente des informations incomplètes malgré son accessibilité ( drwxr-xr-x 6 root root 4096 Mar 1 19:02 . ).

EDIT : La machine sur laquelle j'exécute ceci est un VPS avec CentOS release 6.5 (Final) .

Linux bartplatak.com 2.6.32-042stab078.28 #1 SMP Mon Jul 8 10:17:22 MSK 2013 x86_64 x86_64 x86_64 GNU/Linux

SELinux est (pour autant que je puisse voir) désactivé

[root@bartplatak ~]# sestatus 
SELinux status:                 disabled

Les permissions sur le répertoire (et les parents) sont définies comme suit

drwxr-xr-x 6 root root     4096 Mar  1 19:02 /
drwxr-xr-x 5 root root     4096 Mar  1 14:16 /srv
drwxr-xr-x 6 root root     4096 Mar  1 19:02 /srv/git
drw-rw-r-x 2 www  www-data 4096 Mar  1 19:02 /srv/git/test
-rw-rw---- 1 www  www-data    0 Mar  1 19:02 /srv/git/test/testfile

[root@bartplatak git]# stat /srv/git/test
  File: `/srv/git/test'
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 5ae0b691h/1524676241d   Inode: 404068      Links: 2
Access: (0665/drw-rw-r-x)  Uid: (  497/     www)   Gid: (  496/www-data)

[root@bartplatak git]# stat /srv/git/test/testfile
  File: `/srv/git/test/testfile'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 5ae0b691h/1524676241d   Inode: 404071      Links: 1
Access: (0660/-rw-rw----)  Uid: (  497/     www)   Gid: (  496/www-data)

Après su www , id montre uid=497(www) gid=497(www) groups=497(www),496(www-data)

8voto

Michael Hampton Points 232226

Le problème évident est que /srv/git/test n'a pas l'exécutable x bit activé pour le propriétaire et le groupe. Ainsi, il il n'est pas possible de traverser le répertoire .

Résolvez le problème avec :

chmod ug+x /srv/git/test

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X