samba

samba介绍

samba服务的进程由smbd和nmbd组成
smbd进程:主要负责管理服务器上的共享目录、打印机、提供登录认证、创建对话进程和SMB资源共享等功能
端口 139和445

nmbd进程:主要负责提供NetBIOS的域名解析和浏览共享资源的服务
端口 137和138

samba工作原理

1、由Samba客户端向Samba服务器端发送包含使用的协议版本等信息的数据请求包,
当服务器收到数据请求包后对数据包中的内容进行确认,
如果Samba服务器没有响应客户端的请求则本次会话请求连接失败。
2、当数据请求包的信息被Samba服务器确认后,
服务器就向客户端发送建议使用的协议版本、端口等相关信息
3、客户端在收到来自服务器端的信息后,开始根据服务器的要求确认自身的信息,
然后向服务器发送认证信息并等待服务器的响应,如果服务器端响应客户端的请求,
则本次会话请求连接成功,否则,则本次会话请求连接失败。
4、客户端与服务器端成功建立会话连接后,客户端就可以通过相应的命令访问所需的资源。

samba部署

下载安装软件包

修改主机名:
[root@node1 ~]# hostnamectl hostname server.example.com --->  服务器
[root@rocklinux1 ~]# hostnamectl hostname client.example.com --->客服端


//时钟同步(客服端、服务器)
[root@client ~]# yum -y install chrony
[root@client ~]# systemctl restart chronyd
[root@client ~]# systemctl enable chronyd
[root@client ~]# hwclock -w
[root@client ~]# timedatectl 
               Local time: Tue 2024-07-30 16:29:04 CST
           Universal time: Tue 2024-07-30 08:29:04 UTC
                 RTC time: Tue 2024-07-30 08:29:05
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

//安装软件包
[root@client ~]# yum -y  install samba  samba-client

smb.conf.example 模板解析

[root@server samba]# vim /etc/samba/smb.conf.example
[global]   //全局

workgroup = MYGROUP		//工作组的名称
server string = Samba Server Version %v //版本信息
netbios name = MYSERVER    //定义NetBIOS名称
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 //定义samba服务监听的ip或者网络接口
hosts allow = 127. 192.168.12. 192.168.13.  //允许访问的主机列表
log file = /var/log/samba/log.%m   //日志文件位置
max log size = 50    //最大日志大小

security = user       //samba运行模式
passdb backend = tdbsam  //存储用户信息

security参数值可以设置为3种模式 :
user:使用samba自身的数据库验证用户
share:无需共享密码,任何人都可以访问samba共享资源
server:在此级别下,身份验证由samba主机负责,但是不推荐使用/

passdb backend参数值设置有3种:
tdbsam:使用数据库文件passdb.tdp,该文件存放在/etc/samba下,该参数值为默认
ldapsam:使用LDAP方式进行验证
smbpasswd:使用smbpasswd为系统用户设置samba密码

[homes]        //共享名,可以自定义
        comment = Home Directories     //共享描述信息
        browseable = no             //共享不可以浏览
        writable = yes               //共享权限为可写
        valid users = %S         //定义可访问的用户,这里表示所有合法登录的用户

comment =   //定义共享描述
path =  //定义具体的共享目录(值为共享目录的绝对路径)
browseable =   //定义是否可以浏览,yes为可以浏览,no为不能浏览,默认为yes
read only =   //定义共享权限是否只读,yes表示只读,默认值为只读
writable =   //定义共享权限是否可写,yes表示可写,no表示不可写,默认为no
write list = :定义具体读写共享权限的用户列表,不在列表的用户默认只有只读权限,参数值可以
设置为用户名和组名;设置用户名的格式为:username1,username2(中间用逗号隔开)  
设置组名的格式:@groupname1,@groupname2(中间用逗号隔开)
guest ok = :定义是否允许匿名,yes表示允许匿名,no表示不允许匿名
valid users = :定义可以访问共享的samba用户列表,格式username1,username2
不允许列表以外的samba用户访问共享,若列表为空白,则表示所有的samba用户均可访问共享
public = : 定义是否为公共共享,yes为公共共享  no表示非公共共享
设置目录共享时,一定要事先创建需要共享的目录,且留意共享目录的文件系统权限和共享权限的一致性。
rose  -----  r-x
marry -----rwx



[root@server samba]# vim /etc/samba/smb.conf.example
[global]   //全局

workgroup = MYGROUP		//工作组的名称
server string = Samba Server Version %v //版本信息
netbios name = MYSERVER    //定义NetBIOS名称
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 //定义samba服务监听的ip或者网络接口
hosts allow = 127. 192.168.12. 192.168.13.  //允许访问的主机列表
log file = /var/log/samba/log.%m   //日志文件位置
max log size = 50    //最大日志大小

security = user       //samba运行模式
passdb backend = tdbsam  //存储用户信息

security参数值可以设置为3种模式 :
user:使用samba自身的数据库验证用户
share:无需共享密码,任何人都可以访问samba共享资源
server:在此级别下,身份验证由samba主机负责,但是不推荐使用/

passdb backend参数值设置有3种:
tdbsam:使用数据库文件passdb.tdp,该文件存放在/etc/samba下,该参数值为默认
ldapsam:使用LDAP方式进行验证
smbpasswd:使用smbpasswd为系统用户设置samba密码

[homes]        //共享名,可以自定义
        comment = Home Directories     //共享描述信息
        browseable = no             //共享不可以浏览
        writable = yes               //共享权限为可写
        valid users = %S         //定义可访问的用户,这里表示所有合法登录的用户

comment =   //定义共享描述
path =  //定义具体的共享目录(值为共享目录的绝对路径)
browseable =   //定义是否可以浏览,yes为可以浏览,no为不能浏览,默认为yes
read only =   //定义共享权限是否只读,yes表示只读,默认值为只读
writable =   //定义共享权限是否可写,yes表示可写,no表示不可写,默认为no
write list = :定义具体读写共享权限的用户列表,不在列表的用户默认只有只读权限,参数值可以
设置为用户名和组名;设置用户名的格式为:username1,username2(中间用逗号隔开)  
设置组名的格式:@groupname1,@groupname2(中间用逗号隔开)
guest ok = :定义是否允许匿名,yes表示允许匿名,no表示不允许匿名
valid users = :定义可以访问共享的samba用户列表,格式username1,username2
不允许列表以外的samba用户访问共享,若列表为空白,则表示所有的samba用户均可访问共享
public = : 定义是否为公共共享,yes为公共共享  no表示非公共共享
设置目录共享时,一定要事先创建需要共享的目录,且留意共享目录的文件系统权限和共享权限的一致性。
rose  -----  r-x
marry -----rwx

案例

将samba服务器端目录/smbshare共享,共享名为myshare,共享可以浏览,允许用户rose和用户marry访问
用户rose具有只读权限,marry具有读写权限  (rose和marry系统存在的用户)

//创建目录,添加文件
[root@server ~]# mkdir /smbshare
[root@server ~]# cd /smbshare/
[root@server smbshare]# vim  /etc/samba/smb.conf
[myshare]
        browseable = yes
        path = /smbshare
        valid users = rose,marry
        write list = marry

//创建用户并成为是smbshare(设置密码)
[root@server ~]# useradd -s /sbin/nologin rose
[root@server ~]# useradd -s /sbin/nologin marry
[root@server ~]# smbpasswd -a rose
New SMB password:
Retype new SMB password:
Added user rose.
[root@server ~]# smbpasswd -a marry
New SMB password:
Retype new SMB password:
Added user marry.
[root@server ~]# pdbedit -L   //查询那些是smbshare用户
rose:1001:
marry:1002:

//修改权限
[root@server smbshare]# setfacl -m u:rose:r-x  /smbshare/
[root@server smbshare]# setfacl -m u:marry:rwx  /smbshare/
[root@server smbshare]# getfacl /smbshare/
getfacl: Removing leading '/' from absolute path names
# file: smbshare/
# owner: root
# group: root
user::rwx
user:rose:r-x
user:marry:rwx
group::r-x
mask::rwx
other::r-x

//重启服务
[root@server smbshare]# systemctl restart smb nmb
[root@server smbshare]# systemctl enable smb nmb

客服端
//安装软件包
[root@client ~]# yum -y install samba-client cifs-utils

1、匿名用户访问samba服务器共享资源列表--smbclient
smbclient -L  [samba服务器的hostname或者IP]

smbclient -L 172.16.30.20         ----匿名访问,直接回车,不需要输入密码

2、samba用户浏览samba服务器共享资源列表
smbclient -L  [samba服务器的hostname或者IP]  -U 【samba用户名】

smbclient -L 172.16.30.20  -U rose


3、匿名用户访问samba服务器的共享资源
smbclient  //[samba服务器的hostname或者IP]/[共享名]   ---------匿名用户不需要密码

smbclient //172.16.30.20/myshare


4、samba用户浏览samba服务器共享资源
smbclient  //[samba服务器的hostname或者IP]/[共享名]  -U [samba用户]

smbclient //172.16.30.20/myshare  -U rose


5、使用mount命令讲samba服务器共享资源挂载到本地目录下
mkdir  /smbmount


//挂载
1、交互式挂载
[root@client ~]# mount -t cifs -o username=rose //192.168.100.10/myshare  /test/
Password for rose@//192.168.100.10/myshare: 
[root@client ~]# df -Th
Filesystem               Type      Size  Used Avail Use% Mounted on
devtmpfs                 devtmpfs  4.0M     0  4.0M   0% /dev
tmpfs                    tmpfs     1.9G     0  1.9G   0% /dev/shm
tmpfs                    tmpfs     777M   11M  767M   2% /run
/dev/sda2                xfs        50G  1.7G   49G   4% /
/dev/sda1                xfs       960M  187M  774M  20% /boot
tmpfs                    tmpfs     389M     0  389M   0% /run/user/0
//192.168.100.10/myshare cifs       50G  1.8G   49G   4% /test

2、非交互式挂载
[root@client ~]# mount -t cifs -o username=marry,password=marry,sec=ntlmssp //192.168.100.10/myshare  /test/
[root@client ~]# df -Th
Filesystem               Type      Size  Used Avail Use% Mounted on
devtmpfs                 devtmpfs  4.0M     0  4.0M   0% /dev
tmpfs                    tmpfs     1.9G     0  1.9G   0% /dev/shm
tmpfs                    tmpfs     777M   11M  767M   2% /run
/dev/sda2                xfs        50G  1.8G   49G   4% /
/dev/sda1                xfs       960M  187M  774M  20% /boot
tmpfs                    tmpfs     389M     0  389M   0% /run/user/0
//192.168.100.10/myshare cifs       50G  1.8G   49G   4% /test

3、永久挂载
[root@client ~]# vim /etc/fstab  //在其中添加
//192.168.100.10/myshare  /test   cifs  username=rose,password=rose,sec=ntlmssp 0 0
[root@client ~]# mount -a
mount: (hint) your fstab has been modified, but systemd still uses
       the old version; use 'systemctl daemon-reload' to reload.
[root@client ~]# systemctl daemon-reload
[root@client ~]# df -Th
Filesystem               Type      Size  Used Avail Use% Mounted on
devtmpfs                 devtmpfs  4.0M     0  4.0M   0% /dev
tmpfs                    tmpfs     1.9G     0  1.9G   0% /dev/shm
tmpfs                    tmpfs     777M   11M  767M   2% /run
/dev/sda2                xfs        50G  1.8G   49G   4% /
/dev/sda1                xfs       960M  187M  774M  20% /boot
tmpfs                    tmpfs     389M     0  389M   0% /run/user/0
//192.168.100.10/myshare cifs       50G  1.8G   49G   4% /test


//借权(多用户挂载)
[root@client ~]# vim /etc/fstab  //在其中添加
//192.168.100.10/myshare  /test   cifs multiuser,username=rose,password=rose,sec=ntlmssp 0 0
[root@client ~]# mount -a
mount: (hint) your fstab has been modified, but systemd still uses
       the old version; use 'systemctl daemon-reload' to reload.
[root@client ~]# systemctl daemon-reload
[root@client ~]# df -Th
Filesystem               Type      Size  Used Avail Use% Mounted on
devtmpfs                 devtmpfs  4.0M     0  4.0M   0% /dev
tmpfs                    tmpfs     1.9G     0  1.9G   0% /dev/shm
tmpfs                    tmpfs     777M   11M  767M   2% /run
/dev/sda2                xfs        50G  1.8G   49G   4% /
/dev/sda1                xfs       960M  187M  774M  20% /boot
tmpfs                    tmpfs     389M     0  389M   0% /run/user/0
//192.168.100.10/myshare cifs       50G  1.8G   49G   4% /test
[student@client ~]# cifscreds  add 192.168.100.10  -u  marry
Password: 

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值