Linux mount nfs no root

Mount an NFS share as non root user in cli

Yes, only root could specifiy options to mount command, you have to run mount with only target from fstab as argument: mount /usr/backup .

5 Answers 5

Users could modify system’s mount table either by

Sample:

server side

/srv/share 192.168.30.26(rw,sync,insecure,all_squash,no_subtree_check) 

client side

On client host, with IP address 192.168.30.26 you have to add in /etc/fstab something like:

192.168.30.11:/srv/share /usr/backup nfs rw,relatime,user,noauto 0 0 

Then, users on 192.168.30.26 must be able to mount share by just running:

  • noauto prevent system to mount the share at boot time.
  • user tell system to autorize (local) users to mount the share.

@RajagopalSubramanian Ok, then my answer is user must be able to mount /path/to/target . If this is not case, please post answer and/or last lines of dmesg command.

@Hanginoninquietdesperation Users could modify system mount table either by using sudo or su or by having entry with user,noauto in /etc/fstab .

@RajagopalSubramanian No only root can do that , as user you could only run mount with 1 argument: the target. And this must be configured (by root user) in /etc/fstab

In order to allow a regular user to mount NFS share, you can do the following.

On the NFS client host (e.g., 10.1.1.20), update /etc/fstab as root.

$ sudo vi /etc/fstab 192.168.30.26:/root/backup /usr/backup nfs rw,noauto,user 0 0 ^^^^ 

In the above, «user» allows a non-root user to mount, and «noauto» means no automatic mount on boot.

On the NFS server host (e.g., 10.1.1.10), enable export for the client as root.

If you want to enable export non-permanently (which is not persistent across reboots):

 $ sudo exportfs 192.168.30.26:/export -o rw,async,no_root_squash,no_subtree_check 

If you want to enable export permanently (which is persistent across reboots):

 $ sudo vi /etc/exports /export 192.168.30.26(rw,async,no_root_squash,no_subtree_check) $ sudo exportfs -a 

Now you can log in as «user» on the NFS client host, and do NFS mount as follows.

Читайте также:  Linux puppy форматировать диск

Источник

Монтирование NFS на сервере Ubuntu 18.04 LTS

NFS позволяет системе предоставлять в общее пользование каталоги и файлы другим системам через сеть. С помощью NFS пользователи и программы могут получить доступ к файлам на удаленной системе так же, как если бы они были локальными файлами.

Нам потребуются две виртуальные машины:

  • nfs-client , ip-адрес 192.168.30.20 — которая будет клиентом
  • nfs-server , ip-адрес 192.168.30.21 — которая будет сервером

Установка компонентов

На виртуальную машину nfs-server устанавливаем пакет nfs-kernel-server :

$ sudo apt install nfs-kernel-server

На виртуальную машину nfs-client устанавливаем пакет nfs-common :

$ sudo apt install nfs-common

Создание каталога на сервере

На виртуальной машине nfs-server создаем каталог:

$ sudo mkdir -p /srv/nfs/common

Поскольку каталог создан с помощью команды sudo , он принадлежит пользователю root . Но NFS переведёт все операции root клиента в nobody:nogroup в целях безопасности. Во избежание конфликта нужно изменить права на каталог:

$ sudo chown nobody:nogroup /srv/nfs/common

Предоставим всем право записи в этот каталог:

$ sudo chmod a+w /srv/nfs/common

Суперпользователи могут выполнять в системе любые задачи. Однако каталоги, смонтированные через NFS, технически не являются частью системы, так что по умолчанию сервер NFS не будет выполнять операции, требующие привилегий суперпользователя. Это ограничение по умолчанию означает, что суперпользователь клиента не может записывать файлы в корневом каталоге, изменять привилегии и выполнять любые другие задачи суперпользователя в 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) # /srv/nfs/common 192.168.30.20(rw,sync,no_subtree_check) /home 192.168.30.20(rw,sync,no_root_squash,no_subtree_check)
$ sudo systemctl restart nfs-kernel-server

Параметры обоих каталогов почти одинаковы, за исключением no_root_squash , который присутствует только в настройках домашнего каталога. Домашний каталог добавлен с целью посмотреть, как доверенные пользователи nfs-client могут получить права суперпользователя.

  • Параметр rw устанавливает права клиента на чтение и изменение каталога.
  • Параметр sync синхронизирует каталоги по NFS, что обеспечивает согласовние содержимого, но замедляет скорость выполнения операций.
  • Параметр no_subtree_check предотвращает проверку поддерева, это рекомендуется сделать в большинстве случаев.
  • Параметр no_root_squash — по умолчанию NFS транслирует запросы от пользователя root клиента пользователю noboby сервера, благодаря чему пользователь root клиента не может использовать файловую систему хоста с теми же привилегиями. Данная директива блокирует эту функцию безопасности.

Правила для файервола на сервере

Теперь проверим состояние файервола:

$ sudo ufw status Status: active

Разрешим соединения с хоста 192.168.30.20 на порту 2049 :

$ sudo ufw allow in from 192.168.30.20 to any port nfs
$ sudo ufw status Status: active To Action From ---------------------------------------------------- 2049 ALLOW 192.168.30.20

Создание точек монтирования на клиенте

Итак, сервер настроен и подготовлен к совместному использованию каталогов с клиентом. Теперь нужно создать несколько точек монтирования и смонтировать удалённые каталоги.

Читайте также:  Linux replace line in file

Создаем каталоги, куда будем монтировать:

$ sudo mkdir /mnt/nfs $ sudo mkdir /mnt/nfs/common $ sudo mkdir /mnt/nfs/home

Монтирование удаленных каталогов на клиенте

Монтируем удаленные каталоги:

$ sudo mount 192.168.30.21:/srv/nfs/common /mnt/nfs/common $ sudo mount 192.168.30.21:/home /mnt/nfs/home

Доступ к каталогу common

Давайте на клиенте от имени root создадим файл test.txt в директории /mnt/nfs/common :

$ sudo nano /mnt/nfs/common/test.txt

И посмотрим права на этот файл:

$ ls -la /mnt/nfs/common total 12 drwxrwxrwx 2 nobody nogroup 4096 мар 4 13:55 . drwxr-xr-x 4 root root 4096 мар 4 12:37 .. -rw-r--r-- 1 nobody nogroup 13 мар 4 13:54 test.txt

Поскольку этот каталог был смонтирован со стандартным поведением NFS, а тестовый файл принадлежит пользователю root , в расшаренном каталоге права на файл изменятся на nobody:nogroup . Суперпользователь клиента не сможет выполнять задачи администратора (изменять привилегии, создавать каталоги для пользователей и групп и т.п.).

Доступ к каталогу home

Теперь на клиенте от имени root создадим файл test.txt в директории /mnt/nfs/home :

$ sudo nano /mnt/nfs/home/test.txt

И посмотрим права на этот файл:

$ ls -la /mnt/nfs/home total 16 drwxr-xr-x 3 root root 4096 мар 4 14:01 . drwxr-xr-x 4 root root 4096 мар 4 12:37 .. drwxr-xr-x 9 evgeniy evgeniy 4096 мар 2 10:59 evgeniy -rw-r--r-- 1 root root 13 мар 4 14:01 test.txt

При монтировании этого каталога поведение NFS по умолчанию было изменено с помощью параметра no_root_squash . Благодаря этому суперпользователь клиента сохраняет свои привилегии.

Размонтирование удаленных каталогов на клиенте

Для этого достаточно выполнить команды:

$ cd ~ $ sudo umount /mnt/nfs/common $ sudo umount /mnt/nfs/home

Монтирование NFS при загрузке клиента

Если удаленные каталоги на клиенте нужны постоянно, удобно монтировать их сразу при загрузке системы:

192.168.30.21:/srv/nfs/common /mnt/nfs/common nfs auto,nofail,noatime,intr,tcp,actimeo=3600 0 0 192.168.30.21:/home /mnt/nfs/home nfs auto,nofail,noatime,intr,tcp,actimeo=3600 0 0
  • auto — файловая система будет смонтирована автоматически при загрузке
  • nofail — предотвращает появление ошибок, если NFS-сервер недоступен
  • noatime — не обновлять информацию о времени доступа к файловой системе
  • intr — прерывать файловые операции, если NFS-сервер долго не отвечает
  • tcp — для монтирования использовать протокол TCP, а не стандартный UDP
  • actimeo — время кэширования атрибутов файлов и каталогов в секундах

Доступ к NFS-серверу за NAT

Наш NFS-сервер расположен во внутренней сети 192.168.30.0/24 и имеет ip-адрес 192.168.30.21 . Выход в интернет для компьютеров сети 192.168.30.0/24 обеспечивает маршрутизатор с двумя сетевыми интерфейсами. Интерфейс enp0s3 смотрит во внешнюю сеть и имеет ip-адрес 192.168.110.8 . Интерфейс enp0s8 смотрит во внутреннюю сеть и имеет ip-адрес 192.168.30.3 . Выглядит это примерно так (все компьютеры, кроме одного, виртуальные)

Читайте также:  Поменять версию java linux

Чтобы обеспечить доступ к NFS-серверу из сети 192.168.110.0/24 , выполняем на маршрутизаторе команды:

$ sudo iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 2049 -j DNAT --to-destination 192.168.30.21 $ sudo iptables -t nat -A PREROUTING -i enp0s3 -p udp --dport 2049 -j DNAT --to-destination 192.168.30.21 $ sudo iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 111 -j DNAT --to-destination 192.168.30.21 $ sudo iptables -t nat -A PREROUTING -i enp0s3 -p udp --dport 111 -j DNAT --to-destination 192.168.30.21

И сохраняем эти правила, чтобы они применились после перезагрузки (должен быть установлен пакет iptables-persistent ):

$ sudo iptables-save > /etc/iptables/rules.v4

На виртуальной машине nfs-server редактируем файл /etc/exports :

/srv/nfs/common 192.168.30.0/24(rw,sync,no_subtree_check) 192.168.110.12(rw,sync,no_subtree_check) /home 192.168.30.0/24(rw,sync,no_subtree_check) 192.168.110.12(rw,sync,no_subtree_check)
$ sudo systemctl restart nfs-kernel-server

А на виртуальной машине nfs-server изменяем настройки файервола:

$ sudo ufw delete allow in from 192.168.30.20 to any port nfs
$ sudo ufw allow in from 192.168.30.0/24 to any port nfs $ sudo ufw allow in from 192.168.110.12 to any port nfs
$ sudo ufw status Status: active To Action From ------------------------------------------------------ 2049 ALLOW 192.168.30.0/24 2049 ALLOW 192.168.110.12

Теперь монтировать удаленные каталоги может хост 192.168.110.12 и все хосты из сети 192.168.30.0/24 .

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

  • 1С:Предприятие (31)
  • API (29)
  • Bash (43)
  • CLI (99)
  • CMS (139)
  • CSS (50)
  • Frontend (75)
  • HTML (66)
  • JavaScript (150)
  • Laravel (72)
  • Linux (146)
  • MySQL (76)
  • PHP (125)
  • React.js (66)
  • SSH (27)
  • Ubuntu (68)
  • Web-разработка (509)
  • WordPress (73)
  • Yii2 (69)
  • БазаДанных (95)
  • Битрикс (66)
  • Блог (29)
  • Верстка (43)
  • ИнтернетМагаз… (84)
  • КаталогТоваров (87)
  • Класс (30)
  • Клиент (27)
  • Ключ (28)
  • Команда (68)
  • Компонент (60)
  • Конфигурация (62)
  • Корзина (32)
  • ЛокальнаяСеть (28)
  • Модуль (34)
  • Навигация (31)
  • Настройка (140)
  • ПанельУправле… (29)
  • Плагин (33)
  • Пользователь (26)
  • Практика (99)
  • Сервер (74)
  • Событие (27)
  • Теория (105)
  • Установка (66)
  • Файл (47)
  • Форма (58)
  • Фреймворк (192)
  • Функция (36)
  • ШаблонСайта (68)

Источник

Оцените статью
Adblock
detector