Smb group

Материал из pNp Wiki
Перейти к: навигация, поиск

Конфигурирование Samba. Сетевые директории группы

Предварительные требования

  • Виртуальная машина с двумя сетевыми интерфейсами
  • Установленные пакеты: bash-completion, policycoreutils, policycoreutils-python, policycoreutils-devel, setroubleshoot-server, samba, samba-client, cifs-utils

Конфигурирование сетевых директорий для групп

В конфигурационный файле /etc/samba/smb.conf создадим сетевую директорию account, которой будет соответствовать местоположение /srv/account. Она будет видимой и доступна на запись группе пользователей (в нашем случае - acoount) на запись. Создадим группу account, а так же пользователей kelly и mary, которые будут находится в группе account:

[root@vm-01 ~]# groupadd account
[root@vm-01 ~]# useradd kelly
[root@vm-01 ~]# useradd mary
[root@vm-01 ~]# usermod -aG account kelly
[root@vm-01 ~]# usermod -aG account mary
[root@vm-01 ~]# id kelly
uid=1001(kelly) gid=1002(kelly) groups=1002(kelly),1001(account)
[root@vm-01 ~]# id mary
uid=1002(mary) gid=1003(mary) groups=1003(mary),1001(account)
[root@vm-01 ~]#

Теперь надо создать директорию /srv/account и дать на нее права 770 для пользователя root и группы account:

[root@vm-01 ~]# mkdir /srv/account
[root@vm-01 ~]# chown -R root:account /srv/account/
[root@vm-01 ~]# chmod 770 /srv/account/

Теперь необходимо присвоить контекст selinux для нашей директории:

[root@vm-01 ~]# semanage fcontext -at public_content_rw_t "/srv/account(/.*)?"
[root@vm-01 ~]# restorecon -vR /srv/account/
restorecon reset /srv/account context unconfined_u:object_r:var_t:s0->unconfined_u:object_r:public_content_rw_t:s0
[root@vm-01 ~]# ls -lahiZ /srv/ | grep account
drwxrwx---. root account unconfined_u:object_r:public_content_rw_t:s0 account
[root@vm-01 ~]#

Добавляем настройки нашей сетевой директории в файл /etc/samba/smb.conf:

[root@vm-01 ~]# cat /etc/samba/smb.conf
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.

[global]
	workgroup = SAMBA
	security = user

	passdb backend = tdbsam

	printing = cups
	printcap name = cups
	load printers = yes
	cups options = raw

[homes]
	comment = Home Directories
	valid users = %S, %D%w%S
	browseable = No
	read only = No
	inherit acls = Yes

[data]
	comment = "data directory"
	path = /srv/data/
	valid users = %U
	browseable = yes
        read only = no

[account]
	comment = "account directory"
	path = /srv/account
	valid users = +account
	write list = +account
	force group = +account
	create mask = 0770
        directory mask = 0770
	browseable = yes
        read only = no

[printers]
	comment = All Printers
	path = /var/tmp
	printable = Yes
	create mask = 0600
	browseable = No

[print$]
	comment = Printer Drivers
	path = /var/lib/samba/drivers
	write list = root
	create mask = 0664
	directory mask = 0775
[root@vm-01 ~]#

К сетевой директория account, имеют доступ на просмотр и запись только те пользователи, которые входят в группу account, файлы и директории созданные данной группой будут иметь маску 770 и им будет принудительно выставлена группа account. Далее, надо создать пользователей в базе данных Samb

[root@vm-01 ~]# smbpasswd -a mary
New SMB password:
Retype new SMB password:
Added user mary.
[root@vm-01 ~]# smbpasswd -a kelly
New SMB password:
Retype new SMB password:
Added user kelly.
[root@vm-01 ~]# pdbedit -Lv
---------------
Unix username:        mary
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-713007370-98759951-3604115452-1002
Primary Group SID:    S-1-5-21-713007370-98759951-3604115452-513
Full Name:            
Home Directory:       \\vm-01\mary
HomeDir Drive:        
Logon Script:         
Profile Path:         \\vm-01\mary\profile
Domain:               VM-01
Account desc:         
Workstations:         
Munged dial:          
Logon time:           0
Logoff time:          Wed, 06 Feb 2036 18:06:39 MSK
Kickoff time:         Wed, 06 Feb 2036 18:06:39 MSK
Password last set:    Wed, 21 Mar 2018 13:05:15 MSK
Password can change:  Wed, 21 Mar 2018 13:05:15 MSK
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
---------------
Unix username:        andy
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-713007370-98759951-3604115452-1001
Primary Group SID:    S-1-5-21-713007370-98759951-3604115452-513
Full Name:            Andrew
Home Directory:       \\vm-01\andy
HomeDir Drive:        
Logon Script:         
Profile Path:         \\vm-01\andy\profile
Domain:               VM-01
Account desc:         
Workstations:         
Munged dial:          
Logon time:           0
Logoff time:          Wed, 06 Feb 2036 18:06:39 MSK
Kickoff time:         Wed, 06 Feb 2036 18:06:39 MSK
Password last set:    Tue, 20 Mar 2018 15:20:14 MSK
Password can change:  Tue, 20 Mar 2018 15:20:14 MSK
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
---------------
Unix username:        kelly
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-713007370-98759951-3604115452-1003
Primary Group SID:    S-1-5-21-713007370-98759951-3604115452-513
Full Name:            
Home Directory:       \\vm-01\kelly
HomeDir Drive:        
Logon Script:         
Profile Path:         \\vm-01\kelly\profile
Domain:               VM-01
Account desc:         
Workstations:         
Munged dial:          
Logon time:           0
Logoff time:          Wed, 06 Feb 2036 18:06:39 MSK
Kickoff time:         Wed, 06 Feb 2036 18:06:39 MSK
Password last set:    Wed, 21 Mar 2018 13:05:25 MSK
Password can change:  Wed, 21 Mar 2018 13:05:25 MSK
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[root@vm-01 ~]#


Запуск

Перезапускаем сервис:

[root@vm-01 ~]# systemctl restart smb
[root@vm-01 ~]# systemctl status -l smb
● smb.service - Samba SMB Daemon
   Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2018-03-21 13:08:25 MSK; 10s ago
 Main PID: 7676 (smbd)
   Status: "smbd: ready to serve connections..."
   CGroup: /system.slice/smb.service
           ├─7676 /usr/sbin/smbd
           ├─7677 /usr/sbin/smbd
           ├─7678 /usr/sbin/smbd
           └─7679 /usr/sbin/smbd

Mar 21 13:08:25 vm-01 systemd[1]: Starting Samba SMB Daemon...
Mar 21 13:08:25 vm-01 smbd[7676]: [2018/03/21 13:08:25.117833,  0] ../lib/util/become_daemon.c:124(daemon_ready)
Mar 21 13:08:25 vm-01 systemd[1]: Started Samba SMB Daemon.
Mar 21 13:08:25 vm-01 smbd[7676]:   STATUS=daemon 'smbd' finished starting up and ready to serve connections
[root@vm-01 ~]#

Проверка

С виртуальной машины vm-02 обратимся к сетевой директории при помощи утилиты smbclient от пользователя andy. Для начала посмотрим список сетевых директорий:

[root@vm-01 ~]# smbclient -L //192.168.1.1/ -U mary%mary
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.4.4]

	Sharename       Type      Comment
	---------       ----      -------
	data            Disk      data directory
	account         Disk      account directory
	print$          Disk      Printer Drivers
	IPC$            IPC       IPC Service (Samba 4.4.4)
	mary            Disk      Home Directories
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.4.4]

	Server               Comment
	---------            -------

	Workgroup            Master
	---------            -------
[root@vm-01 ~]#

Подключимся к сетевой директории data, а в ней создадим директорию и зальем какой-нибудь файл:

[root@vm-01 ~]# smbclient //192.168.1.1/account -U mary%mary
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.4.4]
smb: \> mkdir newdirectory
smb: \> put ab-1.conf 
putting file ab-1.conf as \ab-1.conf (189.4 kb/s) (average 189.5 kb/s)
smb: \> dir
  .                                   D        0  Wed Mar 21 13:17:42 2018
  ..                                  D        0  Wed Mar 21 12:27:32 2018
  newdirectory                        D        0  Wed Mar 21 13:17:38 2018
  ab-1.conf                           A      194  Wed Mar 21 13:17:42 2018

		20432896 blocks of size 1024. 15755352 blocks available
smb: \>

Посмотрим на сервере vm-01 каким владельцам принадлежат файлы и директории и с какими правами они создались:

[root@vm-01 ~]# ls -lahi /srv/account/
total 4.0K
  528222 drwxrwx---. 3 root account  43 Mar 21 13:17 .
16778219 drwxr-xr-x. 5 root root     45 Mar 21 12:27 ..
  528160 -rwxrw----. 1 mary account 194 Mar 21 13:17 ab-1.conf
57641600 drwxrwx---. 2 mary account   6 Mar 21 13:17 newdirectory
[root@vm-01 ~]#

Теперь, подключимся к сетевой директории account пользователем kelly и удалим директорию:

[root@vm-01 ~]# smbclient //192.168.1.1/account -U kelly%kelly
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.4.4]
smb: \> dir
  .                                   D        0  Wed Mar 21 13:17:42 2018
  ..                                  D        0  Wed Mar 21 12:27:32 2018
  newdirectory                        D        0  Wed Mar 21 13:17:38 2018
  ab-1.conf                           A      194  Wed Mar 21 13:17:42 2018

		20432896 blocks of size 1024. 15755312 blocks available
smb: \> rmdir newdirectory\
smb: \> dir
  .                                   D        0  Wed Mar 21 13:20:24 2018
  ..                                  D        0  Wed Mar 21 12:27:32 2018
  ab-1.conf                           A      194  Wed Mar 21 13:17:42 2018

		20432896 blocks of size 1024. 15755312 blocks available
smb: \>

А вот пользователю andy доступ к сетевой директории account запрещен:

[root@vm-01 ~]# smbclient //192.168.1.1/account -U andy%test1234
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.4.4]
tree connect failed: NT_STATUS_ACCESS_DENIED
[root@vm-01 ~]# smbclient //192.168.1.1/data -U andy%test1234
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.4.4]
smb: \> quit
[root@vm-01 ~]#

Монтирование сетевых директорий

В файл /etc/fstab необходимо вписать сетевую директорию, место монтирования и учетную запись пользователя вместе с указанием пароля. Однако, в /etc/fstab данные пользователя вписывать не лучшая идея, для этого используется директрива credentials которая содержит путь к файлу с логином и паролем пользователя, от имени которого происходит монтирование сетевой директории. Формат файла, на который ссылается директива credentials предельно прост:

username=kelly
password=kelly

Прописываем монтирование в /etc/fstab:

[root@vm-02 ~]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Wed Nov 22 11:45:46 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root				/                       xfs     defaults        1 1
UUID=cc10fe05-aa22-42d6-a18e-39d1eb5ad338	/boot                   xfs     defaults        1 2
#/dev/sda					/media			xfs	_netdev         0 2
//192.168.1.1/account				/root/kelly		cifs	credentials=/root/smbpass,_netdev		0 0
[root@vm-02 ~]#

Проверка

С виртуальной машины vm-02 смонтируем сетевую директорию при помощи утилиты mount с опцией -t cifs, от пользователя root:

[root@vm-02 ~]# mount -t cifs -o credentials=/root/smbpass //192.168.1.1/account /root/kelly/
[root@vm-02 ~]# ls -lahi /root/kelly/
total 8.0K
  528222 drwxrwx---. 2 root 1001    0 Mar 21 14:20 .
67149953 dr-xr-x---. 6 root root 4.0K Mar 22 09:55 ..
  528160 -rwxrw----. 1 1002 1001  194 Mar 21 14:17 ab-1.conf
[root@vm-02 ~]#

Отмонтируем директорию и смонтируем ее снова, через чтение /etc/fstab:

[root@vm-02 ~]# umount /root/kelly/
[root@vm-02 ~]# mount -a
[root@vm-02 ~]# ls -lahi /root/kelly/
total 8.0K
  528222 drwxrwx---. 2 root 1001    0 Mar 21 14:20 .
67149953 dr-xr-x---. 6 root root 4.0K Mar 22 09:55 ..
  528160 -rwxrw----. 1 1002 1001  194 Mar 21 14:17 ab-1.conf
[root@vm-02 ~]#

Многопользовательское монтирование сетевых директорий

Проблема предыдущего подхода в том, что после монтирования директория будет доступна одному пользователю, для того что бы несколько пользователей могли работать в сетевой директории, надо воспользоваться опцией multiuser На машине vm-02 создаем пользователя kelly:

[root@vm-02 ~]# useradd kelly

Затем, создаем точку монтирования /mnt/account:

[root@vm-02 ~]# mkdir /mnt/account
[root@vm-02 ~]# mount -t cifs -o multiuser,sec=ntlmssp,credentials=/root/smbpass //192.168.1.1/account /mnt/account/

Переключаемся в пользователя kelly, получаем учетные данные для пользователя от сервера 192.168.1.1 и создаем файл в нашей сетевой директории:

[root@vm-02 ~]# su - kelly
[kelly@vm-02 ~]$ ls -lahi /mnt/account 
ls: cannot access /mnt/account: Permission denied
[kelly@vm-02 ~]$ cifscreds add 192.168.1.1
Password: 
[kelly@vm-02 ~]$ echo $?
0
[kelly@vm-02 ~]$ ls -lahi /mnt/account 
total 4.0K
528222 drwxrwx---. 2 root kelly   0 Mar 21 14:20 .
   164 drwxr-xr-x. 3 root root   20 Mar 22 13:34 ..
528160 -rwxrw----. 1 1002 kelly 194 Mar 21 14:17 ab-1.conf
[kelly@vm-02 ~]$ > /mnt/account/kelly_was_here.txt

Теперь переключаемся в пользователя andy и получаем учетные данные для пользователя mary от сервера 192.168.1.1 и создаем файл в нашей сетевой директории:

[root@vm-02 ~]# su - andy
Last login: Thu Mar 22 13:38:06 MSK 2018 on pts/0
[andy@vm-02 ~]$ ls -lahi /mnt/account 
ls: cannot access /mnt/account: Permission denied
[andy@vm-02 ~]$ cifscreds add -u mary 192.168.1.1
Password: 
[andy@vm-02 ~]$ ls -lahi /mnt/account/
total 4.0K
528222 drwxrwx---. 2 root  kelly   0 Mar 22  2018 .
   164 drwxr-xr-x. 3 root  root   20 Mar 22 13:34 ..
528160 -rwxrw----. 1  1002 kelly 194 Mar 21 14:17 ab-1.conf
528167 -rw-rw----. 1 kelly kelly   0 Mar 22 13:48 kelly_was_here.txt
[andy@vm-02 ~]$ >/mnt/account/mary_was_here.txt
[andy@vm-02 ~]$ ls -lahi /mnt/account/
total 4.0K
528222 drwxrwx---. 2 root  kelly   0 Mar 22  2018 .
   164 drwxr-xr-x. 3 root  root   20 Mar 22 13:34 ..
528160 -rwxrw----. 1  1002 kelly 194 Mar 21 14:17 ab-1.conf
528167 -rw-rw----. 1 kelly kelly   0 Mar 22 13:48 kelly_was_here.txt
528168 -rw-rw----. 1  1002 kelly   0 Mar 22 13:53 mary_was_here.txt
[andy@vm-02 ~]$

Проверка

Внесем изменения в файл /etc/fstab:

[root@vm-02 ~]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Wed Nov 22 11:45:46 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root				/                       xfs     defaults        1 1
UUID=cc10fe05-aa22-42d6-a18e-39d1eb5ad338	/boot                   xfs     defaults        1 2
#/dev/sda					/media			xfs	_netdev         0 2
//192.168.1.1/account				/mnt/account		cifs	credentials=/root/smbpass,multiuser,sec=ntlmssp,_netdev		0 0
[root@vm-02 ~]#

Теперь cмонтируем директорию через чтение /etc/fstab:

[root@vm-02 ~]# mount -a
[root@vm-02 ~]# ls -lahi /mnt/account/
total 4.0K
528222 drwxrwx---. 2 root  kelly   0 Mar 22  2018 .
   164 drwxr-xr-x. 3 root  root   20 Mar 22 13:34 ..
528160 -rwxrw----. 1  1002 kelly 194 Mar 21 14:17 ab-1.conf
528167 -rw-rw----. 1 kelly kelly   0 Mar 22 13:48 kelly_was_here.txt
528168 -rw-rw----. 1  1002 kelly   0 Mar 22 13:53 mary_was_here.txt
[root@vm-02 ~]#

И проверим еще раз возможность записи в сетевую директорию от пользвателей kelly и mary:

[root@vm-02 ~]# su - andy
Last login: Thu Mar 22 13:48:24 MSK 2018 on pts/0
[andy@vm-02 ~]$ cifscreds clearall
You have no stashed cifs credentials
If you want to add them use:
	cifscreds add
[andy@vm-02 ~]$ cifscreds add -u kelly 192.168.1.1
Password: 
[andy@vm-02 ~]$ > /mnt/account/kelly_was_here_once_again.txt
[andy@vm-02 ~]$ cifscreds clearall
[andy@vm-02 ~]$ cifscreds add -u mary 192.168.1.1
Password: 
[andy@vm-02 ~]$ > /mnt/account/mary_was_here_once_again.txt
[andy@vm-02 ~]$ ls -lahi /mnt/account/
total 4.0K
528222 drwxrwx---. 2 root  kelly   0 Mar 22  2018 .
   164 drwxr-xr-x. 3 root  root   20 Mar 22 13:34 ..
528160 -rwxrw----. 1  1002 kelly 194 Mar 21 14:17 ab-1.conf
528169 -rw-rw----. 1 kelly kelly   0 Mar 22 14:10 kelly_was_here_once_again.txt
528167 -rw-rw----. 1 kelly kelly   0 Mar 22 13:48 kelly_was_here.txt
528170 -rw-rw----. 1 kelly kelly   0 Mar 22 14:11 mary_was_here_once_again.txt
528168 -rw-rw----. 1  1002 kelly   0 Mar 22 13:53 mary_was_here.txt
[andy@vm-02 ~]$

Ссылки