Назад | Перейти на главную страницу

Как разрешить запись в смонтированный раздел NFS

Как разрешить конкретному пользователю право записи в раздел NFS?

Я смонтировал общий ресурс NFS на моем локальном хосте (установка Fedora), и я могу читать и писать как пользователь root, но я не могу писать как пользователь apache, хотя все файлы и каталоги в общей папке на моем локальном хосте и удаленный хост принадлежат apache.

Например, я смонтировал его с помощью этой строки в моем / etc / fstab:

remotehost:/data/media     /data/media             nfs     _netdev,soft,intr,rw,bg        0 0

И оба местоположения принадлежат apache:

[root@remotehost ~]# ls -la /data
total 24
drwxr-xr-x.  6 root    root    4096 Jan  6  2011 .
dr-xr-xr-x. 28 root    root    4096 Oct 31  2011 ..
drwxr-xr-x   4 apache  apache  4096 Jan 14  2011 media

[root@localhost ~]# ls -la /data
total 16
drwxr-xr-x   4 apache apache 4096 Dec  7  2011 .
dr-xr-xr-x. 27 root   root   4096 Jun 11 15:51 ..
drwxrwxrwx   5 apache apache 4096 Jan 31  2011 media

Однако, когда я пытаюсь писать как пользователь apache, я получаю сообщение об ошибке «Permission denied».

[root@localhost ~]# sudo -u apache touch /data/media/test.txt'
touch: cannot touch `/data/media/test.txt': Permission denied

Но, конечно, он отлично работает как root. Что я делаю не так?

NFS разрешает операции на основе идентификатора пользователя, а не имени пользователя. Чтобы иметь возможность писать /data/media на клиенте NFS вам необходимо убедиться, что apache на localhost и apache на remotehost иметь одинаковые числовые идентификаторы пользователей.

Перечень файлов в сообщении не подтверждает этого.

Действительно localhost листинг говорит, что точка крепления /data/media принадлежит apache @ localhost.

[root@localhost ~]# ls -la /data
 ...
 drwxrwxrwx   5 apache apache 4096 Jan 31  2011 media

Удаленный список показывает, что общий ресурс /data/media принадлежит apache @ remotehost.

[root@remotehost ~]# ls -la /data
drwxr-xr-x   4 apache  apache  4096 Jan 14  2011 media

Если числовые идентификаторы пользователей apache @ localhost и apache @ remotehost отличаются, каталог не будет доступен для записи.

Вы можете использовать команду ls -lna для проверки числовых идентификаторов пользователей.

Это всего лишь предположение. В OP нет ничего, что конкретно подтверждает, что есть несогласие в идентификаторах пользователей.

  • Доступен ли экспорт для записи (отметьте /etc/exports на сервере)? Как вы найдете в exports(5):

       rw     Allow both read and write requests on this NFS volume.
              The default is to disallow any request which changes the filesystem.
              This can also be made explicit by using the ro option.
    
  • (Вероятно, не имеет значения, но я мало знаю о существующих политиках SELinux) Вы используете SELinux на сервере? Вы можете проверить с getenforce, возможно, захочется повторить попытку после setenforce 0 (отменить с помощью setenforce 1).

  • Я заметил, что UID совпадают. Но я считаю, что стоит упомянуть, что для того, чтобы пользователи и группы соответствовали именам, а не идентификаторам, вы можете настроить idmap сервис на обоих хостах.