- Вопрос или проблема
- Ответ или решение
- Как смонтировать Windows-общий ресурс на Linux с использованием специфических учетных данных и правами собственности конкретного Linux-пользователя
- Шаг 1: Убедитесь в наличии необходимых пакетов
- Шаг 2: Настройка файла /etc/fstab
- Шаг 3: Монтирование общей папки
- Шаг 4: Проверка прав доступа
- Шаг 5: Убедитесь в поддержке UNIX-расширений
- Шаг 6: Альтернативный метод авторизации через файл
- Заключение
Вопрос или проблема
У меня есть пользователь 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
, создайте файл с учетными данными:
- Создайте файл, например,
/etc/samba/creds
:sudo nano /etc/samba/creds
- Вставьте в него следующие строки:
username=wUser password=Password
- Сохраните, затем измените права доступа к файлу:
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 для более глубокого анализа.