特定のユーザーの権限の設定に問題があります。
1つのファイルtest
(_/srv/git/
_が所有)を含むサブディレクトリtestfile
を作成しようとしているディレクトリ_www:www-data
_があります。 testfile
は、ユーザーとグループのみが読み取りと書き込みを行う必要があり、他のユーザーは書き込みできません。
_[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
_
ただし、何らかの理由で、ディレクトリにcd
することができません(リストに表示すると、非常に不完全な情報が表示されます)
_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
_
奇妙なことに私を驚かせるのは、_..
_がアクセス可能であるにもかかわらず不完全な情報を示しているという事実です(_drwxr-xr-x 6 root root 4096 Mar 1 19:02 .
_)。
[〜#〜] edit [〜#〜]:これを実行しているマシンは、CentOS release 6.5 (Final)
を備えたVPSです。
_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は(私が見る限り)無効になっています
_[root@bartplatak ~]# sestatus
SELinux status: disabled
_
ディレクトリ(および親)のアクセス許可は、次のように設定されます。
_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)
_
_su www
_の後、id
はuid=497(www) gid=497(www) groups=497(www),496(www-data)
を示します
明らかな問題は、/srv/git/test
には、所有者とグループに設定された実行可能ファイルx
ビットがありません。したがって、 ディレクトリをトラバースすることはできません 。
次の問題を解決します。
chmod ug+x /srv/git/test