#####samba 应用####
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件。由服务器及客户端协议构成
SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为区域网内的不同计算件之间提供文件等资源共享服务;
服务端环境配置:
/etc/sysconfig/network-scripts/ifcfg-eth0 ##网络配置文件
/etc/yum.repos.d/westos.repo ##yum 配置文件
服务端samba部署和应用:
1)软件安装和环境部署
yum install samba samba-common samba-client -y ##服务端 客户端以及常用命令
vim /etc/sysconfig/selinux Selinux=enforcing ##开启强制级内置防火墙
systemctl start smb ##打开samba服务
systemctl enable smb.service ##设置服务开机自启
systemctl stop firewalld.service ##关闭防护墙
systemctl status firewalld.service ##查看火墙当前状态
getsebool -a | grep samba ##查看selinux对samba的限制
setsebool -P samba_enable_home_dirs ON ##打开允许访问samba 家目录开关
2)建立smb用户并允许用户访问SMB
smbpasswd -a student ##添加用户student为smb用户并设定密码,设定的用户必须是存在的用户
pdbedit -L ##查看存在的smb用户
pdbedit -x lee ##删除smb 用户lee
测试:
客户端
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 ##访问家目录
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: \>
使用挂载的方式添加文件
将服务端的用户家目录通过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
4)修改smb共享的域
smbclient -L //172.25.254.135 ##查看共享信息,显示域为MYGROUP
vim /etc/samba/smb.conf ##修改配置文件 (workgroup= )
systemctl restart smb ##重启服务
smbclient -L //172.25.254.135 ##再次查看共享信息,域发生改变
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/ ##更新
测试:
客户端访问新建文件
[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
##SMB黑白名单设置###
服务端白名单的建立:
vim /etc/samba/smb.conf ##编辑配置文件
hosts allow = 172.25.254.235 ##只允许172.25.254.235 访问
systemctl restart smb ##重启服务
测试客户端访问:
172.25.254.235主机访问共享目录,可以访问
172.25.254.35主机访问被拒绝:
服务端黑名单的建立:
vim /etc/samba/smb.conf ##编辑配置文件
hosts deny = 172.25.254.235 ##不允许172.25.254.235 访问
systemctl restart smb ##重启服务
测试客户端访问:
172.25.254.235主机访问共享目录,不可以访问
172.25.254.35主机访问被允许:
匿名用户访问:
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
[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
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
##编辑配置文件
测试:
用户student对共享目录进行挂载,并创建或删除wenjian
2)服务端设定指定用户对共享目录可写
[root@server ~]# vim /etc/samba/smb.conf
[root@server ~]# chmod 777 /smbshare/
[root@server ~]# systemctl restart smb
测试:student用户对共享目录建立文件
lee用户进行挂载
3)设置某组的用户对共享目录可写
[root@server ~]# vim /etc/samba/smb.conf
[root@server ~]# systemctl restart smb
write list = @student ## “@” 和"+"效果一样
测试:
lee用户测试
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)
)
4)指定共享目录的有效用户
vim /etc/samba/smb.conf
systemctl restart smb
测试:
lee 用户无法进行挂载,student用户可以
5)指定共享用户有效用户组
[root@server ~]# vim /etc/samba/smb.conf
[root@server ~]# systemctl restart smb
测试:
用户lee在lee用户组不能挂载
添加到student组,可以挂载
6)设置隐藏共享目录
root@server ~]# vim /etc/samba/smb.conf
[root@server ~]# systemctl restart smb
测试:
查看共享信息,不显示共享信息但虽被隐藏依旧可以挂载
7)共享目录添加管理员
[root@server ~]# vim /etc/samba/smb.conf
[root@server ~]# systemctl restart smb
测试:
共享目录中文件的所有者及所属组和创建该共享目录的用户没关系,只和使用那个登陆SMB在共享目录中创建的文件,但作为管理员,所有新建的文件都是超级用户的
####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
测试
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