LINUX.ORG.RU

[NFS] Вопрос по правам доступа

 


0

1

Есть сейчас веб-сервер в OpenVZ-контейнере, веб-контент которого примонтирован из СТ0. Хочу перевести доступ к контенту на NFS. Когда примонтировал каталог - получил 403-ю ошибку от сервера, полез разбираться, включил шелл для пользователя и попробовал ходить по каталогам:

nfs $ ls -lnd mirrors.linuxoid.in
drwxr-x--- 10 2005 2005 304 Авг  1  2011 mirrors.linuxoid.in
nfs $ groups | grep -q 2005 && echo 1
1
nfs $ cd mirrors.linuxoid.in
-su: cd: mirrors.linuxoid.in: Отказано в доступе

при этом рядом в каталог, смонтированный «снаружи» через bind все ходит нормально. Т.е., почему-то игнорируется то, что юзер состоит в той же группе, что и каталог. Как пофиксить?

NFSv3, no_root_squash/no_all_squash включено

★★★★★

Причем:

root@goro:/mnt/nfs# ls -lan
итого 0
drwxr-xr-x 5    0    0 104 Фев  2 09:27 .
drwxr-xr-x 4    0    0  96 Фев  2 09:24 ..
drwxr-x--- 2 2005 2005  48 Фев  2 09:27 test

Вот это у меня экспортируется по NFS для любого адреса. Локально монтирую:

root@goro:/tmp# mountpoint  test/
test/ is not a mountpoint
root@goro:/tmp# mount -t nfs 127.0.0.1:/mnt/nfs /tmp/test/
root@goro:/tmp# su -l test
test@goro:~$ cd /tmp/test/
test@goro:/tmp/test$ ls -la 
итого 0
drwxr-xr-x 5 root root   104 Фев  2 09:27 .
drwxrwxrwt 3 root root    72 Фев  2 09:32 ..
drwxr-x--- 2 2005 vu2005  48 Фев  2 09:27 test
test@goro:/tmp/test$ cd test/
test@goro:/tmp/test/test$ id
uid=1004(test) gid=1004(test) группы=1004(test),2005(vu2005)

Все ок. То же самое монтирование внутри контейнера:

root@nightwolf:/# mount | grep 123
192.168.220.254:/mnt/nfs on /tmp/123 type nfs (rw,addr=192.168.220.254)
root@nightwolf:/# su -l test
test@nightwolf:~$ cd /tmp/123/
test@nightwolf:/tmp/123$ ls -lan
итого 0
drwxr-xr-x 5    0    0 104 Фев  2 09:27 .
drwxrwxrwt 5    0    0 136 Фев  2 09:34 ..
drwxr-x--- 2 2005 2005  48 Фев  2 09:27 test
test@nightwolf:/tmp/123$ cd test/
-su: cd: test/: Отказано в доступе
YAR ★★★★★
() автор топика
Ответ на: комментарий от YAR

Насколько я понял, в случае локального ls каталог пренадлежит группе vu2005 с id 2005 и пользователь входит в эту группу. В случае контейнера пользователь не входит в группу с id 2005. ЕМНИП, в nfsv3 всё определяется id пользователя/группы, а не его именами.

mky ★★★★★
()
Ответ на: комментарий от mky

В случае контейнера пользователь не входит в группу с id 2005

Входит. Т.е., в случае теста я создаю юзера, создаю группу с заданным GID, включаю юзера в группу и тестирую. Проблема не только в контейнере - смонтировал с сервера каталог на другую машину - то же самое.

YAR ★★★★★
() автор топика
Ответ на: комментарий от mky

Собственно, изначальная проблема - есть апач, входящий в группу всех сайтов, есть каталог с сайтами (смонтированный в CT0), доступный двумя путями внутри целевого контейнера - через монтирование с -o bind из CT0 стандартным путем и через NFS, расшаренный с того же CT0. Через bind все работает, через NFS игнорируется группа

YAR ★★★★★
() автор топика
Ответ на: комментарий от sdio

Ситуация не нормальная

Да я знаю, что не нормальная, потому и пишу :)

Ты что-то пропустил.

Знать бы, что... Попрообую еще дома между двумя другими машинами тоже подобное сделать

YAR ★★★★★
() автор топика
Ответ на: комментарий от sdio

Сделал еще один тест, между двумя другими машинами, со свежими ядрами.

Сервер:

rain@mws64:~$ grep test /etc/exports 
/tmp/test                       *(async,rw,no_all_squash,no_root_squash)
rain@mws64:~$ mkdir /tmp/test
rain@mws64:~$ sudo exportfs -r

Клиент:

rain@acnote:/tmp$ sudo mount -t nfs 192.168.0.111:/tmp/test /tmp/test
[sudo] password for rain: 
rain@acnote:/tmp$ mount | grep test
192.168.0.111:/tmp/test on /tmp/test type nfs (rw,vers=4,addr=192.168.0.111,clientaddr=192.168.0.112)
root@acnote:/tmp$ ls -la test/
итого 0                   
drwxr-xr-x  2 4294967294 4294967294  48 Фев  3 11:40 .
drwxrwxrwt 12 root       root       408 Фев  3 11:42 ..

WTF с UID/GID? Ладно, фиг с ним:

rain@acnote:/tmp$ sudo umount test/
rain@acnote:/tmp$ sudo mount -t nfs -o vers=3 192.168.0.111:/tmp/test /tmp/test
rain@acnote:/tmp$ mount | grep test
192.168.0.111:/tmp/test on /tmp/test type nfs (rw,vers=3,addr=192.168.0.111)
rain@acnote:/tmp$ sudo bash
root@acnote:/tmp# cd test/
root@acnote:/tmp/test# mkdir bla
root@acnote:/tmp/test# chmod 750 bla/
root@acnote:/tmp/test# chown 2005:2005 bla
root@acnote:/tmp/test# ls -la
итого 0                   
drwxr-xr-x  3 rain rain  72 Фев  3 11:43 .
drwxrwxrwt 12 root root 408 Фев  3 11:43 ..
drwxr-x---  2 2005 2005  48 Фев  3 11:43 bla
root@acnote:/tmp/test# useradd test123
root@acnote:/tmp/test# groupadd -g 2005 lalala
root@acnote:/tmp/test# usermod -a -G lalala test123
root@acnote:/tmp/test# su -l test123
Каталог отсутствует или недоступен, вход в систему выполняется с HOME=/
$ bash
test123@acnote:/$ id
uid=5008(test123) gid=5009(test123) группы=5009(test123),2005(lalala)
test123@acnote:/$ cd /tmp/test
test123@acnote:/tmp/test$ ls -la
итого 0
drwxr-xr-x  3 rain rain    72 Фев  3 11:43 .
drwxrwxrwt 12 root root   408 Фев  3 11:44 ..
drwxr-x---  2 2005 lalala  48 Фев  3 11:43 bla
test123@acnote:/tmp/test$ cd bla/
bash: cd: bla/: Отказано в доступе
test123@acnote:/tmp/test$ ls -lan
итого 0
drwxr-xr-x  3 1000 1000  72 Фев  3 11:43 .
drwxrwxrwt 12    0    0 408 Фев  3 11:44 ..
drwxr-x---  2 2005 2005  48 Фев  3 11:43 bla
test123@acnote:/tmp/test$ uname -a
Linux acnote 3.2.0-acnote #3 PREEMPT Mon Jan 9 20:32:42 UTC 2012 i686 GNU/Linux
test123@acnote:/tmp/test$

YAR ★★★★★
() автор топика
Ответ на: комментарий от mky
       no_root_squash                                                                                                          
              Turn off root squashing. This option is mainly useful for diskless clients.                                      
                                                                                                                               
       all_squash                                                                                                              
              Map  all  uids  and  gids  to  the anonymous user. Useful for NFS-exported public FTP directories, news spool    
              directories, etc. The opposite option is no_all_squash, which is the default setting.  

Нет смысла ставить / убирать - она дефолтная

YAR ★★★★★
() автор топика
Ответ на: комментарий от YAR

Затрудняюсь ответить, что именно не дает доступа, может selinux? У меня приведенные тобой действия работают. Клиент Дебиан, сервер RHEL4, так же в качестве сервера пробовал HP-UX, тоже работает.

sdio ★★★★★
()

Решено:

rain@mws64:~$ grep RPCMOUNT /etc/default/nfs-kernel-server 
RPCMOUNTDOPTS=
#RPCMOUNTDOPTS=--manage-gids
YAR ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.