По умолчанию, при монтировании smb/cifs удаленной папки файлы внутри нее показываются, как файлы пользователя и группы root. Но частенько бывает так, что у нас есть пользователь под которым мы логинимся на smb/cifs сервере и локальный пользователь не root.

Минимальный набор параметров

В самом простом виде команда для монтирования выглядит так:

1
mount -t cifs -o username=user_name,password=user_password //server_name/share_name /mnt/share_name

При этом в локально папке файлы и папки будут отображаться так:

1
2
3
4
5
❯ ls -l /mnt/share_name
итого 0
drwxr-xr-x. 2 root root 0 окт 12 14:00 some
drwxr-xr-x. 2 root root 0 окт  4 16:12 other
drwxr-xr-x. 2 root root 0 окт 16 22:52 folder

Да, на сервер все изменения будут прилетать именно от имени пользователя, указанного в параметрах монтирования, но локально с этими данными можно будет работать только от root-а.

Монтируем для локального пользователя

Для использования локальным пользователем хочется, что бы все в примонтированной папке было с нашим uid/gid. Для этого есть специальные параметры монтирования (они довольно интуитивны по названию, поэтому догадать какой для чего не сложно):

  • uid - файлы отображаются как принадлежащие пользователю с указанным цифровым идентификатором;
  • gid - файлы отображаются как принадлежащие группе с указанным цифровым идентификатором.

Итого дополним нашу команду:

1
mount -t cifs -o username=user_name,password=user_password,uid=$(id -u),gid=$(id -g) //server_name/share_name /mnt/share_name

Тогда папка уже будет выглядеть так:

1
2
3
4
5
❯ ls -l
итого 0
drwxr-xr-x. 2 user group 0 окт 12 14:00 some
drwxr-xr-x. 2 user group 0 окт  4 16:12 other
drwxr-xr-x. 2 user group 0 окт 16 22:52 folder