Настройка NFS-сервера и клиентов на Debian Lenny
В этой статье описан процесс настройки NFS-сервера и его клиентов. NFS расшифровывается как Network File System (Сетевая Файловая Система). Клиенты, подключившие себе ресурсы с NFS-сервера, могут работать с файлами на удаленном сервере также, как если бы они располагались на локальном жестком диске.
В статье мы будем придерживаться следующих соглашений:
- NFS-сервер: server.example.com с IP-адресом 192.168.0.100
- NFS-клиент: client.example.com с IP-адресом 192.168.0.101
Установка NFS
Сервер
apt-get install nfs-kernel-server nfs-common portmap
Клиент
apt-get install nfs-common portmap
Экспорт директорий с сервера
Сделаем директории /home и /var/nfs доступными для клиентов. Для этого мы должны “экспортировать” их с сервера.
Обычно клиент монтирует NFS-ресурс с правами nobody. Но директория /home, как правило, не принадлежит пользователю nobody (и категорически не рекомендуется менять ее владельца). Помимо чтения, мы хотим предоставить возможность записи в нее, так что укажем NFS, что мы хотим предоставлять доступ к /home от пользователя root. (Если выдается доступ только для чтения, то это не нужно). Ну и наконец необходимо создать директорию /var/nfs и изменить ее владельца на nobody:nogroup
mkdir /var/nfs
chown nobody:nogroup /var/nfs
Теперь отредактируем файл /etc/exports в соответствии с описанными выше параметрами доступа к NFS-ресурсам.
# /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). # # Example for NFSv2 and NFSv3: # /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) # /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) # /home 192.168.0.101(rw,sync,no_root_squash,no_subtree_check) /var/nfs 192.168.0.101(rw,sync,no_subtree_check)
(Опция no_root_squash необходима для доступа к директории /home от имени root)
Для получения более подробной информации по опциям и параметрам файла exports обратитесь к документации
man 5 exports
Чтобы сделанные изменения вступили в силу, выполните
exportfs -a
Монтирование NFS-ресурсов
Клиент
Создадим точки монтирования для NFS-ресурсов:
mkdir -p /mnt/nfs/home
mkdir -p /mnt/nfs/var/nfs
И попробуем их смонтировать:
mount 192.168.0.100:/home /mnt/nfs/home
mount 192.168.0.100:/var/nfs /mnt/nfs/var/nfs
Проверим, смонтировались ли “шары”?
client:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg0-root 19G 676M 17G 4% /
tmpfs 253M 0 253M 0% /lib/init/rw
udev 10M 80K 10M 1% /dev
tmpfs 253M 0 253M 0% /dev/shm
/dev/sda1 471M 20M 427M 5% /boot
192.168.0.100:/home 29G 684M 27G 3% /mnt/nfs/home
192.168.0.100:/var/nfs
29G 684M 27G 3% /mnt/nfs/var/nfs
client:~#
client:~# mount
/dev/mapper/vg0-root on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
192.168.0.100:/home on /mnt/nfs/home type nfs (rw,addr=192.168.0.100)
192.168.0.100:/var/nfs on /mnt/nfs/var/nfs type nfs (rw,addr=192.168.0.100)
client:~#
Проверяем работу с файлами
Создадим тестовые файлы в смонтированных директориях
Клиент
touch /mnt/nfs/home/test.txt
touch /mnt/nfs/var/nfs/test.txt
Теперь можно зайти на сервер и убедиться, что физически файлы созданы там
server:~# ls -l /home/ total 4 drwxr-xr-x 2 administrator administrator 4096 2009-02-16 13:18 administrator -rw-r--r-- 1 root root 0 2009-03-12 17:08 test.txt server:~# server:~# ls -l /var/nfs total 0 -rw-r--r-- 1 nobody nogroup 0 2009-03-12 17:08 test.txt server:~#
Обратите внимание: в директории /home владельцем созданного файла является root, так как мы указали серверу, что мы работаем с этим ресурсои от имени root. В /var/nfs все “по умолчанию” - владелец nobody
Монтирование NFS-ресурсов во время загрузки
Для того, чтобы NFS-ресурсы монтировались автоматически во время загрузки клиента, добавьте следующие параметры в файл /etc/fstab на клиентской машине:
[...] 192.168.0.100:/home /mnt/nfs/home nfs rw,sync,hard,intr 0 0 192.168.0.100:/var/nfs /mnt/nfs/var/nfs nfs rw,sync,hard,intr 0 0
Вместо rw,sync,hard,intr вы можете использовать другие опции монтирования. Для более полной информации прочтите
man nfs
Перезагрузите клиента. После загрузки ресурсы должны быть уже смонтированы.
18.05.09 | *NIX, Debian, Network |
С простейшим монтированием шар тут всё просто, а вот дальше что-то никак не разберусь.
Есть сервер, общая папка.
Есть 5 клиентов под Linux, каждый сидит под своим пользователем и группой на своём компе.
Необходимо организовать доступ к общей папке, чтобы каждый мог читать и писать как в свои так и в чужие файлы.
На сервере прописано так:
/var/storage/exchange 192.168.1.0/24(anonuid=1002,sync,anongid=100,insecure,all_squash,rw,nohide,no_subtree_check)
На клиентах так:
beam:/var/storage/exchange /mnt/exchange nfs user 0 0
В результате доступ есть, но создаваемые файлы имеют владельца 1002. И если этот id совпадает с id на компьютере пользователя - то всё хорошо, если нет - то плохо.
Как сделать так чтобы на компах клиентов файлы были от их владельцев?
И желательно чтобы на сервере было видно кто из клиентов его создавал.