Описана настройка сетевого доступа с машин Windows на общие каталоги (шары) компьютера под Red Hat Linux 4 (сервера Samba).
Определимся с терминологией. Samba - это специальный сервер под Linux, который предоставляет те же сервисы, что и служба общих сетевых папок Windows (служба эта в Windows носит имя Server, системное имя lanmanserver). Тут для новичка может быть легкая путаница - понятие Server здесь используется в несколько другом контексте по сравнению с понятием разновидностей операционок Windows (например - Widnows 2003 Server, Windows 2000 Server, Windows 2000 Professional, Windows XP Home и т. д.). Т. е. сервером в контексте Samba (SMB) может быть ЛЮБАЯ машина под Windows, которая предоставила свои ресурсы (папки и файлы) в общее пользование. Иногда под Samba вообще подразумевают протокол сетевого обмена шар Windows, и иногда для этого понятия используют аббревиатуру SMB. Клиент Samba - любая программа, работающая на Windows, и которая пытается получить доступ к общим сетевым ресурсам сервера Samba. Клиентом Samba может выступать, например, проводник, если в строке адреса набрать \\10.50.c.d\public и нажать Enter. В этом примере 10.50.c.d - IP адрес сервера Samba, а public - расшаренный каталог на сервере Samba.
Для того, чтобы клиенты Windows могли попасть через сеть на шары Linux, нужно выполнение следующих условий (то, что компьютеры должны друг друга видеть по протоколу IP, само собой разумеется): 1. На Linux должен быть настроен и запущен сервис (демон) Samba. 2. В базе данных Samba должен быть логин и пароль пользователя Samba, который хочет получить доступ. 3. У подключившегося пользователя должны быть достаточные права на файловую систему Linux, к которой подключены шары Samba (для успешного проведения операций с этими шарами на чтение и запись).
Процесс по шагам (все операции происходят на сервере Samba под управлением Red Hat Linux 4):
1. Добавляем пользователя, который сможет подключаться к серверу (логин fedor, пароль 123). Лучше всего, если логин и пароль будет совпадать с логином и паролем пользователя, который в настоящий момент работает на клиенте Samba. В этом случае при подключении клиента Samba к сетевым шарам Samba логин и пароль вводить не потребуется. # adduser fedor
После этой команды в файле /etc/passwd появится запись пользователя fedor, и появится папка /home/fedor. Если нам не нужно, чтобы пользователь fedor получил доступ к шеллу Linux, то нужно исправить строку в файле /etc/passwd у этого пользователя - поменять там имя интерпретатора шелла на /sbin/nologin: fedor:x:501:501::/home/fedor:/sbin/nologin
2. Добавим пользователя fedor в базу данных пользователей Samba (ввод администратора показан жирным шрифтом. Введенные символы пароля на экране отображаться не будут): # smbpasswd -a -U fedor New SMB password:123 Retype new SMB password:123 Added user fedor.
После этого в файле /etc/samba/smbpasswd появится строчка наподобие: fedor:501:CCF9155E3E7DB453AAD3B435B51404EE:3DBDE697D71690A769204BEB12283678:[U ]:LCT-482D6E68:
Измените разрешения файла паролей Samba, чтобы разрешение на чтение и запись имел только root: # chmod 600 /etc/samba/smbpasswd
3. Редактируем файл /etc/samba/smb.conf. Предположим, что мы хотим, чтобы сервер Samba имел имя RHL (это необязательно), входил в рабочую группу MYGROUP (это тоже необязательно), имел дескрипшен "Samba Server" (необязательно), доступ к серверу разрешен с IP адресов 10.50.x.x и 192.168.1.x (если строку host allow закомментировать, то доступ будет разрешен со всех IP-адресов), настроены шары homes, printers, tmp, public (шары tmp и public настроены на полный доступ).
Добавим или изменим следующие параметры (строки, начинающиеся с # или ; являются комментариями, жирным выделено именно то, что надо изменить или раскомментировать): [global] netbios name = RHL workgroup = MYGROUP server string = Samba Server hosts allow = 10.50. 192.168.1. printcap name = /etc/printcap load printers = yes cups options = raw log file = /var/log/samba/%m.log max log size = 50 security = user smb passwd file = /etc/samba/smbpasswd socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 dns proxy = no #============================ Share Definitions ============================== idmap uid = 16777216-33554431 idmap gid = 16777216-33554431 template shell = /bin/false winbind use default domain = no [homes] comment = Home Directories browseable = no writable = yes [printers] comment = All Printers path = /var/spool/samba browseable = no guest ok = no writable = no printable = yes [tmp] comment = Temporary file space path = /tmp read only = no public = yes [public] comment = Public Stuff path = /home/public browseable = yes writable = yes guest ok = yes create mask = 0777
Все вроде понятно по содержимому файла. Здесь настроено, что будет использоваться защищенный тип авторизации по базе данных Samba (security = user, smb passwd file = /etc/samba/smbpasswd), лог будет вестись для каждого клиента Samba отдельно (log file = /var/log/samba/%m.log, где переменная %m имеет значения либо IP, либо NetBIOS-имени компьютера).
Протестируем нашу конфигурацию: # testparm Load smb config files from /etc/samba/smb.conf Processing section "[homes]" Processing section "[printers]" Processing section "[tmp]" Processing section "[public]" Unknown parameter encountered: "force create mask" Ignoring unknown parameter "force create mask" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions
# Global parameters [global] workgroup = MYGROUP netbios name = RHL server string = Samba Server log file = /var/log/samba/%m.log max log size = 50 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 printcap name = /etc/printcap dns proxy = No idmap uid = 16777216-33554431 idmap gid = 16777216-33554431 hosts allow = 10.50. 192.168.1. cups options = raw
[homes] comment = Home Directories read only = No browseable = No
[printers] comment = All Printers path = /var/spool/samba printable = Yes browseable = No
[tmp] comment = Temporary file space path = /tmp read only = No guest ok = Yes
[public] comment = Public Stuff path = /home/public read only = No create mask = 0777 guest ok = Yes
4. Запускаем сервер Samba: # service smb start Запускаются сервисы SMB: [ ОК ] Запускаются сервисы NMB: [ ОК ]
Если надо перезапустить Samba: # service smb restart Останавливаются службы SMB: [ ОК ] Останавливаются службы NMB: [ ОК ] Запускаются сервисы SMB: [ ОК ] Запускаются сервисы NMB: [ ОК ]
Все! После этого можно заходить на шары сервера с клиента Samba, IP адрес которого начинается на 10.50. или 192.168.1. Если имя пользователя/пароль, который сейчас работает на клиенте Samba, равен fedor/123 (доменный это пользователь, или локальный - не имеет значения), то вводить логин ипароль не потребуется, иначе на запрос ввода пароля нужно вводить логин fedor и пароль 123.
Файлы Samba (которые могут понадобиться): /etc/samba/smb.conf конфигурационный файл сервера Samba smbd /etc/samba/smbpasswd база данных пользователей, которые могут получить сетевой доступ к шарам сервера Samba. Вручную этот файл корректировать не нужно, лучше только просматривать. /var/log/samba/ папка, куда сыплются логи сервера Samba Команды (которые понадобятся): testparm проверка конфига /etc/samba/smb.conf на корректность adduser добавление пользователя Linux smbpasswd -a -U username добавление пользователя username в базу пользователей Samba (/etc/samba/smbpasswd) service smb status просмотр состояния сервера Samba - работает или нет service smb start запуск сервера Samba service smb restart перезапуск сервера Samba - это надо делать после внесения изменений в /etc/samba/smb.conf service smb stop останов сервера Samba Необязательные команды: mksmbpasswd.sh скрипт, который может сгенерировать файл /etc/samba/smbpasswd из файла /etc/passwd (cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd) smbstatus просмотреть активные подключения к Samba
[Дополнительные настройки]
Для синхронизации паролей пользователей Samba с их паролями в системе можно применить PAM-модуль pam_smbpass, используя команду passwd. Когда пользователь вызывает команду passwd, одновременно изменяется и пароль, с которым он входит в систему Red Hat Enterprise Linux, и пароль, с которым он подключается к ресурсу Samba.
Чтобы включить эту возможность, добавьте в файл /etc/pam.d/system-auth ниже вызова pam_cracklib.so следующую строку: password required /lib/security/pam_smbpass.so nullok use_authtok try_first_pass Чтобы служба smb запускалась при загрузке, выполните команду: /sbin/chkconfig --level 345 smb on
Определить службы, запускающиеся при загрузке системы, вы также можете с помощью chkconfig, ntsysv или средства Настройка служб (Services Configuration Tool). За подробностями обратитесь к главе 20 Управление доступа к службам.
[Ссылки]
1. Настройка сервера Samba site:rhd.ru. 2. Замена файл-сервера Windows NT/2000 на Linux/Samba site:opennet.ru. 3. Что нужно сделать, чтобы в XP в рабочей группе пользователи могли заходить на расшаренные ресурсы. 4. Windows 10: как настроить сетевой доступ к файлам. |