############samba
第一步
server200:
[root@server ~]# yum install samba-client.x86_64 samba-common.x86_64 samba.x86_64 -y ##安装samba和其客户浏览端口
[root@server ~]# systemctl start smb ##启动samba
[root@server ~]# firewall-cmd --permanent --add-service=samba ##防火墙开启samba
success
[root@server ~]# firewall-cmd --permanent --add-service=samba-client ##防火墙开启samba浏览端口
success
[root@server ~]# firewall-cmd --reload ##防火墙重起
success
第二步 ##建立外界用户可以通过本机访问的用户
server200:
[root@server ~]# pdbedit -L #######看是否有用samba的用户
[root@server ~]# useradd westos
[root@server ~]# useradd lee
[root@server ~]# pdbedit -L
[root@server ~]# smbpasswd -a westos ######用户通过samba用户访问时的密码 123
New SMB password:
Retype new SMB password:
Added user westos.
[root@server ~]# smbpasswd -a lee
New SMB password:
Retype new SMB password:
Added user lee.
[root@server ~]# pdbedit -L #######添加完成
westos:1001:
lee:1002:
##########客户端client100的访问
[root@desktop ~]# yum install samba-client -y ##下载客户端的软件
[root@desktop ~]# smbclient -L //172.25.254.200 ##匿名访问服务端
Enter root's password: ##密码不写
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1] ##等会更改domainSharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba Server Version 4.1.1)Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]Server Comment
--------- -------
Workgroup Master
--------- -------[root@desktop ~]# smbclient -L //172.25.254.200 -U westos ##用服务端的用户westos登陆服务端
Enter westos's password: ##密码是123
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]Sharename Type Comment
--------- ---- -------
westos Disk Home Directories
IPC$ IPC IPC Service (Samba Server Version 4.1.1)Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]Server Comment
--------- -------
Workgroup Master
--------- -------[root@desktop ~]#
[root@desktop ~]#
####在客户端传送文件
server:
[root@server ~]# cd /home/westos ##服务端没有文件
[root@server westos]# ls
[root@server westos]#
client:
[root@desktop ~]# smbclient //172.25.254.200/westos -U westos ##在客户端以westos进入服务器的客户home中
Enter westos's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: > ls
. D 0 Wed Aug 14 17:00:25 2019
.. D 0 Wed Aug 14 17:00:43 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. 56477 blocks availablesmb: > !ls
anaconda-ks.cfg Desktop Documents Downloads Music Pictures Public Templates Videos
smb: > put anaconda-ks.cfg
putting file anaconda-ks.cfg as \anaconda-ks.cfg (76.5 kb/s) (average 76.5 kb/s) ##将文件从客户端发给服务端
smb: >
server200:
[root@server westos]# ls ##服务端出现从客户端上传的文件
anaconda-ks.cfg
[root@server westos]#
########客户端对服务文件的删除
client:
[root@desktop mnt]# rm -rf anaconda-ks.cfg ##客户端删除文件
[root@desktop mnt]# ls
[root@desktop mnt]# touch file{1..5} ###客户端建立文件
[root@desktop mnt]# ls
file1 file2 file3 file4 file5
[root@desktop mnt]# rm -rf file* ##客户端删除文件
server200
[root@server westos]# ls ##以前有的
anaconda-ks.cfg
[root@server westos]# ls ##服务端删除后没有
[root@server westos]# ls ##新的文件在客户端建立
file1 file2 file3 file4 file5
[root@server westos]# ls ##删除后没有
#################################配置文件修改
################简单修该配置文件domain
client100:
[root@desktop mnt]# smbclient -L //172.25.254.200 -U westos ###修改前情况
Enter westos's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1] ##domanSharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba Server Version 4.1.1)
westos Disk Home DirectoriesDomain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]Server Comment
--------- -------
Workgroup Master
--------- -------
server200:
[root@server westos]# vim /etc/samba/smb.conf ##进入配置文件 89 # workgroup = MYGROUP
90 workgroup = WESTOS ##修改为westos
91 server string = Samba Server Version %v
92
client100:
[root@desktop mnt]# smbclient -L //172.25.254.200 -U westos ##修改后查看
Enter westos's password:
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1] ##doman变化Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba Server Version 4.1.1)
westos Disk Home DirectoriesDomain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]Server Comment
--------- -------
Workgroup Master
--------- -------
############修改配置文件白名单,只有与允许的才能登陆,其他人不能登陆。通过ip控制
server200:
[root@server westos]# vim /etc/samba/smb.conf ##允许其他ip登陆,其他ip不能登陆96 ; hosts allow = 127. 192.168.12. 192.168.13.
97 hosts allow = 172.25.254.71
[root@server westos]# systemctl restart smb ##重起samba
client100:
[root@desktop mnt]# smbclient -L //172.25.254.200 -U westos ##本机172.25.254.100不在白名单中因此不能登陆
Enter westos's password:
protocol negotiation failed: NT_STATUS_INVALID_NETWORK_RESPONSE
[root@desktop mnt]#
######修改黑名单,不再名单上的都能上网
server200:
[root@server westos]# vim /etc/samba/smb.conf ##添加黑名单; hosts allow = 127. 192.168.12. 192.168.13.
hosts deny = 172.25.254.71
; max protocol = SMB2
[root@server westos]# systemctl restart smb ##重起
client100:
[root@desktop mnt]# smbclient -L //172.25.254.200 -U westos ##白名单生效时
Enter westos's password:
protocol negotiation failed: NT_STATUS_INVALID_NETWORK_RESPONSE
[root@desktop mnt]# smbclient -L //172.25.254.200 -U westos ##不再黑名单中可以登陆
Enter westos's password:
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba Server Version 4.1.1)
westos Disk Home DirectoriesDomain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]Server Comment
--------- -------
Workgroup Master
--------- -------[root@desktop mnt]# [root@server westos]# vim /etc/sysconfig/selinux
##############当打开服务端的selinux我们该怎么让客户端登陆共享的文件
server200:
[root@server westos]# vim /etc/sysconfig/selinux ##服务端打开selinux重起生效disabled - No SELinux policy is loaded.SELINUX=enforcingSELINUXTYPE= can take one of these two values:targeted - Targeted processes are protected,[root@server westos]# reboot
[root@server ~]# systemctl start smb ##重起后打开samba服务
[root@server ~]# systemctl enable smb.service
[root@server ~]# mkdir /westos_smb ##建立新的共享目录
[root@server ~]# vim /etc/samba/smb.conf ##在配置文件中写上目录的路径与名称
[WESTOS]
comment= Share Directory
path=/westos_smb
[root@server ~]# systemctl restart smb.service ##使配置文件生效
###解决selinux开启状态时服务端可看到共享文件的内容的方法:1、是临时设置selinux使他关闭。2、用安全上下文的方法去做
server、:
[root@server ~]# getenforce
Enforcing
[root@server ~]# setenforce 0
[root@server ~]# getenforce
Permissive
[root@server ~]# setenforce 1 ##开启
[root@server ~]# semanage fcontext -a -t samba_share_t '/westos_smb(/.*?)?' ##改变共享文件的安全上下文
[root@server ~]# restorecon -RvvF /westos_smb/ ##刷新
restorecon reset /westos_smb context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0
client100:
[root@desktop mnt]# smbclient //172.25.254.200/WESTOS -U westos ##进入共享文件文件
Enter westos's password:
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1] ##设置selinux关闭
smb: > ls
. D 0 Wed Aug 14 17:38:56 2019
.. D 0 Wed Aug 14 17:38:56 2019 40913 blocks of size 262144. 28332 blocks availablesmb: > ls ##设置lelinux打开
NT_STATUS_ACCESS_DENIED listing *
smb: > ls 。。。。。。。。。。。。。。##设置文件安全上下后
. D 0 Wed Aug 14 17:38:56 2019
.. D 0 Wed Aug 14 17:38:56 2019 40913 blocks of size 262144. 28327 blocks available
###########当进入通过selinux后可以看到目录名进入,但是不能建立文件。
############解决方法:1、我们要在配置文件中开启。2、我们要给与其他人的文件权限
client100:
[root@desktop mnt]# touch file ##无法建立文件
touch: 无法创建"file": 权限不够
[root@desktop mnt]# touch file
touch: 无法创建"file": 权限不够
server200:
[root@server ~]# vim /etc/samba/smb.conf ##配置文件给与写的权限 [WESTOS]
comment= Share Directory
path=/westos_smb
writable = yes[root@server ~]# systemctl restart smb.service ##重起生效
[root@server ~]# chmod 777 /westos_smb/ ##给与其他人的文件权限
client:
[root@desktop mnt]# touch file ##建立文件成功
[root@desktop mnt]# ls
file
#####注意:我们再服务端以westos建立文件文件的所有者是1001,因为我们客户端没有1001的用户。而在服务端我们的文件所有者是westos,因为westos的的id就是1001.也就是说,我门在服务服务端建立的文件是受于服务端的westos的。但是在客户端显示时是显示服务端id为1001的用户。
client100:
[root@desktop mnt]# ll ##属于westos在服务端的的id
总用量 0
-rw-r--r-- 1 1001 1001 0 8月 14 18:08 file
server200:
[root@server ~]# id westos ##服务端westos是1001文件属于他。
uid=1001(westos) gid=1001(westos) 组=1001(westos)
[root@server ~]# ll /westos_smb/*
-rw-r--r--. 1 westos westos 0 8月 14 18:08 /westos_smb/file
######################在前面我们给与用户操作服务端的文件,需要写配置文件和给与用户文件的权限。还有另一种给与权限的方法
server:
[root@server ~]# chmod 755 /westos_smb/ ##收回权限
client100:
[root@desktop /]# umount /mnt ##取消挂载后在挂在
[root@desktop /]# mount //172.25.254.200/WESTOS /mnt -o username=westos,password=123
[root@desktop /]# cd /mnt
[root@desktop mnt]# touch file2 ##无法建立
touch: 无法创建"file2": 权限不够
[root@server ~]# setfacl -m u:westos:rwx /westos_smb/ ##只给westos权限
[root@desktop mnt]# ls
file
[root@desktop mnt]# touch file2 ##建立成功
[root@desktop mnt]# ls
file file2
#############################对于系统文件来说我们怎么通过selinux来查看其中内容
############系统文件的共享与普通的一样,不再演示
server200:
[root@server mnt]# touch file{1..3} ##建立文件
[root@server mnt]# ls
file1 file2 file3
client100:
[root@desktop mnt]# ls ##不能看到
[root@desktop mnt]# touch file
touch: 无法创建"file": 权限不够
##解决方法,普通文件是关闭selinux或给与安全上下文。系统文件方法则是setsebool
[root@server mnt]# getsebool -a | grep samba
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
use_samba_home_dirs --> off
virt_sandbox_use_samba --> off
virt_use_samba --> off
[root@server mnt]# setsebool -P samba_export_all_ro on ###开启
client100: ##开气后我门可以看到
root@desktop mnt]# ls
file1 file2 file3 off
#################系统文件共享时怎么有w的权限,对于普通用户给samba配置文件加权限,给用户文件加权限即可。但是,对于系统用户我们还要设置setsebool。
server200:
[root@server mnt]# getsebool -a | grep samba ##setsebool
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> on
samba_export_all_rw --> on ##开启这个设置方法和刚才一样
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
use_samba_home_dirs --> off
virt_sandbox_use_samba --> off
virt_use_samba --> off
[root@server mnt]# chmod 777 /mnt ##给文件权限
[root@server mnt]# vim /etc/samba/smb.conf ##设置配置文件samba
[root@server mnt]#
[mnt]
comment= Share System mnt directory
path = /mnt
writable = yes
[root@server mnt]# systemctl restart smb.service ##重起samba
client100:
[root@desktop mnt]# touch file ##少一个都不可以
touch: 无法创建"file": 权限不够
[root@desktop mnt]# touch file
[root@desktop mnt]# ls
file file1 file2 file3 off
[root@desktop mnt]#
############################前面我们的系统用户与普通用户的读取文件的方法已经看完。现在来看samba服务本身的一些配置文件作用
###########我们给与前面westos一个新的共享文件予以说明,同时给与客户读取和看的权限
1.browseable =no
server200:
[root@server lee]# vim /etc/samba/smb.conf [WESTOS]
[WESTOS]
comment= Share Directory
path = /lee
;writable = yes
browseable= no ###开启这个服务
[root@server lee]# systemctl restart smb.service
[root@server lee]#
client:100
[root@desktop mnt]# smbclient -L //172.25.254.200 -U westos ##看共享服务目录
Enter westos's password:
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1] ##没加服务前Sharename Type Comment
--------- ---- -------
WESTOS Disk Share Directory ###westos注意
mnt Disk Share System mnt directory
IPC$ IPC IPC Service (Samba Server Version 4.1.1)Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]Server Comment
--------- -------
Workgroup Master
--------- -------[root@desktop mnt]# smbclient -L //172.25.254.200 -U westos ##加了服务后
Enter westos's password:
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]Sharename Type Comment
--------- ---- ------- ###消失
mnt Disk Share System mnt directory
IPC$ IPC IPC Service (Samba Server Version 4.1.1)Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]Server Comment
--------- -------
Workgroup Master
--------- -------[root@desktop mnt]# smbclient //172.25.254.200/WESTOS -U westos ##但我们能登陆到WESTOS
Enter westos's password:
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]
smb: > LS
. D 0 Wed Aug 14 19:17:17 2019
.. D 0 Wed Aug 14 19:15:31 2019
file N 0 Wed Aug 14 19:17:16 2019 40913 blocks of size 262144. 28327 blocks available
###可写的控制
server200:
[root@server /]# vim /etc/samba/smb.conf
[WESTOS]
comment= Share Directory
path = /lee
; writable = yes
; browseable= no
write list = westos ###加入可写名单
[root@server lee]# systemctl restart smb.service
client:100
[root@desktop mnt]# touch file1 ##westos用户时可以写文件的
[root@desktop mnt]# ls
file file1
[root@desktop /]# mount //172.25.254.200/WESTOS /mnt -o username=lee,password=123 ##以lee用户登陆
[root@desktop /]# cd /mnt
[root@desktop mnt]# ls
file file1
[root@desktop mnt]# touch file3 ##不再具有为权限
touch: 无法创建"file3": 权限不够
######如果给前面加‘+’表示属于有户的组就可以进行在客户端写入
###########其他的几个参数不再举例,仅仅作说明,所添加的地点仍在配置文件的WESTOS中
1、valid user = lee ###这个参数相当与白名单只有这个用户时合法登陆用户其他是其他人无法登录
2、 配置文件:126 map to guest = bad user 转换陌生用户登陆身份,给与其有个身份
文件参数中加入
guest ok = yes
3、admin user = westos ###我们知道普通的文件添加写权限需要权限和配置中加可写文件。
这个命令则是不用再配置文件中加可以配置对任何人,而是赋予一 用户root权限虽然如此但仍然受外加为权限限制。
###############################################################################################################################################
############在电脑中有许多用户,当我们把共享服务端挂载到了客户端中,其安全是怎么提供呢,其用户在客户端对共享的文件进行操作怎么办。
#######################################cifs可以进行在客户端进行一个安全防护
[root@desktop mnt]# yum install cifs-utils -y #####用户下载
cifs[root@desktop ~]# mount //172.25.254.200/WESTOS /mnt -o
credentials=/root/smbpasswd,sec=ntlmssp,multiuser
从-o以后一次是这些功能:1、在本地建立保存密码和用户保存,2、其它需要用密码登陆 3、开启密码的恩路服务
client100:
[root@desktop ~]# su -student ######切换到普通用户
su: failed to execute tudent: 没有那个文件或目录
[root@desktop ~]# su - student
上一次登录:四 5月 11 20:23:54 EDT 2017pts/0 上
[student@desktop ~]$ cd /mnt
[student@desktop mnt]$ ls
ls: reading directory .: Permission denied
[student@desktop mnt]$ cifscreds add -u westos 172.25.254.200 ######使用cifs服务添加服务其用户和ip
Password: ##添加的用户密码
[student@desktop mnt]$ ls
file file2