Skip to main content

Настройка Samba Fedora 12

Апрель 15, 2010 Автор: Hikaru

Установим и настроим сервер Samba в Fedora 12 для выполнения следующих задач:
1)Общая папка с правами на чтение и запись у гостя.
2)Папка доступная только авторизованному пользователю.
3)Папка доступная авторизованному пользователю только на чтение и определённой группе на запись.
Общие установки и настройки:
Для начала установим samba, это проблем не составит:

yum install samba -y

Затем добавим сервисы Samba в автозагрузку:

chkconfig smb on
chkconfig nmb on
service smb start
service nmb start

Отредактируем базовый файл конфигурации samba, изменив в нём следующие строки:

	workgroup = workgroup 
	server string = Fedora File Server

Посмотрим текущие правила нашего фаерволла:

iptables -L INPUT 
Chain INPUT (policy ACCEPT) 
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh 
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 

Они не совсем удвлетворяют нашим требованиям, чтобы это исправить выполним следующие команды:

iptables -I INPUT  4 -p udp --dport 137:139 -j ACCEPT
iptables -I INPUT  5 -p tcp --dport 445 -j ACCEPT
service iptables save

Теперь добавим в файл конфигурации следующие строки:

guest account = guest
map to guest = Bad User
invalid user = root

Часть 1:
Создадим и подготовим нашу «общую папку», которая будет доступна всем на чтение и запись:

mkdir /home/share 
chcon -t public_content_rw_t /home/share
useradd -s /sbin/nologin guest
chown guest.guest /home/share/
	[share] 
	comment = Free for all 
	path = /home/share 
	public = yes 
	browseable = yes 
	writable = yes[

Ну и после редактирования файла конфигурации нам нужно проверить файл конфигурации командой:

testparm

В случае если ошибок обнаружено не будет, нужно сообщить серверу, что ему необходимо перечитать файл конфигурации:

service smb reload

Часть 2:
Для наших целей создадим ещё пару пользователей:

groupadd -g 201 layer
useradd -s /sbin/nologin -G layer,guest hikaru
useradd -s /sbin/nologin -G layer,guest rayne

Устанавливаем нашим пользователям пароли:

smbpasswd -a hikaru
smbpasswd -a rayne

Создадим для них общую директорию:

mkdir /home/layer
chown nobody.layer /home/layer
chmod 2770 /home/layer # таким образом все файлы создаваемые в данном каталоге будут принадлежать групее layer
chmod +t /home/layer # Тепеь файлы создаваемые в этом каталоге могут быть удалены только их владельцем (создателем)

Поправим контекст SELinux для этой папки:

chcon -t public_content_rw_t /home/layer/

Добавим следующие строки в конец файла конфигурации samba:

	[layer]
	comment = group staff
	path = /home/layer
	public = no
	browseable = yes
	writable = yes
	create mask = 0770
	directory mask = 0770
service smb reload

Часть 3:
Создадим ещё 1 директорию:

mkdir /home/group
chown nobody.layer /home/group
chmod 2775 /home/group
chcon -t public_content_rw_t /home/group/
[group]
        comment = group dir
        path = /home/group
        public = no
        browseable = yes
        writable = no
        write list = @layer
        create mask = 0775

В результате у нас получится такой файл конфигурации Samba:

[global]
	workgroup = workgroup  # Название нашей рабочей группы
	server string = Fedora File Server 
	netbios name = fileserver
 
	interfaces = eth0 # Если сетевых интерфейсов много, то можно сказать Samba, какой из них слушать
	hosts allow = 127. 192.168.1. # Сообщаем Samba какие сети имеют доступ к нашим шарам, можно прописать для каждой шары отдельные сети
	
	log file = /var/log/samba/log.%m
	max log size = 50

	security = user
	passdb backend = tdbsam

	guest account = guest  # Указываем учетную запись «гостя»
	encrypt passwords = yes

	map to guest = Bad User # разрешаем показывать список шар не авторизовавшимся пользователям (пользователям с не верным login)
	invalid user = root # Запрещаем доступ определённым пользователям (Для обеспечения
безопасности здесь должны быть перечислены системные пользователи обладающие паролем и просто не
желательные люди, которые не должны иметь доступа к расшаренным ресурсам)

        load printers = yes
        cups options = raw

        comment = All Printers
        path = /var/spool/samba
        browseable = no
        guest ok = no
        writable = no
        printable = yes

        [share] # объявляем имя сетевого ресурса
        comment = Free for all
        path = /home/share # Указываем путь к расшареваемой папке
        public = yes  # разрешаем гостевой доступ
        browseable = yes  # Делаем папку «видимой» в сетевом окружении (т.е. Если сделать 
browseable = no, то папка будет расшарена, но не будет отображаться в сетевом окружении, зайти на 
неё можно будет вписав адрес в адресной строке).
        writable = yes  # Разрешаем запись, помните, что на запись ещё и физические разрешения влияют)
        create mask = 0777 # Маска, с которой создаются новые файлы
        directory mask = 0777 # Маска, с которой создаются новые директории

        [layer]
        comment = group staff
        path = /home/layer
        public = no
        browseable = yes
        writable = yes
        create mask = 0770
        directory mask = 0770

        [group]
        comment = group dir
        path = /home/group
        public = no
        browseable = yes
        writable = no
        write list = @layer  #Разрешаем запись в директорию определённой группе
        create mask = 0775
        directory mask = 0775