Top目录

  • 安装
  • 端口与服务管理
  • 其他常用命令
  • 配置
    • 全局配置
    • 共享库配置
    • 用户名密码认证库配置
    • Samba 登录用户配置
    • 防火墙配置
      • 设定安全的上下文关系
      • 本地系统设置访问读写权限
    • Pdbedit 用法
    • Smbpasswd 用法
    • 其他
  • Windows 下相关转发
    • 查看网络连接 — 可删除缓存,用于切换登录用户
    • Windows 设置 Smb 端口转发
  • 访问 Samba 服务器
    • 服务器 — Linux
    • 服务器 — Windows
    • Apple — Mac
  • Linux 挂载 samba 地址
  • 参考网址
  • 自动化配置脚本

安装

 # 安装samba服务器yum install -y samba# samba 服务器地址 smb://user@192.168.0.10# 查看安装包 rpm -qa |grep samba

端口与服务管理

# 启动samba进程systemctl start smb# 查看运行状态systemctl status smb  # 查看端口netstat -antulp |grep smb# 设置开机自启动systemctl enable smbchkconfig smb on# samba的主要配置文件/etc/samba/smb.conf    # Samba服务使用的端口和协议:1 端口137 (UDP) - NetBIOS名称服务; 美国全国广播公司2 端口138 (UDP) - NetBIOS数据报服务3 端口139 (TCP) - 共享文件和打印;它基于smbd(SMB) servermessageblock协议,主要用于局域网,文件共享协议) 。4 端口389 (TCP) - LDAP (活动目录模式)5 端口445 (TCP) - NetBIOS服务在windos 2000或更高版本上使用此端口。 (CIFS、公共互联网文件系统,它将SMB协议扩展到internet,然后实现internet文件共享。6 端口901 (TCP) SWAT,用于web管理Sambawindows系统之间的文件共享协议: netbiosextenduserinterface (netbeui )协议和IPX/SPX协议NetBEUI协议是一种短而精悍、通信效率高的广播型协议,安装后无需设置,特别适用于“网络邻居”中的数据传输。

其他常用命令

# 查看 samba 服务状态及其客户端访问情况smbstatus/usr/bin/smbclient          # 客户端功能 

点我回顶部配置全局配置

[global]        workgroup = SAMBA        security = user        passdb backend = tdbsam                config file = /etc/samba/%U.smb.conf  # 使得不同的登录用户只加载其自身的配置,%U 代表用户名        printing = cups         printcap name = cups        load printers = yes        cups options = raw        interfaces = ens9f3 192.168.0.200/24    # 访问接口 和 IP          hosts allow = 192.168.0.                # 客户端 白名单           log file = /var/log/samba/log.%m        # 日志文件配置         max log size = 50000                    smb ports = 1234                        # 自定义服务端口# #[homes]#       comment = Home Directories#       valid users = %S, %D%w%S#       browseable = No#       read only = No#       inherit acls = Yes[printers]        comment = All Printers        path = /var/tmp        printable = Yes        create mask = 0600        browseable = No[print$]        comment = Printer Drivers        path = /var/lib/samba/drivers        write list = @printadmin root        force group = @printadmin        create mask = 0664        directory mask = 0775

共享库配置

[d200_temp]       comment = please do not modify it all will       path= /data/shared/d200_d       writable = yes        public = yes

点我回顶部用户名密码认证库配置

[d200_temp]       comment = please do not modify it all will       path= /data/shared/d200_d       public = no       valid users = sit,@ydd       printable = no       write list = sit,@ydd

Samba 登录用户配置

sit_home_Dir="/raid/shared/d200_d/temp"sit_pwd="h3c@123"userdel -r sit &> /dev/nullgroupdel ydd &> /dev/nullgroupadd ydduseradd sit -d /raid/shared/d200_d/temp -s /sbin/nologin -p ${sit_pwd}pdbedit -x sitecho "sit pwd : ${sit_pwd}"pdbedit -a -u situsermod -a -G ydd  sit# 添加用户smbpasswd -a # 或pdbedit -a -u # 重置密码smbpasswd # 删除用户 pdbedit -x 

点我回顶部防火墙配置

# 开启防火墙systemctl start firewalld.service  # 放行 samba  firewall-cmd --add-service samba --permanent firewall-cmd --reload                    # 重新加载防火墙配置 firewall-cmd --list-all | grep samba -q  # 查询防火墙信息 # iptables 规则配置 iptables -I RH-Firewall-1-INPUT 5 -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPTiptables -I RH-Firewall-1-INPUT 5 -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPTiptables -I RH-Firewall-1-INPUT 5 -p udp -m udp --dport 137 -j ACCEPTiptables -I RH-Firewall-1-INPUT 5 -p udp -m udp --dport 138-j ACCEPTiptables-saveservice iptables  restart

设定安全的上下文关系

# 将 samba 目录共享给其他用户,chcon -t samba_share_t    # 修改对象的安全上下文 # 第二种方法, semanage fcontext -a -t samba_share_t restorecon -FRv /home/kevin  # 刷新上下文,使其立即生效 #如果samba服务器共享目录给多个域,则需要:setsebool -P allow_smbd_anon_write=1//If you are setting up this machine as a Samba server and wish to share the home directoriessamba服务器要共享家目录时:setsebool -P samba_enable_home_dirs 1//If you want to use a remote Samba server for the home directories on this machine如果你需在本机上使用远程samba服务器的家目录setsebool -P use_samba_home_dirs 1//You can disable SELinux protection for the samba daemon by executingsetsebool -P samba_domain_controller 1 # 可读可写setsebool -P samba_export_all_rw 1# 只读setsebool -P samba_export_all_ro 1# 关闭selinux关于samba的进程守护的保护setsebool -P smbd_disable_trans 1    # 0是关闭 1是开启# 查询SElinux策略内各项 samba 规则的布尔值 [root@localhost ~]# getsebool -a   | grep smb  smbd_anon_write --> off[root@localhost ~]# getsebool -a   | grep samba samba_create_home_dirs --> offsamba_domain_controller --> offsamba_enable_home_dirs --> offsamba_export_all_ro --> offsamba_export_all_rw --> offsamba_load_libgfapi --> offsamba_portmapper --> offsamba_run_unconfined --> offsamba_share_fusefs --> offsamba_share_nfs --> offsanlock_use_samba --> offtmpreaper_use_samba --> offuse_samba_home_dirs --> offvirt_use_samba --> off

点我回顶部本地系统设置访问读写权限

# 设置文件访问权限 setfacl -R -m g:sit:rwx     # 设置用户组权限 setfacl -R -m u:sit:rwx     # 设置用户权限 # 获取文件权限信息 getfacl  

Pdbedit 用法

# 命令用于管理Samba服务的帐户信息数据库pdbedit -a username    # 新建Samba账户pdbedit -x username    # 删除Samba账户pdbedit -r -u user     # 修改samba用户信息pdbedit -L             # 列出Samba用户列表,读取passdb.tdb数据库文件。pdbedit -Lv            # 列出Samba用户列表详细信息。pdbedit -c “[D]” -u username    # 暂停该Samba用户账号。pdbedit -c “[]” -u username     # 恢复该Samba用户账号。

Smbpasswd 用法

smbpasswd -a user   # 添加一个samba用户smbpasswd -d user   # 禁用一个samba用户smbpasswd -e user   # 恢复一个samba用户smbpasswd -x user   # 删除一个samba用户

点我回顶部其他

# 重新加载配置smbcontrol all reload-config# 允许用户执行共享上的所有文件, acl allow execute always = yes# 添加网络映射到指定驱动器号net use H: \\server\users\demo\ /persistent:yes# 用户管理https://wiki.samba.org/index.php/User_and_Group_management

Windows 下相关转发查看网络连接 — 可删除缓存,用于切换登录用户

# 显示当前网络连接列表net use # 删除一个网络连接配置 net use 远程连接名称 /del# 一次性全部删除net use * /del# 若以上方法不管用,可进入控制台删除网络凭证

Windows 设置 Smb 端口转发

# 使用管理员权限# 查看端口转发netsh interface portproxy show all# 配置端口转发netsh interface portproxy add v4tov4 listenport=445 listenaddress=127.0.0.1 connectport=samba服务器地址 connectaddress=samba端口# 清除所有端口转发规则netsh interface portproxy reset

点我回顶部访问 Samba 服务器服务器 — Linux

1、安装samba clientsudo apt-get install smbclientyum install samba-client2、获取指定 Samba 服务器的共享列表smbclient -L 192.168.1.1 -U smbclient -L 192.168.1.1 -U  --workgroup=SAMBA3、连接共享目录 -- 交互式smbclient 192.168.1.1/ -U username4、连接共享目录 --- 一次性连接共享目录进行指定操作后退出 smbclient -U sit -c 'ls'  //172.16.89.129/

服务器 — Windows

# 1、快捷键 `Win + E` 打开文件资源管理器# 2、在地址栏中输入 `\\`若需要验证则再输入用户名和密码登录

Apple — Mac

# 1、打开访达# 2、快捷键 `Cmd + K` 连接文件服务器 输入samba 服务器 IP ,若需要验证则再输入用户名和密码登录

mac如何访问windows共享文件夹— samba 服务器

点我回顶部Linux 挂载 samba 地址

# 1、安装 apt install cifs-utils# or yum install cifs-utils# 2、在本地创建一个挂载点目录sudo mkdir /home/user/shareFiles# 3、挂载 sudo mount -t cifs -o username=xxx,password=xxx ///  mount -t cifs //192.168.1.65/linuxsamba /database -o username=smbuser,password=123456,rw,file_mode=0777,dir_mode=0777,setuid=509,setgid=101# 或者mount -t cifs //192.168.1.65/linuxsamba /database -o username=smbuser,password=123456,rw

参考网址

Linux下安装部署Samba共享盘的操作手册

腾讯云—Linux/centos上如何配置管理samba服务器

Linux/centos上如何配置管理samba服务器?

Samba服务器的配置与管理

samba客户端的使用与服务端的搭建

Linux系统工程师3.5网络文件系统

smb协议详解和samba服务的配置

使用POSIX ACL设置共享

将Samba设置为独立服务器

smb.conf— man手册

Samba命令帮助文档

帮助文档—–002

点我回顶部自动化配置脚本

#