Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Серверы Linux. Часть VI. Знакомство с сервером Samba

Оригинал: Samba authentication
Автор: Paul Cobbaut
Дата публикации: 24 мая 2015 г.
Перевод: A.Панин
Дата перевода: 14 июля 2015 г.

Глава 14. Аутентификация клиентов сервера Samba

14.1. Создание учетных записей пользователей на уровне системы Linux

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

[root@RHEL52 ~]# useradd -c "Serena Williams" serena
[root@RHEL52 ~]# useradd -c "Justine Henin" justine
[root@RHEL52 ~]# useradd -c "Martina Hingis" martina
[root@RHEL52 ~]# passwd serena
Изменяется пароль пользователя serena.
Новый пароль : 
Повторите ввод нового пароля : 
passwd: все данные аутентификации успешно обновлены.
[root@RHEL52 ~]# passwd justine
Изменяется пароль пользователя justine.
Новый пароль : 
Повторите ввод нового пароля : 
passwd: все данные аутентификации успешно обновлены.
[root@RHEL52 ~]# passwd martina
Изменяется пароль пользователя martina.
Новый пароль : 
Повторите ввод нового пароля : 
passwd: все данные аутентификации успешно обновлены.

14.2. Создание учетных записей пользователей на уровне сервера Samba

После этого мы должны добавить информацию о созданных учетных записях пользователей в файл базы данных пользователей сервера Samba с именем smbpasswd с теми же паролями.

[root@RHEL52 ~]# smbpasswd -a serena
New SMB password:
Retype new SMB password:
Added user serena.
[root@RHEL52 ~]# smbpasswd -a justine
New SMB password:
Retype new SMB password:
Added user justine.
[root@RHEL52 ~]# smbpasswd -a martina
New SMB password:
Retype new SMB password:
Added user martina.

14.3. Режим контроля доступа к разделяемому ресурсу security = user

Помните о том, как в предыдущей главе мы устанавливали режим доступа к разделяемому ресурсу сервера Samba с помощью директивы security = share в секции глобальных параметров сервера [global]? Так как в данном случае мы хотим сделать обязательной аутентификацию пользователей с использованием их имен и паролей для доступа к разделяемому ресурсу нашего сервера Samba, нам придется задействовать другой режим контроля доступа. Директива security = user потребует от клиента передачи корректного идентификатора пользователя и пароля перед получением доступа к разделяемому ресурсу.

Исходя из этого, наша секция глобальных параметров сервера [global] будет выглядеть аналогичным образом:

[global]
 workgroup = WORKGROUP
 netbios name = TEACHER0
 server string = Samba File Server
 security = user

14.4. Настройка разделяемого ресурса

Добавим следующую секцию описания разделяемого ресурса [share] в файл конфигурации нашего сервера Samba с именем smb.conf (также не стоит забывать о необходимости создания самой разделяемой директории /srv/samba/authwrite).

[authwrite]
path = /srv/samba/authwrite
comment = authenticated users only
read only = no
guest ok = no

14.5. Проверка возможности доступа к разделяемому ресурсу с помощью команды net use

После перезапуска сервера Samba мы должны протестировать возможность доступа к содержимому разделяемой директории с использованием учетных записей различных пользователей на различных компьютерах, работающих под управлением ОС производства компании Microsoft. В приведенных ниже примерах для проверки возможности доступа к разделяемому ресурсу используется команда net use. Сначала используем учетную запись пользователя serena с компьютера, работающего под управлением ОС Windows XP.

C:\>net use m: \\teacher0\authwrite stargate /user:serena
The command completed successfully.

C:\>m:

M:\>echo Приветствие от пользователя Serena > serena.txt

В следующем примере используется учетная запись пользователя martina с компьютера, работающем под управлением ОС Windows 2000, причем попытка создания пользователем собственного файла завершается успешно, а попытка модификации файла другого пользователя с именем serena приводит к генерации сообщения об ошибке.

C:\>net use k: \\teacher0\authwrite stargate /user:martina
The command completed successfully.

C:\>k:

K:\>echo greetings from martina > Martina.txt

K:\>echo test overwrite > serena.txt
Access is denied.

14.6. Проверка возможности доступа к разделяемому ресурсу с помощью утилиты smbclient

Также вы можете соединяться с сервером и проходить аутентификацию с помощью утилиты smbclient. Сначала попробуем использовать некорректный пароль.

[root@RHEL52 samba]# smbclient //teacher0/authwrite -U martina wrongpass
session setup failed: NT_STATUS_LOGON_FAILURE

Теперь попробуем передать корректный пароль и удостовериться в том, что мы можем получить доступ к файлу из разделяемой директории.

[root@RHEL52 samba]# smbclient //teacher0/authwrite -U martina stargate
Domain=[TEACHER0] OS=[Unix] Server=[Samba 3.0.33-3.7.el5]
smb: \> more serena.txt 
getting file \serena.txt of size 14 as /tmp/smbmore.QQfmSN (6.8 kb/s)
один
два
три
smb: \> q

14.7. Проверка информации о владельцах файлов

На данный момент в нашем распоряжении имеется отдельный файловый сервер Samba с довольно простой конфигурацией для доступа к разделяемым ресурсам с обязательным прохождением аутентификации. При использовании описанной выше конфигурации файлы и разделяемые директории будут в действительности принадлежать пользователям, которые создали их.

[root@RHEL52 samba]# ls -l /srv/samba/authwrite/
итого 8
-rwxr--r-- 1 martina martina  0 янв 21 20:06 martina.txt
-rwxr--r-- 1 serena  serena  14 янв 21 20:06 serena.txt
-rwxr--r-- 1 serena  serena   6 янв 21 20:09 ser.txt

14.8. Стандартные проблемы

14.8.1. Ошибка NT_STATUS_BAD_NETWORK_NAME

Вы можете получить сообщение об ошибке NT_STATUS_BAD_NETWORK_NAME в том случае, если забудете создать разделяемую директорию.

[root@RHEL52 samba]# rm -rf /srv/samba/authwrite/
[root@RHEL52 samba]# smbclient //teacher0/authwrite -U martina stargate
Domain=[TEACHER0] OS=[Unix] Server=[Samba 3.0.33-3.7.el5]
tree connect failed: NT_STATUS_BAD_NETWORK_NAME

14.8.2. Ошибка NT_STATUS_LOGON_FAILURE

Вы можете получить сообщение об ошибке NT_STATUS_LOGON_FAILURE в том случае, если введете некорректный пароль или используете имя несуществующего пользователя.

[root@RHEL52 samba]# smbclient //teacher0/authwrite -U martina STARGATE
session setup failed: NT_STATUS_LOGON_FAILURE

14.8.3. Имена пользователей не зависят от регистра

Помните о том, что на уровне системы Linux имена пользователей зависят от регистра.

[root@RHEL52 samba]# su - MARTINA
su: user MARTINA does not exist
[root@RHEL52 samba]# su - martina
[martina@RHEL52 ~]$ 

Но в то же время, имена пользователей на компьютерах, работающих под управлением операционных систем производства компании Microsoft, не зависят от регистра.

[root@RHEL52 samba]# smbclient //teacher0/authwrite -U martina stargate
Domain=[TEACHER0] OS=[Unix] Server=[Samba 3.0.33-3.7.el5]
smb: \> q
[root@RHEL52 samba]# smbclient //teacher0/authwrite -U MARTINA stargate
Domain=[TEACHER0] OS=[Unix] Server=[Samba 3.0.33-3.7.el5]
smb: \> q

14.9. Практическое задание: аутентификация клиентов сервера Samba

0. Убедитесь в том, что в вашем распоряжении имеются резервные копии использованных в предыдущих практических заданиях файлов конфигурации сервера Samba smb.conf с корректными именами.

1. Создайте три учетных записи пользователя (на уровне системы Linux и сервера Samba) и запомните введенные при их создании пароли!

2. Настройте разделяемую директорию таким образом, чтобы доступ к ее содержимому могли получить лишь прошедшие аутентификацию пользователи.

3. Воспользуйтесь утилитой smbclient, а также программными компонентами ОС Windows для осуществления доступа к содержимому разделяемой директории с использованием более чем одной учетной записи пользователя (в ОС Windows для этого потребуется завершить пользовательский сеанс и осуществить повторный вход в систему с использованием другой учетной записи пользователя).

4. Удостоверьтесь в том, что созданные пользователями файлы в действительности принадлежат им.

5. Попытайтесь изменить или удалить файл, созданный другим пользователем.

14.10. Корректная процедура выполнения практического задания: аутентификация клиентов сервера Samba

1. Создайте три учетных записи пользователя (на уровне системы Linux и сервера Samba) и запомните введенные при их создании пароли!

useradd -c 'SMB user1' userx
passwd userx

2. Настройте разделяемую директорию таким образом, чтобы доступ к ее содержимому могли получить лишь прошедшие аутентификацию пользователи.

Секция с описанием разделяемого ресурса файла конфигурации сервера Samba с именем smb.conf может выглядеть следующим образом:

[authwrite]
 path = /srv/samba/authwrite
 comment = authenticated users only
 read only = no  
 guest ok = no

3. Воспользуйтесь утилитой smbclient, а также программными компонентами ОС Windows для осуществления доступа к содержимому разделяемой директории с использованием более чем одной учетной записи пользователя (в ОС Windows для этого потребуется завершить пользовательский сеанс и осуществить повторный вход в систему с использованием другой учетной записи пользователя).

В системе Linux: smbclient //studentX/authwrite -U user1 <пароль>

В системе Windows: net use p: \\studentX\authwrite <пароль> /user:user2

4. Удостоверьтесь в том, что созданные пользователями файлы в действительности принадлежат им.

ls -l /srv/samba/authwrite

5. Попытайтесь изменить или удалить файл, созданный другим пользователем.

У вас не должно быть возможности модификации или удаления файлов, принадлежащих другому пользователю.


Предыдущий раздел: Оглавление Следующий раздел:
Глава 13. Первая учетная запись пользователя сервера Samba   Глава 15. Ограничение доступа к разделяемым с помощью сервера Samba ресурсам