Как смонтировать общий ресурс Windows на Linux с конкретными учетными данными и правами собственности конкретного пользователя Linux?

Вопрос или проблема

У меня есть пользователь linux lUser (uid=123), который находится в группе lGroup (guid=145). У меня есть пользователь windows wUser, который имеет полный доступ к расшаренной папке. Я хочу автоматически смонтировать эту папку на linux-устройстве и предоставить lUser полный доступ к этой директории. Я отредактировал /etc/fstab:

//192.168.1.2/WinShare /home/root/WinShare cifs
username=wUser,password=Password,iocharset=utf8,sec=ntlm,uid=123,gid=145
0 0

Я выполняю sudo mount -a, и эта папка все еще принадлежит root.

Затем я создал пользователей на обеих машинах с тем же именем и паролем. После этого я добавил следующую строку в fstab

//192.168.1.2/WinShare /home/user/WinShare cifs
iocharset=utf8,sec=ntlm,uid=1000,gid=1000 0 0

Она все еще монтируется как root

Я также пытался сделать:

//192.168.1.2/WinShare /home/user/WinShare ntfs-3g
users,permissions,auto 0 0

все то же самое …

Согласно mount.cifs документации, параметры uid и gid работают только тогда, когда сервер не поддерживает расширения UNIX. Параметры forceuid и forcegid предотвращают это поведение. Если вы подключаетесь к NAS, он также может использовать Samba.

Вы также можете указать UID и GID, используя фактическое имя пользователя/группы.

Существует также этот баг в Ubuntu, возможно, он все еще актуален.

Ответ или решение

Как смонтировать Windows-общий ресурс на Linux с использованием специфических учетных данных и правами собственности конкретного Linux-пользователя

Ваша задача заключается в автоматическом монтировании Windows-общего ресурса на Linux-машине с определёнными учетными данными и правами доступа, установленными для Linux-пользователя. Рассмотрим шаги для выполнения этой задачи, учитывая предоставленные вами детали.

Шаг 1: Убедитесь в наличии необходимых пакетов

Для начала убедитесь, что на вашей Linux-системе установлены необходимые пакеты для работы с CIFS (Common Internet File System):

sudo apt update
sudo apt install cifs-utils

Шаг 2: Настройка файла /etc/fstab

Ваша запись в /etc/fstab выглядит адекватно, но для обеспечения правильных прав доступа можно попробовать использовать параметры file_mode и dir_mode. Это может помочь установить более специфичные права на файлы и каталоги. Вот пример записи в /etc/fstab, который вы можете попробовать:

//192.168.1.2/WinShare /home/root/WinShare cifs
username=wUser,password=Password,iocharset=utf8,sec=ntlm,uid=123,gid=145,file_mode=0775,dir_mode=0775,noperm
0       0

Обратите внимание на следующие параметры:

  • file_mode=0775 — устанавливает права на файлы, позволяя чтение и запись пользователю и группе.
  • dir_mode=0775 — устанавливает права на каталоги аналогичным образом.
  • noperm — отключает проверку прав, что позволяет избежать ситуаций с правами.

Шаг 3: Монтирование общей папки

После внесения изменений в /etc/fstab, выполните команду для монтирования всех файловых систем:

sudo mount -a

Шаг 4: Проверка прав доступа

Чтобы убедиться, что общий ресурс смонтирован с правильными правами доступа, выполните команду:

ls -l /home/root/WinShare

Вы должны увидеть, что владелец и группа соответствуют lUser и lGroup.

Шаг 5: Убедитесь в поддержке UNIX-расширений

Если при использовании вышеуказанных настроек проблема не решена, вероятной причиной может быть отсутствие поддержки UNIX-расширений на сервере. В этом случае, попробуйте добавить -o vers=3.0 или -o vers=2.0 в параметры монтирования, чтобы указать версию SMB:

//192.168.1.2/WinShare /home/root/WinShare cifs
username=wUser,password=Password,iocharset=utf8,sec=ntlm,uid=123,gid=145,file_mode=0775,dir_mode=0775,noperm,vers=3.0
0       0

Шаг 6: Альтернативный метод авторизации через файл

Если вы не хотите хранить пароль в открытом виде в /etc/fstab, создайте файл с учетными данными:

  1. Создайте файл, например, /etc/samba/creds:
    sudo nano /etc/samba/creds
  2. Вставьте в него следующие строки:
    username=wUser
    password=Password
  3. Сохраните, затем измените права доступа к файлу:
    sudo chmod 600 /etc/samba/creds

Теперь вы можете ссылаться на этот файл в /etc/fstab:

//192.168.1.2/WinShare /home/root/WinShare cifs
credentials=/etc/samba/creds,iocharset=utf8,sec=ntlm,uid=123,gid=145,file_mode=0775,dir_mode=0775,noperm
0       0

Заключение

Следуя вышеизложенным рекомендациям, вы сможете смонтировать Windows-общий ресурс на своем Linux-сервере с нужными учетными данными и правами доступа для конкретного пользователя. Если вы столкнетесь с дополнительными трудностями, возможно, стоит проверить настройки файлового сервера Windows или обратиться к документации по Samba для более глубокого анализа.

Оцените материал
Добавить комментарий

Капча загружается...