Linux之cifs/samba

Cifs和Samba的基本概念

CIFS是实现文件共享服务的一种文件系统,主要用于实现windows系统中的文件共享,linux系统中用的比较少linux系统中利用CIFS文件系统实现文件共享,需要安装samba服务。它使程序可以访问远程Internet计算机上的文件并要求此计算机提供服务。CIFS 使用客户/服务器模式。客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。CIFS是公共的或开放的SMB协议版本,并由Microsoft使用。

samba作用

samba是一款软件,主要功能是提供cifs服务

samba服务器的安装及访问调试

yum install samba-client samba-common.x86_64 samba.x86_64 -y
Linux之cifs/samba
systemctl start smb
systemctl stop firewalld.service

samba的基本信息
端口: 139/tcp 139/udp 445/tcp 445/udp
主配置文件:/etc/samba/smb.conf

基本配置信息
workgroup = WESTOS ##工作组的设定
server string = hello world ##全局共享信息
hosts allow = 172.25.254.223 ##客户端黑名单
hosts deny = 172.25.254.223 ##客户端白名单

测试:
smbclient -L //172.25.254.140 -U student
Linux之cifs/samba
smbclient //172.25.254.140/student -U student

Linux之cifs/samba
注意student是必须是服务端有的smb用户

smb用户

注意:smb用户必须是服务端本地所拥有的用户
smbpasswd -a student ##student 必须是本机用户
Linux之cifs/samba
pdbedit -L ##查看
Linux之cifs/samba
pdbedit -x student ##删除

setsebool -P samba_enable_home_dirs on ##-P永久生效(使用后可以查看用户家目录)
关闭状态时不能访问用户家目录
Linux之cifs/samba
Linux之cifs/samba
开启状态时可以访问用户家目录
Linux之cifs/samba

samba共享目录

用户自己建立的目录需要修改安全上下文
semanage fcontxet -a -t samba_share_t ‘/gxml(/.*)?’
restorecon -FvvR /gxml/
Linux之cifs/samba
##共享目录自建立目录时需要修改selinux属性,此方式只针对修改目录

配置文件
vim /etc/samba/smb.conf
[共享名称]
comment = 共享说明
path = 共享目录路径
Linux之cifs/samba

测试:
Linux之cifs/samba
共享系统建立目录需要修改的linux属性,此方式修改针对所有目录,一旦开放selinux不保护目录访问
setsebool -P samba_export_all_rw on ##可以读写(开启后自建的目录也可以不用修改安全上下文)
setsebool -P samba_export_all_ro on ##只读

测试:
Linux之cifs/samba
注意:新建的目录没有修改安全上下文也可以访问

基本配置信息

vim /etc/samba/smb.conf
89 workgroup = DZH ##工作组的设定

95 hosts allow = 172.25.254.140 ##允许140挂载

94 hosts deny = 172.25.254. ##不允许172.25.254.这个网段挂载

挂载
mount //172.25.254.140/haha /mnt -o username=zyx,password=redhat
Linux之cifs/samba

永久挂载
vim /etc/fstab
//172.25.254.140/haha /mnt cifs defaults,username=zyx,password=redhat 0 0

samba匿名访问

vim /etc/samba/smb.conf

125 map to guest = bad user
Linux之cifs/samba

322 [haha]
323 comment = sad dir
324 path = /sad
325 guest ok = yes

Linux之cifs/samba
测试:
smbclient //172.25.254.140/haha -U guest

Linux之cifs/samba
随便输入一个密码就行

samba共享目录的管理参数

vim /etc/samba/smb.conf

[haha]
comment = gxml
path = /gxml
guest ok = yes
writable = yes ##写权力开放
#write list = +lee ##写权力对lee组开放 +和@表示组(使用时记得注释writeable,用;注释)
#valid users = lee ##设定当前共享的有效用户
#valid users = @lee
#browseable = no ##当前共享是否可以显示(不影响操作,只关乎显示,用-L测试)
#admin users = lee ##设定lee用户为当前共享的root(建立出来的文加属于root)

测试:

writable = yes

##写权力开放后,给目录777的权限(给757也可以,操作是o进行的)
Linux之cifs/samba

Linux之cifs/samba
因为挂载的时候是用zyx,所以属于的用户和组是zyx

write list = +zyx

Linux之cifs/samba
mount //172.25.254.140/haha /mnt -o username=jsq,password=redhat
然后不能写
Linux之cifs/samba
usermod -G zyx jsq
Linux之cifs/samba
重新进入挂载点后可以写了
Linux之cifs/samba

valid users = jsq

Linux之cifs/samba
mount //172.25.254.140/haha /mnt -o username=zyx,password=redhat
不能挂载,只有jsq可以挂载
Linux之cifs/samba

browseable = no

Linux之cifs/samba
smbclient -L //172.25.254.140/haha -U student
Linux之cifs/samba
haha没有显示

admin users = zyx

把写权限打开
Linux之cifs/samba

Linux之cifs/samba
文件的u是root

smb多用户挂载

yum install cifs-utils(在客户端安装)
vim /root/passfile
username=smb用户
password=smb用户密码
Linux之cifs/samba

为了安全,可以chmod 600 /root/passfile

在客户端
mount -o credentials=/root/passfile,multiuser,sec=ntlmssp //172.25.254.140 /mnt ##multiuser表示多用户
credentials=/root/smbpasswd ##挂载时的用户认证
sec=ntlmssp ##其他用户的认证方式
Linux之cifs/samba

此时超级用户可以进入/mnt,其他用户进入不了

su - test
[[email protected] mnt]$ cifscreds add -u jsq 172.25.254.140
Password:
[[email protected] mnt]$ ls
123 234 asd file file1 file2 file6 meia wdt
Linux之cifs/samba

##其他用户添加认证,如果密码正确,可以查看,如果密码错误,不能重新添加,需要先删除再添加
cifscreds clear -u jsq 172.25.254.140