samba服务

1.samba简介

  • Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。
  • SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。

Samba监听端口有:

TCPUDP
139445
137138
  • tcp端口对应的服务是smbd服务,作用是提供对服务器中文件、打印资源的共享访问。
  • udp端相对应的服务是nmbd服务,作用是提供基于NetBIOS主机名称的解析。

samba进程:

进程对应
nmbd对应netbios
smbd对应cifs协议
winbindd + ldap对应Windows AD活动目录

samba用户:

帐号密码
都是系统用户/etc/passwdSamba服务自有密码文件通过smbpasswd -a USERNAME命令设置
smbpasswd命令:
    -a Sys_User     //添加系统用户为samba用户并为其设置密码
    -d              //禁用用户帐号
    -e              //启用用户帐号
    -x              //删除用户帐号

Samba安全级别:

  • Samba服务器的安全级别有三个,分别是user,server,domain
安全级别作用
user基于本地的验证
server由另一台指定的服务器对用户身份进行认证
domain由域控进行身份验证

share在以前的版本支持,作用是支持匿名访问,现在的版本也可以匿名访问.

samba配置文件和常用参数:

  • /etc/samba/smb.conf(主配置文件)
samba三大组成作用
[global]全局配置,此处的设置项对整个samba服务器都有效
[homes]宿主目录共享设置,此处用来设置Linux用户的默认共享,对应用户的宿主目录。当用户访问服务器中与自己用户名同名的共享目录时,通过验证后将会自动映射到该用户的宿主目录中
[printers]打印机共享设置
[global]全局参数
workgroup = MYGROUP工作组名称
server string表示描述samba服务器
security = user#安全验证的方式,总共有4种
share:来访主机无需验证口令;比较方便,但安全性很差
user:需验证来访主机提供的口令后才可以访问;提升了安全性
server:使用独立的远程主机验证来访主机提供的口令(集中管理账户)
domain:使用域控制器进行身份验证
passdb backend = tdbsam定义用户后台的类型,共有3种
smbpasswd:使用smbpasswd命令为系统用户设置Samba服务程序的密码
tdbsam:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户
ldapsam:基于LDAP服务进行账户验证
comment表示设置对应共享目录的注释,说明信息,即文件共享名
browseable表示设置目录是否可写
path表示共享目录的路径
guest ok表示设置是否所有人均可访问共享目录
public表示设置是否允许匿名用户访问
write list表示设置允许写的用户和组,组要用@表示,例如 write list = root,@root
valid users设置可以访问的用户和组,例如 valid users = root,@root
hosts deny设置拒绝哪台主机访问,例如 hosts deny = 192.168.72.1
hosts allow设置允许哪台主机访问,例如 hosts allow = 192.168.72.2

printable 表示设置是否为打印机

配置匿名用户共享

创建共享目录:
[root@xj ~]# mkdir /dd
[root@xj ~]# chmod 777 /dd
[root@xj ~]# vim /etc/samba/smb.conf
[global]
        workgroup = SAMBA
        security = user
        map to guest =Bad User -----添加的内容
 配置共享目录:
 [root@xj ~]# vim /etc/samba/smb.conf
[dd]
        comment = This is a directory
        path = /dd
        guest ok = yes
        public = yes
        browseable = yes
        writable = yes
 启动smb服务:
[root@xj ~]# systemctl enable smb
Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.
[root@xj ~]# systemctl restart smb
在客户端上查看samba服务器的共享资源
[root@xj222 ~]# smbclient -L 192.168.23.132 -U 'Bad User'
Enter SAMBA\Bad User's password: 
OS=[Windows 6.1] Server=[Samba 4.6.2]

	Sharename       Type      Comment
	---------       ----      -------
	print$          Disk      Printer Drivers
	dd              Disk      This is a directory
	IPC$            IPC       IPC Service (Samba 4.6.2)
OS=[Windows 6.1] Server=[Samba 4.6.2]

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

	Workgroup            Master
	---------            -------
将samba服务器的共享目录挂载到客户机本地
[root@xj222 ~]# mount -t cifs //192.168.23.132/dd /xx/ -o username='Bas User'
[root@xj222 ~]# df -h
文件系统               容量  已用  可用 已用% 挂载点
/dev/mapper/rhel-root   17G  1.6G   16G    9% /
...
//192.168.23.132/dd     17G  1.1G   16G    7% /xx
[root@xj222 ~]# cd /xx/
[root@xj222 xx]# touch xx
[root@xj222 xx]# ls
xx
在服务器上查看
[root@xj ~]# cd /dd
[root@xj dd]# ll
-rw-r--r--. 1 nobody nobody 0 1月  15 2019 xx

配置用户认证共享

创建用户和smb共享密码
[root@xj dd]# useradd -M aa
[root@xj dd]# cd
[root@xj ~]# smbpasswd -a aa
New SMB password:
Retype new SMB password:
Added user aa.
配置映射用户
[root@xj ~]# vim /etc/samba/xj
[root@xj ~]# cat /etc/samba/xj
aa = xj
配置共享目录
[root@xj ~]# vim /etc/samba/smb.conf

[global]
        workgroup = SAMBA
        security = user
        username  map = /etc/samba/xj -----添加的内容,删除map to guest ='Bad User'

[dd]
        comment = This is a directory
        path = /dd
        guest ok = yes
        public = yes
        browseable = yes
        writable = yes
        write list = xj
重启服务并在客户端查看smb共享资源
[root@xj ~]# systemctl restart smb

[root@xj222 ~]# smbclient -L 192.168.23.132 -U xj
Enter SAMBA\xj's password: 
Domain=[XJ] OS=[Windows 6.1] Server=[Samba 4.6.2]

	Sharename       Type      Comment
	---------       ----      -------
	print$          Disk      Printer Drivers
	dd              Disk      This is a directory
	IPC$            IPC       IPC Service (Samba 4.6.2)
	aa              Disk      Home Directories
Domain=[XJ] OS=[Windows 6.1] Server=[Samba 4.6.2]

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

	Workgroup            Master
	---------            -------
	
将共享资源挂载到本地

[root@xj222 ~]# mount -t cifs //192.168.23.132/dd /ss/ -o username=xj,password=1
[root@xj222 ~]# df -h
文件系统               容量  已用  可用 已用% 挂载点
....
//192.168.23.132/dd     17G  1.1G   16G    7% /ss

将挂载写入配置文件
[root@xj222 ~]# vim /etc/fstab 
//192.168.23.132/dd /ss cifs defaults,username=xj,password=1 0 0 

在客户端查看
[root@xj222 ~]# cd /ss/
[root@xj222 ss]# ll
总用量 0
-rw-r--r--. 1 1000 1000 0 1月  15 18:22 ll  ----拥有主为aa

[root@xj dd]# id aa
uid=1000(aa) gid=1000(aa) 组=1000(aa)

在服务端验证
[root@xj ~]# cd /dd/
[root@xj dd]# ll
总用量 0
-rw-r--r--. 1 aa aa 0 1月  15 2019 ll
                                               
  • 用windows验证,新建文本文件windows.txt
    在这里插入图片描述
在服务器上验证
[root@xj dd]# ll
总用量 0
-rw-r--r--. 1 aa aa 0 1月  15 2019 ll
-rwxr--r--. 1 aa aa 0 1月  15 10:36 Windows.txt  

samba挂载

创建共享目录/common
[root@server30 ~]# mkdir /common
创建smb用户共享密码
[root@server30 ~]# useradd natasha
[root@server30 ~]# smbpasswd -a natasha
New SMB password:
Retype new SMB password:
Added user natasha.
配置smb共享目录
[root@server30 ~]# vim /etc/samba/smb.conf 
[common]
        path = /commom
        browseable = yes
        valid users = natasha
写入防火墙规则
[root@server30 ~]# firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=172.16.30.0/24 service name=samba accept'
success
[root@server30 ~]# firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=172.16.30.0/24 service name=samba-client accept'
success
[root@server30 ~]# firewall-cmd --reload
success
对共享目录做acl并查看selinux有关samba的服务
[root@server30 ~]# setfacl -m u:natasha:r-x /common/
[root@server30 ~]# 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

开启samba_enable_home_dirs 服务
[root@server30 ~]# setsebool -P samba_enable_home_dirs on
设置selinux放行共享目录
[root@server30 ~]# chcon -Rt samba_share_t /common/
[root@server30 ~]# ll -Z /common/ -d
drwxr-xr-x+ root root unconfined_u:object_r:samba_share_t:s0 /common/
在客户端挂载共享目录
[root@desktop30 ~]# mount -t cifs -o username=natasha,password=tangkai //172.16.30.130/common /xx/
[root@desktop30 ~]# df -h
Filesystem              Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   4.9G  3.0G  2.0G  60% /
devtmpfs                905M     0  905M   0% /dev
tmpfs                   914M  148K  914M   1% /dev/shm
tmpfs                   914M  8.8M  905M   1% /run
tmpfs                   914M     0  914M   0% /sys/fs/cgroup
/dev/sda1               197M  104M   94M  53% /boot
/dev/sr0                3.5G  3.5G     0 100% /run/media/student/RHEL-7.0 Server.x86_64
//172.16.30.130/common

samba多用户挂载

创建共享目录
[root@server30 ~]# mkdir /storage
[root@server30 ~]# vim /etc/samba/smb.conf 
[share]
        path = /storage
        browseable = yes
        valid users = sarah,kitty
        writable = no
        write list = kitty
创建用户sarah和kitty,并配置smb共享密码
[root@server30 ~]# useradd sarah
[root@server30 ~]# useradd kitty
[root@server30 ~]# smbpasswd -a sarah
New SMB password:
Retype new SMB password:
Added user sarah.
[root@server30 ~]# smbpasswd -a kitty
New SMB password:
Retype new SMB password:
Added user kitty.
设置acl权限
[root@server30 ~]# setfacl -m u:sarah:r-x /storage/
[root@server30 ~]# setfacl -m u:kitty:rwx /storage/
[root@server30 ~]# getfacl /storage/
getfacl: Removing leading '/' from absolute path names
#file: storage/
#owner: root
#group: root
user::rwx
user:sarah:r-x
user:kitty:rwx
group::r-x
mask::rwx
other::r-x
设置selinux放行共享文件
[root@server30 ~]# chcon -Rt samba_share_t /storage/
[root@server30 ~]# ll -Z /storage/ -d
drwxrwxr-x+ root root unconfined_u:object_r:samba_share_t:s0 /storage/
在客户端挂载共享目录
[root@desktop30 ~]# vim /etc/fstab 
//172.16.30.130/share /mnt/dev cifs multiuser,username=sarah,password=tangkai,sec=ntlmssp
[root@desktop30 ~]# mount -a
[root@desktop30 ~]# df -h
Filesystem              Size  Used Avail Use% Mounted on
...
//172.16.30.130/common  4.9G  3.0G  2.0G  61% /xx
//172.16.30.130/share   4.9G  3.0G  2.0G  61% /mnt/dev
切入普通用户验证smb
[root@desktop30 ~]# su - student
[student@desktop30 ~]$ cifscreds add -u kitty 172.16.30.130
Password: 
[student@desktop30 ~]$ cd /mnt/dev/
[student@desktop30 dev]$ touch g
[student@desktop30 dev]$ ll
total 0
-rw-r--r--. 1 1003 1003 0 Jan 15 18:00 g

[root@server30 ~]# id 1003
uid=1003(kitty) gid=1003(kitty) groups=1003(kitty)

在客户端验证
[root@server30 ~]# cd /storage/
[root@server30 storage]# ll
total 0
-rw-r--r--. 1 kitty kitty 0 Jan 15 18:00 g




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值