вторник, 22 февраля 2011 г.

Файловый сервер Samba

Возникла необходимость установить на работе файловый сервер и разграничить права доступа. Т.е. Необходимо создать:
- папку Upload и дать полные права доступа всем;
- папку Verstka и дать полные права доступа группе пользователей verstka, остальные не имеют права просмотра данной папки и ее содержимого;
- папку Secure и дать доступ к ней только одному пользователю пусть это будет admin.
PS все операции выполнял под пользователем root.
1. Устанавливаю Samba – 'apt-get install samba'
2. Настраиваю конфиг Samba – 'nano /etc/samba/smb.conf', получаю вот что:



[global]
# Название рабочей группы в сети Windows
 workgroup = 1
# Комментарий, который виден в окне свойств просмотра сети
 server string = FileServer
# Контролирует не требуется ли входа в сеть schannel (отрицает доступ )
 client schannel = Yes
# запрещает доступ клиентам, которые не поддерживают netlogon schannel 
 server schannel = Yes
# Запросы c неверным паролем будут считаться как попытки зайти гостем
 map to guest = Bad User
# Samba не использует PAM для аутентификации 
 obey pam restrictions = Yes
# механизм для хранения информации о пользователях, основанный на TDB 
 passdb backend = tdbsam
# Для смены паролей будет использован PAM, вместо программы указанной в параметре passwd program 
 pam password change = Yes
 passwd program = /usr/bin/passwd %u
 passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
# Параметр заставляет синхронизировать пароль UNIX с паролем SMB 
 unix password sync = Yes
# Журналирование
 syslog = 0
 log file = /var/log/samba/log.%m
 max log size = 10240
# Определяет будет ли демон nmbd делать запрос к DNS 
 dns proxy = No
# не использовать SSL при запросах к каталогу 
 ldap ssl = no
# nmbd будет участвовать в выборах мастер-браузера 
 local master = yes
# Samba будет выигрывать все выборы у всех операционных систем 
 os level = 254
# демон nmbd будет выиграть выборы принудительно 
 preferred master = yes
# Указываю требуемую кодировку
 unix charset = utf8
 dos charset = cp1251
 display charset = cp1251
# позволяет запустить системную команду, когда аварийно завершается Samba
 panic action = /usr/share/samba/panic-action %d
# глобальный список пользователей, которым разрешен доступ к сервису
 valid users = @verstka, nobody, admin
# Глобальные пользователи которые работают с файлами как суперпользователь
 admin users = admin
# Глобальный список пользователей, которым открыт доступ “только для чтения”
 read list = 
# Разрешаю доступ к Samba с определенных адресов
 hosts allow = 192.168.0.*
# Блокирую доступ к Samba с определенных адресов
 hosts deny = 192.168.15.*

[Upload]
# Комментарий, который виден в окне свойств сети 
 comment = Открытая папка
# Путь к папке
 path = /home/upload
# Не определен локальный список пользователей (все могут подключаться)
 valid users = 
 read list = 
 write list = 
# Определяет, выводить ли ресурс в списке просмотра
 browseable = yes 
# Разрешаю запись 
 read only = No
# Права доступа для вновь созданных файлов
 create mask = 0777
# Права доступа для вновь созданных каталогов 
 directory mask = 0777
# Разрешаю доступ для гостевой учетной записи
 guest ok = Yes

[Verstka]
 path = /home/verstka
 comment = Верстка
 create mask = 0777
 directory mask = 0777
 read only = No
 write list = @verstka

[Secure]
 path = /home/secure
 comment = Закрытая
 create mask = 0777
 directory mask = 0777
 read only = no
 write list = admin



3. Создаю нужные папки — 'mkdir /home/upload /home/verstka /home/secure'
4. Создаю группу — 'groupadd verstka'
5. Создаю пользователя — 'useradd -c "Admin" -m -g verstka admin -s /bin/false' создан пользовательский аккаунт admin с коммантарием Admin, включенный в группу verstka, с отключенной возможностью обычного входа (-s /bin/false) в систему, то есть аккаунт будет использоваться лишь для Samba-доступа.
6. Устанавливаю пароль свежесозданному пользователю — 'passwd admin', ввожу пароль с подтверждением.
7. Создаю для Linux-пользователя запись в базе данных паролей Samba — 'smbpasswd -a admin' и ввожу тот же пароль что и в п.6 с подтверждением. Коммандой 'smbpasswd admin' можно сменить пароль пользователя, главное не забыть дать команду — 'passwd admin' из-за котрой придется еще раз ввести новый пароль. Дело в том, что Samba не синхронизирует пароли, если запускать smbpasswd от имени root.
8. Назначаю права доступа к папкам — 'chmod 777 /home/upload', 'chmod 777 /home/secure'
9. Даю права доступа группе и назначаю права доступа — 'chgrp verstka /home/verstka', chmod 777 /home/verstka'.
10. Перезапускаю Samba – '/etc/init.d/samba restart'.