Сервер небольшого офиса и преобразование UID

Я думаю, что эта статья в Википедии https://en.wikipedia.org/wiki/Raw_device очень хорошо объясняет это:

В вычислениях, особенно в Unix и Unix -подобные операционные системы, сырое устройство - это особый вид логического устройства, связанного с файл символьного устройства, позволяющий использовать запоминающее устройство, такое как жесткий диск. доступ к диску напрямую, минуя кеши операционной системы и буферы (хотя аппаратные кеши все еще могут использоваться).Приложения, такие как система управления базами данных, могут использовать необработанные устройства напрямую, что позволяет им управлять кэшированием данных, а не возложив эту задачу на операционную систему.

Во FreeBSD все файлы устройств фактически являются необработанными устройствами. Поддержка для не-сырые устройства были удалены в FreeBSD 4.0 для упрощения буферизации управления и повышения масштабируемости и производительности. 1

В ядре Linux сырые устройства объявлены устаревшими и запланированы для удаления. в какой-то момент, потому что вместо него можно использовать флаг O_DIRECT.

1
29.06.2017, 17:27
1 ответ

При подключении папки сервера к клиенту по сети необходимо задать 2вопроса:

  • Какой UID/GID должен иметь файл с точки зрения СЕРВЕРА
  • Какой UID/GID должен быть файлы имеют с точки зрения КЛИЕНТА

Используйте ls -lhв папке, чтобы проверить владельца файла и его группу. Обратите внимание, что Linux переводит UID в пользователя, если может, или показывает его просто как число, если не может.

Если вы не используете общую базу данных учетных записей, такую ​​как LDAP (OpenLDAP или Windows Active Directory), и не подключаете к ней свой Linux с помощью PAM, у вас есть разныебазы данных пользователей на клиенте и сервере, каждая со своим собственным паролем пользователя. -Отображение UID (файл /etc/passwdи его тень с паролем). Клиент может иметь пользователя "joe" с UID 1000, а сервер может иметь пользователя "joe" с UID 2000 и "mary" с UID 1000.

Есть несколько способов решить эту проблему с помощью Samba.

Используйте расширения Unix.

Это расширения протокола SMB, которые позволяют серверу сообщать UID клиенту. Итак, когда вы подключаетесь к серверу, предоставляя user=joeсервер:

  • переводит joe в UID, используя свою собственную базу данных
  • chowns любой созданный файл с ним
  • сообщает клиенту свой UID, и клиент сопоставляет его какому-то локальному пользователю.

Это работает отлично, но тогда вам нужно синхронизировать ваши UIDS на клиенте и сервере, что может быть неудобно делать вручную (используйте OpenLDAP с pam_ldap, если вы действительно этого хотите).

Думаю, это ваша проблема!

Хуже всего бывает, когда сервер сообщает какой-то uid, а на клиенте нет пользователя с таким uid.Таким образом, вместо имени пользователя вы видите номер.

Заставьте клиент выбирать, какого пользователя использовать.

Когда вы монтируете общий ресурс с uid=и отключаете настройку расширений unix unix extensions = noна сервере smb. конф.

  • Сервер использует пользователя из аутентификации (user=из учетных данных)
  • Клиент использует uid=.

Вам даже не нужно иметь одних и тех же пользователей на клиенте и сервере, но удобно, чтобы они были одинаковыми. Но у них могут быть разные UIDS.

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

На сервере

  • unix extensions = noв глобальном разделе в smb.conf
  • useradd -m joe
  • smbpasswd -a joe(введите пароль и запомните его)

На клиенте

  • useradd -m joe && mkdir /home/joe/Home && chown joe /home/joe/Home
  • В ]/etc/fstab

//gannet8.local/joe /home/joe/Home cifs auto,user,rw,uid=joe,gid=joe,user=joe,password=PASS_HERE

Вы должны иметь возможность создайте сколько угодно пользователей, но после 10-15 из них вам следует подумать об OpenLDAP или Active Directory (если у вас много Windows-клиентов).

Читать https://www.samba.org/samba/docs/man/manpages-3/mount.cifs.8.html

Особенно раздел «ВЛАДЕНИЕ ФАЙЛАМИ И КАТАЛОГАМИ И РАЗРЕШЕНИЯ»

0
28.01.2020, 00:53

Теги

Похожие вопросы