Описана настройка сетевого доступа с машин 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, и появится папка /var/www/fedor. Если нам не нужно, чтобы пользователь fedor получил доступ к шеллу Linux, то нужно исправить строку в файле /etc/passwd у этого пользователя - поменять там имя интерпретатора шелла на /sbin/nologin:
fedor:x:501:501::/var/www/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 = /var/www/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 = /var/www/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. http://www.rhd.ru/docs/manuals/enterprise/RHEL-4-Manual/sysadmin-guide/s1-samba-configuring.html
2. http://www.opennet.ru/docs/RUS/samba_win2000/
|
Комментарии
2009-10-1214:51:05 молоток!
просто, без воды и главное понятно без дополнительных поисков. Спасибо.
Вам бы книжки писать а не давать материал другим.