samba

image.png
我们所了解过的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

  1. <a name="wOHNf"></a>
  2. ## Samba配置文件核心参数
  3. smb的配置文件如下
  4. ```shell
  5. [root@chaogelinux ftpdir]# ls /etc/samba/
  6. lmhosts smb.conf smb.conf.example

smb.sonf.example 配置样例文件,里面有关于配置Samba服务器样例
smb的配置文件,主要分为全局配置和共享配置

  • [global] 全局
  • 共享
    • [home]
    • [printers]

【全局配置】

  1. workgroup = MYGROUP
  2. Samba服务器加入的工作组名,一个局域网内,必须有相同的工作组名。
  3. server string = Samba Server Version %v
  4. Samba服务器注释,可以不选,%v代表显示Samba版本号
  5. netbios name = samba
  6. 主机NetBIOS
  7. netbios name = samba
  8. 主机NetBIOS
  9. interfaces = lo eth0
  10. 设置Samba服务器端监听网卡,可以写网卡名称或者IP地址
  11. hosts allow/deny = 10.10.10.1
  12. 允许连接到Samba server客户端IP,多个参数用空格分开。可以用一个IP表示,也可以用一个网段表示。
  13. max connections = 0
  14. 用来指定连接Samba server服务器最大连接数如果操作则连接请求被拒绝。0表示不限制。
  15. deadtime = 0
  16. 来设置断掉一个没有任何文件的链接时间。单位十分钟,0代表Samba server不自动断开任何连接
  17. time server = yes/no
  18. 用来设置让nmdb成为Windows客户端的时间服务器
  19. log file = /var/log/samba/%m.log
  20. 设置Samba server日志文件存储位置和日志名称。文件后面加一个%m(主机名),每个主机都会有一个主机名.log日志文件
  21. max log size = 50
  22. 限制每个日志文件的最大容量为50KB0代表不限制
  23. Security = user
  24. 设置客户端访问Samba服务器的验证方式,Samba4版本已经不使用shareserver方式,这里不介绍
  25. 1) user:Samba用户名和密码登录
  26. 2) domain:添加Samba服务器到N域,由NT与控制起来进行身份验证。域安全级别,使用主域控制器(PDC)来完成认证
  27. passdb backend = tdbsam
  28. 后台管理用户密码方式
  29. 1smbpasswd:该方式是使用smb自己的工具smbpasswd来给系统用户
  30. 2tdbsam:该方式则是使用一个数据库文件来建立用户数据库。
  31. 3ldapsam:该方式则是基于LDAP的账户管理方式来验证用户。
  32. smb passwd file = /etc/samba/smbpasswd
  33. 用来定义samba用户的密码文件。smbpasswd文件如果没有那就要手工新建。
  34. username map = /etc/samba/smbusers
  35. 用来定义用户名映射,比如可以将rootadministratoradmin等。
  36. guest account = nobody
  37. 用来设置guest用户名。
  38. socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
  39. 用来设置服务器和客户端之间会话的Socket选项,可以优化传输速度
  40. load printers = yes/no
  41. 设置是否在启动Samba时就共享打印机。

【共享参数】

  1. comment = 任意字符串
  2. comment是对该共享的描述,可以是任意字符串。
  3. browseable = yes/no
  4. browseable用来指定该共享是否可以浏览。
  5. path = 共享目录路径
  6. path用来指定共享目录的路径。
  7. writable = yes/no
  8. 用来指定该共享路径是否可写
  9. invalid users = 禁止访问该共享的用户
  10. invalid users用来指定不允许访问该共享资源的用户。
  11. 例如:invalid users = root@bob(多个用户或者组中间用逗号隔开。)
  12. public = yes/no
  13. 用来指定该共享是否允许guest账户访问。
  14. guest ok = yes/no
  15. 用来指定该共享是否允许guest账户访问。

配置共享资源

samba的配置文件,全局配置参数是针对整体的资源共享设置,生效于每一个独立的共享资源。
区域配置参数可以设置单独的共享资源,仅仅对该资源有效。

  1. # 1. 修改配置文件,添加一个局部的共享区域
  2. vim /etc/samba/smb.conf
  3. #修改smb.conf如下,添加以下参数
  4. [chaoge]
  5. comment = This is test configure
  6. path = /home/chaoge
  7. public = no
  8. writable = yes
  9. guest ok = yes
  10. # 2. 使用pdbedit命令,创建samba服务抓u你用的用户密码信息
  11. # 3. 创建samba的用户,必须保证这个用户在Linux系统中存在
  12. # 3. 创建一个samba用户,命令如下

pdbedit命令

pdbedit是samba的用户管理命令
语法

  1. pdbedit -a username:新建Samba账户。
  2. pdbedit -r username:修改Samba账户。
  3. pdbedit -x username:删除Samba账户。
  4. pdbedit -u, --user=USER use username
  5. pdbedit -L:列出Samba用户列表,读取passdb.tdb数据库文件。
  6. pdbedit -Lv:列出Samba用户列表详细信息。
  7. pdbedit -c “[D]” -u username:暂停该Samba用户账号。
  8. pdbedit -c “[]” -u username:恢复该Samba用户账号。

创建用于访问samba共享资源的账户信息
注意samba创建的用户数据库必须在当前系统中存在

  1. [root@chaogelinux samba]# id chaoge
  2. uid=2002(chaoge) gid=2002(chaoge) 组=2002(chaoge)
  3. [root@chaogelinux samba]# pdbedit -a -u chaoge
  4. new password:
  5. retype new password:
  6. Unix username: chaoge
  7. NT username:
  8. Account Flags: [U ]
  9. User SID: S-1-5-21-4265721185-3061822781-1370749960-1000
  10. Primary Group SID: S-1-5-21-4265721185-3061822781-1370749960-513
  11. Full Name:
  12. Home Directory: \\chaogelinux\chaoge
  13. HomeDir Drive:
  14. Logon Script:
  15. Profile Path: \\chaogelinux\chaoge\profile
  16. Domain: CHAOGELINUX
  17. Account desc:
  18. Workstations:
  19. Munged dial:
  20. Logon time: 0
  21. Logoff time: 三, 06 2 2036 23:06:39 CST
  22. Kickoff time: 三, 06 2 2036 23:06:39 CST
  23. Password last set: 三, 08 1 2020 14:35:13 CST
  24. Password can change: 三, 08 1 2020 14:35:13 CST
  25. Password must change: never
  26. Last bad password : 0
  27. Bad password count : 0
  28. Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
  29. [root@chaogelinux samba]#

此时检查用于共享的资源目录,注意权限

  1. [root@chaogelinux samba]# ll /home/chaoge/
  2. 总用量 8
  3. -rw-rw-r-- 1 chaoge chaoge 31 11 21 09:57 fine.txt
  4. drwxr-xr-x 2 chaoge chaoge 4096 1 8 09:24 超哥到此一游

重启smb服务,注意防火墙,是否允许smb的端口

  1. systemctl restart smb
  2. #检查端口运行情况
  3. [root@chaogelinux ~]# netstat -tunlp|grep smb
  4. tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 2545/smbd
  5. tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 2545/smbd
  6. tcp6 0 0 :::445 :::* LISTEN 2545/smbd
  7. tcp6 0 0 :::139 :::* LISTEN 2545/smbd
  8. iptables -L
  9. # 看到下边三个信息,说明防火墙没有定义规则
  10. Chain INPUT (policy ACCEPT)
  11. target prot opt source destination
  12. Chain FORWARD (policy ACCEPT)
  13. target prot opt source destination
  14. Chain OUTPUT (policy ACCEPT)
  15. target prot opt source destination
  16. iptables -F
  17. systemctl stop firewalld

关闭防火墙

  1. [root@localhost ~]# iptables -L
  2. Chain INPUT (policy ACCEPT)
  3. target prot opt source destination
  4. Chain FORWARD (policy ACCEPT)
  5. target prot opt source destination
  6. Chain OUTPUT (policy ACCEPT)
  7. target prot opt source destination
  8. [root@localhost ~]# iptables -F
  9. [root@localhost ~]# systemctl stop firewalld

【此时进行远程连接】

可以自由选择windows或是mac,进行远程连接
mac中点击【连接服务器】
win中选择【运行】【填入smb服务器地址】
第一步:
image.png
第二步:
image.png
第三步:
输入smb用户的账户密码
image.png
第四步:
image.png
第五步:
此时可以访问共享文件夹了/home/chaoge
image.png
image.png