#####samba 应用####
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件。由服务器及客户端协议构成
SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为区域网内的不同计算件之间提供文件等资源共享服务;
服务端环境配置:

/etc/sysconfig/network-scripts/ifcfg-eth0  ##网络配置文件
/etc/yum.repos.d/westos.repo   ##yum 配置文件

dock samba服务器 samba服务器app_共享目录


服务端samba部署和应用:

1)软件安装和环境部署

yum install samba samba-common samba-client -y ##服务端 客户端以及常用命令

vim /etc/sysconfig/selinux Selinux=enforcing ##开启强制级内置防火墙

dock samba服务器 samba服务器app_vim_02

systemctl start smb ##打开samba服务
 systemctl enable smb.service  ##设置服务开机自启
 systemctl stop firewalld.service  ##关闭防护墙
systemctl status firewalld.service ##查看火墙当前状态

dock samba服务器 samba服务器app_共享目录_03


getsebool -a | grep samba ##查看selinux对samba的限制

setsebool -P samba_enable_home_dirs ON ##打开允许访问samba 家目录开关

dock samba服务器 samba服务器app_共享目录_04


2)建立smb用户并允许用户访问SMB

smbpasswd -a student ##添加用户student为smb用户并设定密码,设定的用户必须是存在的用户

pdbedit -L ##查看存在的smb用户

pdbedit -x lee ##删除smb 用户lee

dock samba服务器 samba服务器app_desktop_05


测试:

客户端

yum install -y samba-client##安装SMB服务
smbclient  //172.25.254.135/lee -U lee ##使用lee用户登陆smb服务,并访问家目录
smbclient -L //172.25.254.135/lee -U lee  ##访问家目录

dock samba服务器 samba服务器app_desktop_06


3)客户端通过smb在用户家目录上传文件

通过客户端的操作王服务端lee用户的家目录中添加文件

进入家目录后上传文件

[root@cliver Desktop]# touch file
[root@cliver Desktop]# smbclient  //172.25.254.135/lee -U lee  ##进入用户家目录
Enter lee's password: 
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
  .                                   D        0  Tue May 14 23:57:03 2019
  ..                                  D        0  Wed May 15 00:11:31 2019
  .bash_profile                       H      193  Wed Jan 29 07:45:18 2014
  .mozilla                           DH        0  Thu Jul 10 18:29:32 2014
  .config                            DH        0  Thu Jul 10 19:06:52 2014
  .bashrc                             H      231  Wed Jan 29 07:45:18 2014
  .bash_logout                        H       18  Wed Jan 29 07:45:18 2014

		60458 blocks of size 8192. 56479 blocks available
smb: \> put file
putting file file as \file (0.0 kb/s) (average 0.0 kb/s)
smb: \> ls
  .                                   D        0  Wed May 15 00:21:23 2019
  ..                                  D        0  Wed May 15 00:11:31 2019
  .bash_profile                       H      193  Wed Jan 29 07:45:18 2014
  .mozilla                           DH        0  Thu Jul 10 18:29:32 2014
  file                                A        0  Wed May 15 00:21:23 2019   ##上传的file文件
  .config                            DH        0  Thu Jul 10 19:06:52 2014
  .bashrc                             H      231  Wed Jan 29 07:45:18 2014
  .bash_logout                        H       18  Wed Jan 29 07:45:18 2014

		60458 blocks of size 8192. 56479 blocks available
smb: \>

dock samba服务器 samba服务器app_共享目录_07


使用挂载的方式添加文件

将服务端的用户家目录通过smb服务挂载到客户端本地家目录,然后进入该目录操作

mount -o username=lee,password=lee //172.25.254.135/lee /opt ##进行挂载

[root@cliver ~]# mount -o username=lee,password=lee //172.25.254.135/lee /opt   ##挂载共享目录
[root@cliver ~]# df
Filesystem           1K-blocks    Used Available Use% Mounted on
/dev/vda1             10473900 3152048   7321852  31% /
devtmpfs                469332       0    469332   0% /dev
tmpfs                   484920     140    484780   1% /dev/shm
tmpfs                   484920   12792    472128   3% /run
tmpfs                   484920       0    484920   0% /sys/fs/cgroup
//172.25.254.135/lee    483670    2347    451832   1% /opt  ##挂载的目录
[root@cliver ~]# cd /opt
[root@cliver opt]# ls
file
[root@cliver opt]# touch file{1..3}
[root@cliver opt]# ls
file  file1  file2  file3
[root@cliver opt]# cd 
[root@cliver ~]# umount /opt  ##卸载
[root@cliver ~]# smbclient  //172.25.254.135/lee -U lee  ##登陆用户
Enter lee's password: 
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
  .                                   D        0  Wed May 15 00:33:17 2019
  ..                                  D        0  Wed May 15 00:11:31 2019
  file3                               N        0  Wed May 15 00:33:16 2019
  .bash_profile                       H      193  Wed Jan 29 07:45:18 2014
  .mozilla                           DH        0  Thu Jul 10 18:29:32 2014
  file                                A        0  Wed May 15 00:21:23 2019   ##挂载时创建的文件
  file1                               N        0  Wed May 15 00:33:16 2019
  file2                               N        0  Wed May 15 00:33:16 2019
  .config                            DH        0  Thu Jul 10 19:06:52 2014
  .bashrc                             H      231  Wed Jan 29 07:45:18 2014
  .bash_logout                        H       18  Wed Jan 29 07:45:18 2014

		60458 blocks of size 8192. 56479 blocks available
smb: \> exit

dock samba服务器 samba服务器app_vim_08


4)修改smb共享的域

smbclient -L //172.25.254.135 ##查看共享信息,显示域为MYGROUP

dock samba服务器 samba服务器app_desktop_09


vim /etc/samba/smb.conf ##修改配置文件 (workgroup= )

systemctl restart smb ##重启服务

dock samba服务器 samba服务器app_desktop_10


smbclient -L //172.25.254.135 ##再次查看共享信息,域发生改变

dock samba服务器 samba服务器app_vim_11


5)samba共享目录的建立与设定

服务端:

mkdir /smbshare ##添加新的共享目录,生成目录

vim /etc/samba/smd.conf 设置smb配置文件

[root@desktop ~]# touch /smbshare/file{1..10}   ##建立共享的目录
[root@desktop ~]# cd /smbshare/
[root@desktop smbshare]# ls
file1  file10  file2  file3  file4  file5  file6  file7  file8  file9
[root@desktop smbshare]# ll /smbshare/   ##查看/smbshare权限
total 0
-rw-r--r--. 1 root root 0 Apr 30 03:00 file1
-rw-r--r--. 1 root root 0 Apr 30 03:00 file2
-rw-r--r--. 1 root root 0 Apr 30 03:00 file3
[root@desktop smbshare]# vim /etc/samba/smb.conf 
21 89         workgroup = westos
 90         server string = Samba Server Version %v
 91 
 92 ;       netbios name = MYSERVER

322      [HAHAHA]   ##共享文件名
323     comment = haha directory  ##共享文件的解析
324     path  = /smbshare   ##共享文件

[root@desktop smbshare]# systemctl restart smb
[root@desktop smbshare]# ls -Zd /smbshare/   ##查看安全上下文
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /smbshare/
[root@desktop ~]# semanage fcontext -a -t samba_share_t '/smbshare(/.*)?'   ##更改/smbshare的安全上下文
[root@desktop ~]# restorecon -RvvF /smbshare/  ##更新

dock samba服务器 samba服务器app_vim_12


测试:

客户端访问新建文件

[root@desktop ~]# smbclient //172.25.254.106/HAHAHA -U student
Enter lee's password: 
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
  .                                   D        0  Tue Apr 30 03:00:13 2019
  ..                                  D        0  Tue Apr 30 03:00:11 2019
  file1                               N        0  Tue Apr 30 03:00:13 2019
  file2                               N        0  Tue Apr 30 03:00:13 2019
  file3                               N        0  Tue Apr 30 03:00:13 2019


		40913 blocks of size 262144. 27380 blocks available
smb: \> quit
[root@desktop ~]# mount //172.25.254.106/HAHAHA /mnt -o username=lee,password=lee
[root@desktop ~]# df
Filesystem              1K-blocks    Used Available Use% Mounted on
/dev/vda1                10473900 3464592   7009308  34% /
devtmpfs                   469332       0    469332   0% /dev
tmpfs                      484920      84    484836   1% /dev/shm
tmpfs                      484920   12816    472104   3% /run
tmpfs                      484920       0    484920   0% /sys/fs/cgroup
/dev/mapper/vg0-vo         483670    2356    451823   1% /home
//172.25.254.106/HAHAHA  10473900 3464592   7009308  34% /mnt

[root@desktop ~]# cd /mnt
[root@desktop mnt]# ls
file1  file10  file2  file3  file4  file5  file6  file7  file8  file9

dock samba服务器 samba服务器app_vim_13


##SMB黑白名单设置###

服务端白名单的建立:

vim /etc/samba/smb.conf ##编辑配置文件

hosts allow = 172.25.254.235 ##只允许172.25.254.235 访问

systemctl restart smb ##重启服务

dock samba服务器 samba服务器app_共享目录_14


测试客户端访问:

172.25.254.235主机访问共享目录,可以访问

dock samba服务器 samba服务器app_dock samba服务器_15


172.25.254.35主机访问被拒绝:

dock samba服务器 samba服务器app_desktop_16


服务端黑名单的建立:

vim /etc/samba/smb.conf ##编辑配置文件

hosts deny = 172.25.254.235 ##不允许172.25.254.235 访问

systemctl restart smb ##重启服务

dock samba服务器 samba服务器app_desktop_17


测试客户端访问:

172.25.254.235主机访问共享目录,不可以访问

dock samba服务器 samba服务器app_共享目录_18


172.25.254.35主机访问被允许:

dock samba服务器 samba服务器app_desktop_19


匿名用户访问:

vim /etc/samba/smb.conf ##编辑配置文件

[root@desktop ~]# vim /etc/samba/smb.conf  ##编辑配置文件
122 
123         security = user
124         map to guest  = bad user   
125         passdb backend = tdbsam
126 
23      [HAHAHA]
324     comment = haha directory
325     path  = /smbshare
326     guest ok = yes

dock samba服务器 samba服务器app_desktop_20


dock samba服务器 samba服务器app_dock samba服务器_21

[root@desktop ~]# hostname
desktop
[root@desktop ~]# vim /etc/hosts ##增加域名解析,关闭火墙否则无法访问
[root@desktop ~]# systemctl restart smb ##重启
测试:
匿名用户登陆

[root@desktop ~]# smbclient //172.25.254.135HAHAHA -U guest  ##匿名用户访问
Enter guest's password: 
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
  .                                   D        0  Tue Apr 30 03:00:13 2019
  ..                                  D        0  Tue Apr 30 03:00:11 2019
  file1                               N        0  Tue Apr 30 03:00:13 2019
  file2                               N        0  Tue Apr 30 03:00:13 2019
  file3                               N        0  Tue Apr 30 03:00:13 2019

[root@server ~]# mount -o username=guest //172.25.254.135/HAHAHA /mnt  ##匿名用户挂载
[root@server ~]# df
Filesystem              1K-blocks    Used Available Use% Mounted on
/dev/vda1                10473900 3222728   7251172  31% /
devtmpfs                   469332       0    469332   0% /dev
tmpfs                      484920      84    484836   1% /dev/shm
tmpfs                      484920   12808    472112   3% /run
tmpfs                      484920       0    484920   0% /sys/fs/cgroup
/dev/mapper/vg0-vo         483670    2341    451838   1% /home
//172.25.254.135/HAHAHA  10473900 3222728   7251172  31% /mnt

dock samba服务器 samba服务器app_共享目录_22


Samba共享目录的权限参数设定

writable =yes|no  ##用户可写或不可写
    write list = student  ##只有student用户可访问
    write list =+|@ student  ##所有student 组的都可以访问 “+”“@”作用相同
     valid user =lee ##用户lee 不可访问
     valid user =+|@lee  ##lee 用户组的都不能访问
     browseable = no  ##隐藏设定用户
     admin users = student

1)服务端设置所有用户对共享目录可写

[root@server ~]# vim /etc/samba/smb.conf ##编辑配置文件

[root@server ~]# chmod 777 /smbshare/

[root@server ~]# systemctl restart smb

##编辑配置文件

dock samba服务器 samba服务器app_dock samba服务器_23


测试:

用户student对共享目录进行挂载,并创建或删除wenjian

dock samba服务器 samba服务器app_vim_24


2)服务端设定指定用户对共享目录可写

[root@server ~]# vim /etc/samba/smb.conf

[root@server ~]# chmod 777 /smbshare/

[root@server ~]# systemctl restart smb

dock samba服务器 samba服务器app_desktop_25


测试:student用户对共享目录建立文件

dock samba服务器 samba服务器app_desktop_26


lee用户进行挂载

dock samba服务器 samba服务器app_dock samba服务器_27


3)设置某组的用户对共享目录可写

[root@server ~]# vim /etc/samba/smb.conf

[root@server ~]# systemctl restart smb

write list = @student ## “@” 和"+"效果一样

dock samba服务器 samba服务器app_共享目录_28


测试:

lee用户测试

dock samba服务器 samba服务器app_vim_29

usermod -G 1000 lee ##更改lee到student用户组

([root@server mnt]# usermod -G "" lee   ##移除附加组
[root@server mnt]# id lee
uid=1001(lee) gid=1001(lee) groups=1001(lee)
)

dock samba服务器 samba服务器app_共享目录_30


4)指定共享目录的有效用户

vim /etc/samba/smb.conf

systemctl restart smb

dock samba服务器 samba服务器app_dock samba服务器_31


测试:

lee 用户无法进行挂载,student用户可以

dock samba服务器 samba服务器app_共享目录_32


5)指定共享用户有效用户组

[root@server ~]# vim /etc/samba/smb.conf

[root@server ~]# systemctl restart smb

dock samba服务器 samba服务器app_vim_33


测试:

用户lee在lee用户组不能挂载

添加到student组,可以挂载

dock samba服务器 samba服务器app_vim_34


6)设置隐藏共享目录

root@server ~]# vim /etc/samba/smb.conf

[root@server ~]# systemctl restart smb

dock samba服务器 samba服务器app_共享目录_35


测试:

查看共享信息,不显示共享信息但虽被隐藏依旧可以挂载

dock samba服务器 samba服务器app_vim_36


7)共享目录添加管理员

[root@server ~]# vim /etc/samba/smb.conf

[root@server ~]# systemctl restart smb

dock samba服务器 samba服务器app_dock samba服务器_37


测试:

共享目录中文件的所有者及所属组和创建该共享目录的用户没关系,只和使用那个登陆SMB在共享目录中创建的文件,但作为管理员,所有新建的文件都是超级用户的

dock samba服务器 samba服务器app_共享目录_38


####samba多用户挂载##

samba多用户挂载在客户端进行设置

多用户挂载可以解决:当客户端使用超级用户对共享目录进行挂载后,其他用户同样可以直接使用该挂载目录,但存在安全隐患所以其他用户访问挂载后的共享目录必须经过验证

客户端:

yum install cifs-utils -y ##安装软件

vim /root/smbpass ##建立共享目录的认证文件

chmod 600 /root/smbpass ##给认证文件的权限

[root@cliver ~]# yum install -y cifs-utils
[root@server ~]# vim /root/smbpass##建立共享目录的认证文件
[root@server ~]# cat /root/smbpass
username=student
password=student
[root@server ~]# chmod 600 /root/smbpass   ##给认证文件的权限
[root@server ~]# ls -ld /root/smbpass
-rw-------. 1 root root 33 Apr 30 05:12 /root/smbpass
[root@server ~]# mount //172.25.254.106/HAHAHA /mnt -o credentials=/root/smbpass,sec=ntlmssp,multiuser  ##root用户使用认证文件对共享目录进行挂载
Password for student@//172.25.254.106/HAHAHA:  *******
[root@server ~]# df
Filesystem              1K-blocks    Used Available Use% Mounted on
/dev/vda1                10473900 3220844   7253056  31% /
devtmpfs                   469332       0    469332   0% /dev
tmpfs                      484920     140    484780   1% /dev/shm
tmpfs                      484920   12788    472132   3% /run
tmpfs                      484920       0    484920   0% /sys/fs/cgroup
//172.25.254.106/HAHAHA  10473900 3464824   7009076  34% /mnt

dock samba服务器 samba服务器app_desktop_39


测试

root用户可以正常挂载该目录,但普通用户必须经过认证才可以查看共享目录

普通用户检测:

[student@server ~]$ cd /mnt
[student@server mnt]$ ls
ls: reading directory .: Permission denied
[student@server mnt]$ cifscreds add -u student 172.25.254.106
Password: 
[student@server mnt]$ ls
file1   file2  file4  file6  file8  westos
file10  file3  file5  file7  file9
[student@server mnt]$ touch westos1
[student@server mnt]$ rm -f file10

dock samba服务器 samba服务器app_共享目录_40