Автор Тема: Отображение реального uid на клиенте cifs  (Прочитано 515 раз)

Оффлайн Dron.ru

  • Участник
  • *
  • Сообщений: 23
Имеется samba сервер без домена на ОС Альт сервер 10
#cat smb.conf
[global]
security = user
passdb backend = tdbsam
inherit owner = yes
inherit permissions = yes

На сервере и в самбе настроен acl, корректно работает и отображается у windows-клиентов. Можно с windows-компов зайти и посмотреть ACL настройки безопасности файла и его владельца.

На linux-клиентах (ОС Альт Рабочая станция К 10) сетевые ресурсы монтируются в fstab с такими параметрами:
//server_IP/sharedfolder    /mnt/sharedfolder    cifs
   multiuser,cifsacl,nounix,idsfromsid,modefromsid,noperm,workgroup=GROUP,credentials=/root/user.key,_netdev 0 0

Проблема: При подключении сетевой папки владельцем всех файлов на клиенте отображается root (или пользователь указанный опцией монтирования uid=user_name), корректно отображается только gid группы владельца. Это очень не удобно - например пользователю нужно просмотреть только свои файлы в общей папке когда у него превышена квота. У windows-клиентов корректно отображается имя владельца файлов, а у linux-клиентов только номер группы. Можно ли как-то настроить cifs-клиент, чтобы отображались реальные имена владельцев файлов или хотя-бы их uid?

Оффлайн rits

  • Участник
  • *
  • Сообщений: 1 182
  • ITS
Вот, что ответил робот Llama 3.1, уж не знаю на сколько правдоподобно, проверь эти идеи.
Да, можно настроить cifs-клиент, чтобы отображались реальные имена владельцев
 файлов. Для этого необходимо использовать опцию idsfromsid вместе с winbind или sssd.

idsfromsid позволяет клиенту получать информацию о владельцах файлов из SID (Security
Identifier) Windows, но для этого необходимо сопоставить SID с uid и gid на клиенте.

Вы можете использовать winbind для сопоставления SID с uid и gid. Для этого необходимо
 установить пакет winbind и настроить его в файле /etc/samba/smb.conf:

bash

[global]
  security = user
  passdb backend = tdbsam
  inherit owner = yes
  inherit permissions = yes
  winbind use default domain = yes
  winbind enum users = yes
  winbind enum groups = yes

Затем перезапустите службу winbind и добавьте строку в файл /etc/nsswitch.conf:

bash

passwd: files winbind
group: files winbind

После этого вы можете использовать опцию idsfromsid при монтировании сетевой папки:

bash

//server_IP/sharedfolder    /mnt/sharedfolder    cifs
   multiuser,cifsacl,nounix,idsfromsid,modefromsid,noperm,workgroup=GROUP,credentials=/root/user.key,_netdev 0 0

Это должно позволить клиенту отображать реальные имена владельцев файлов.

Альтернативный вариант - использовать sssd вместо winbind. Для этого необходимо
установить пакет sssd и настроить его в файле /etc/sssd/sssd.conf:

bash

[domain/WORKGROUP]
  id_provider = ad
  access_provider = ad
  auth_provider = ad

Затем перезапустите службу sssd и добавьте строку в файл /etc/nsswitch.conf:

bash

passwd: files sss
group: files sss

После этого вы можете использовать опцию idsfromsid при монтировании сетевой папки:

bash

//server_IP/sharedfolder    /mnt/sharedfolder    cifs
   multiuser,cifsacl,nounix,idsfromsid,modefromsid,noperm,workgroup=GROUP,credentials=/root/user.key,_netdev 0 0

Это должно позволить клиенту отображать реальные имена владельцев файлов.

Оффлайн Dron.ru

  • Участник
  • *
  • Сообщений: 23
Сделал через winbind - на стороне клиента ничего не изменилось, на стороне сервера никаких ошибок в логах самбы и winbind (перезапускал службы но не весь сервер). nsswitch.conf правил на стороне клиента.