samba

我们所了解过的FTP文件传输,的确可以让不同主机之间进行文件传输,此方式特点是传输文件,用户想要在客户端直接修改服务器的数据,还是较为麻烦。
既然如此,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服务
```shell安装samba
[root@chaogelinux ftpdir]# yum install samba -y
默认主配置文件
[root@chaogelinux ftpdir]# cat /etc/samba/smb.conf -n
<a name="wOHNf"></a>## Samba配置文件核心参数smb的配置文件如下```shell[root@chaogelinux ftpdir]# ls /etc/samba/lmhosts smb.conf smb.conf.example
smb.sonf.example 配置样例文件,里面有关于配置Samba服务器样例
smb的配置文件,主要分为全局配置和共享配置
- [global] 全局
- 共享
- [home]
- [printers]
【全局配置】
workgroup = MYGROUPSamba服务器加入的工作组名,一个局域网内,必须有相同的工作组名。server string = Samba Server Version %vSamba服务器注释,可以不选,%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/nobrowseable用来指定该共享是否可以浏览。path = 共享目录路径path用来指定共享目录的路径。writable = yes/no用来指定该共享路径是否可写invalid users = 禁止访问该共享的用户invalid users用来指定不允许访问该共享资源的用户。例如:invalid users = root,@bob(多个用户或者组中间用逗号隔开。)public = yes/no用来指定该共享是否允许guest账户访问。guest ok = yes/no用来指定该共享是否允许guest账户访问。
配置共享资源
samba的配置文件,全局配置参数是针对整体的资源共享设置,生效于每一个独立的共享资源。
区域配置参数可以设置单独的共享资源,仅仅对该资源有效。
# 1. 修改配置文件,添加一个局部的共享区域vim /etc/samba/smb.conf#修改smb.conf如下,添加以下参数[chaoge]comment = This is test configurepath = /home/chaogepublic = nowritable = yesguest ok = yes# 2. 使用pdbedit命令,创建samba服务抓u你用的用户密码信息# 3. 创建samba的用户,必须保证这个用户在Linux系统中存在# 3. 创建一个samba用户,命令如下
pdbedit命令
pdbedit是samba的用户管理命令
语法
pdbedit -a username:新建Samba账户。pdbedit -r username:修改Samba账户。pdbedit -x username:删除Samba账户。pdbedit -u, --user=USER use usernamepdbedit -L:列出Samba用户列表,读取passdb.tdb数据库文件。pdbedit -Lv:列出Samba用户列表详细信息。pdbedit -c “[D]” -u username:暂停该Samba用户账号。pdbedit -c “[]” -u username:恢复该Samba用户账号。
创建用于访问samba共享资源的账户信息
注意samba创建的用户数据库必须在当前系统中存在
[root@chaogelinux samba]# id chaogeuid=2002(chaoge) gid=2002(chaoge) 组=2002(chaoge)[root@chaogelinux samba]# pdbedit -a -u chaogenew password:retype new password:Unix username: chaogeNT username:Account Flags: [U ]User SID: S-1-5-21-4265721185-3061822781-1370749960-1000Primary Group SID: S-1-5-21-4265721185-3061822781-1370749960-513Full Name:Home Directory: \\chaogelinux\chaogeHomeDir Drive:Logon Script:Profile Path: \\chaogelinux\chaoge\profileDomain: CHAOGELINUXAccount desc:Workstations:Munged dial:Logon time: 0Logoff time: 三, 06 2月 2036 23:06:39 CSTKickoff time: 三, 06 2月 2036 23:06:39 CSTPassword last set: 三, 08 1月 2020 14:35:13 CSTPassword can change: 三, 08 1月 2020 14:35:13 CSTPassword must change: neverLast bad password : 0Bad password count : 0Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF[root@chaogelinux samba]#
此时检查用于共享的资源目录,注意权限
[root@chaogelinux samba]# ll /home/chaoge/总用量 8-rw-rw-r-- 1 chaoge chaoge 31 11月 21 09:57 fine.txtdrwxr-xr-x 2 chaoge chaoge 4096 1月 8 09:24 超哥到此一游
重启smb服务,注意防火墙,是否允许smb的端口
systemctl restart smb#检查端口运行情况[root@chaogelinux ~]# netstat -tunlp|grep smbtcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 2545/smbdtcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 2545/smbdtcp6 0 0 :::445 :::* LISTEN 2545/smbdtcp6 0 0 :::139 :::* LISTEN 2545/smbdiptables -L# 看到下边三个信息,说明防火墙没有定义规则Chain INPUT (policy ACCEPT)target prot opt source destinationChain FORWARD (policy ACCEPT)target prot opt source destinationChain OUTPUT (policy ACCEPT)target prot opt source destinationiptables -Fsystemctl stop firewalld
关闭防火墙
[root@localhost ~]# iptables -LChain INPUT (policy ACCEPT)target prot opt source destinationChain FORWARD (policy ACCEPT)target prot opt source destinationChain OUTPUT (policy ACCEPT)target prot opt source destination[root@localhost ~]# iptables -F[root@localhost ~]# systemctl stop firewalld
【此时进行远程连接】
可以自由选择windows或是mac,进行远程连接
mac中点击【连接服务器】
win中选择【运行】【填入smb服务器地址】
第一步:
第二步:
第三步:
输入smb用户的账户密码
第四步:
第五步:
此时可以访问共享文件夹了/home/chaoge

