samba
Linux上有一款应用叫做Samba,是一个能让Linux系统应用微软网络通讯协议的软件。
微软为了解决局域网的文件共享,制定了SMB协议,也就是(Server Messages Block,服务器消息块),后来SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。
Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享
Samba既可以用于windows与Linux之间的文件共享
也可以用于Linux与Linux之间的资源共享
由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享
因而 Samba较多的用在了Linux与windows之间的数据共享上面。
安装Sumba服务
1、安装samba
[root@nfs-31 ~]#yum install samba -y
2、修改配置文件 /etc/samba/smb.conf,添加共享文件
[root@nfs-31 ~]#vim /etc/samba/smb.conf
[root@nfs-31 ~]#tail /etc/samba/smb.conf
force group = @printadmin
create mask = 0664
directory mask = 0775
[smb_share]
comment=myself share dir
path = /my_smb/
guest ok=no
public = no
writable = yes
[root@nfs-31 ~]#
3、创建共享文件
[root@nfs-31 ~]#mkdir /my_smb
4、samba也有用户认证机制,需要通过pdbedit命令设置samba的用户信息
创建用户
[root@nfs-31 ~]#useradd samba01
使用pdbedit命令,给samba的用户设置密码
-a 添加smb用户
-u 指定用户名
[root@nfs-31 ~]#pdbedit -a -u samba01
new password: 111111
retype new password:111111
5、修改smb共享文件夹的权限
[root@nfs-31 ~]#chown -R samba01:samba01 /my_smb/
6、创建文件
[root@nfs-31 ~]#touch /my_smb/999.png
7、启动samba服务
[root@nfs-31 ~]#systemctl start smb
验证端口
[root@nfs-31 ~]#netstat -tunlp|grep smb
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 12059/smbd
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 12059/smbd
tcp6 0 0 :::445 :::* LISTEN 12059/smbd
tcp6 0 0 :::139 :::* LISTEN 12059/smbd
客户端认证
Linux
1、登录一台新机器,下载samb安装工具
[root@rsync-41 ~]#yum install samba-client -y
2、登录
[root@rsync-41 ~]#smbclient //10.0.0.31/smb_share -U samba01
Enter SAMBA\samba01's password: 输入samba01密码
Try "help" to get a list of possible commands.
验证
smb: \> pwd
Current directory is \\10.0.0.31\smb_share\
smb: \> ls
. D 0 Tue Apr 19 20:22:07 2022
.. D 0 Tue Apr 19 20:17:38 2022
999.png N 0 Tue Apr 19 20:22:07 2022
17811456 blocks of size 1024. 16463892 blocks available
smb: \>
获取文件
smb: \> get
get <filename> [localname]
smb: \> get 999.png 666.png
getting file \999.png of size 0 as 666.png (0.0 KiloBytes/sec) (average 0.0 KiloBytes/sec)
smb: \> exit
[root@rsync-41 ~]#ls
333.txt 666.png anaconda-ks.cfg
Windows
关闭win的防火墙
1、win+r打开运行窗口
2、输入samba协议
\\10.0.0.31\smb_share
3、输入账号密码
samba01
111111
smb的配置文件,主要分为全局配置和共享配置
【全局配置】
workgroup = MYGROUP
Samba服务器加入的工作组名,一个局域网内,必须有相同的工作组名。
server string = Samba Server Version %v
Samba服务器注释,可以不选,%v代表显示Samba版本号
netbios name = samba
主机NetBIOS名
netbios name = samba
主机NetBIOS名
interfaces = lo eth0
设置Samba服务器端监听网卡,可以写网卡名称或者IP地址
hosts allow/deny = 10.10.10.1
允许连接到Samba server客户端IP,多个参数用空格分开。可以用一个IP表示,也可以用一个网段表示。
max connections = 0
用来指定连接Samba server服务器最大连接数如果操作则连接请求被拒绝。0表示不限制。
deadtime = 0
来设置断掉一个没有任何文件的链接时间。单位十分钟,0代表Samba server不自动断开任何连接
time server = yes/no
用来设置让nmdb成为Windows客户端的时间服务器
log file = /var/log/samba/%m.log
设置Samba server日志文件存储位置和日志名称。文件后面加一个%m(主机名),每个主机都会有一个主机名.log日志文件
max log size = 50
限制每个日志文件的最大容量为50KB,0代表不限制
Security = user
设置客户端访问Samba服务器的验证方式,Samba4版本已经不使用share和server方式,这里不介绍
1) user:Samba用户名和密码登录
2) domain:添加Samba服务器到N域,由NT与控制起来进行身份验证。域安全级别,使用主域控制器(PDC)来完成认证
passdb backend = tdbsam
后台管理用户密码方式
1)smbpasswd:该方式是使用smb自己的工具smbpasswd来给系统用户
2)tdbsam:该方式则是使用一个数据库文件来建立用户数据库。
3)ldapsam:该方式则是基于LDAP的账户管理方式来验证用户。
smb passwd file = /etc/samba/smbpasswd
用来定义samba用户的密码文件。smbpasswd文件如果没有那就要手工新建。
username map = /etc/samba/smbusers
用来定义用户名映射,比如可以将root换administrator、admin等。
guest account = nobody
用来设置guest用户名。
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
用来设置服务器和客户端之间会话的Socket选项,可以优化传输速度
load printers = yes/no
设置是否在启动Samba时就共享打印机。
【共享参数】
comment = 任意字符串
comment是对该共享的描述,可以是任意字符串。
browseable = yes/no
browseable用来指定该共享是否可以浏览。
path = 共享目录路径
path用来指定共享目录的路径。
writable = yes/no
用来指定该共享路径是否可写
invalid users = 禁止访问该共享的用户
invalid users用来指定不允许访问该共享资源的用户。
例如:invalid users = root,@bob(多个用户或者组中间用逗号隔开。)
public = yes/no
用来指定该共享是否允许guest账户访问。
guest ok = yes/no
用来指定该共享是否允许guest账户访问。
配置共享资源
samba的配置文件,全局配置参数是针对整体的资源共享设置,生效于每一个独立的共享资源。
区域配置参数可以设置单独的共享资源,仅仅对该资源有效。
#修改smb.conf如下,添加以下参数
[chaoge]
comment = This is test configure
path = /home/chaoge
public = no
writable = yes
guest ok = yes
pdbedit命令
pdbedit是samba的用户管理命令
pdbedit -a username:新建Samba账户。
pdbedit -r username:修改Samba账户。
pdbedit -x username:删除Samba账户。
pdbedit -u, --user=USER use username
pdbedit -L:列出Samba用户列表,读取passdb.tdb数据库文件。
pdbedit -Lv:列出Samba用户列表详细信息。
pdbedit -c “[D]” -u username:暂停该Samba用户账号。
pdbedit -c “[]” -u username:恢复该Samba用户账号。