SAMBA
程序员文章站
2022-04-24 19:14:52
SAMBA介绍 SAMBA配置 SAMBA的相关包 SAMBA服务器配置 管理SAMBA用户 配置目录共享 基本特定用户和组的共享 SMB客户端访问 挂载CIFS文件系统 实现SMB共享 多用户SMB挂载 实现图形化管理 相关SELinux 配置 ......
SAMBA介绍
SMB(Server Message Block)服务器消息块,IBM 发布,最早是DOS网络文件共享,也称为SAMBA,SAMBA使用的是NetBIOS通讯协议。 NetBIOS(Network Basic Input/Output System) 网络的基本输入输出系统,它定义了一种软件接口以及在应用程序和连接介质之间提供通信接口的标准方法,作用是为局域网提供网络以及其他特殊功能。 目前使用NetBIOS协议来获得局域网中计算机的名称来解析成IP地址实现数据的通信。 SAMBA通过NetBIOS协议来获取对方主机的NetBIOS name进而来定位该主机所在位置,然后根据对方的主机赋予的权限来存取可用的资源。 实际中SAMBA是通过两个服务来控制这两个步骤的,即nmb和smb两个服务。 nmb是用来管理工作组合NetBIOS name解析,主要是通过UDP的137和138两个端口来负责名称解析任务。 smb主要用来管理SAMBA主机所分享的目录、文件或打印机等,主要使用TCP协议的139和445两个端口进行数据的传输。 Cifs(common internet file system),微软基于SMB 发布,最简单的实现就是window的网上邻居 SAMBA: 1991 年Andrew Tridgell, 实现windows 和UNIX 相通 SAMBA 的功能: 共享文件和打印,实现在线编辑 实现登录SAMBA 用户的身份认证 可以进行NetBIOS 名称解析 外围设备共享 计算机网络管理模式: 工作组WORKGROUP:计算机对等关系,帐号信息各自管理 域DOMAIN:C/S 结构,帐号信息集中管理,DC,AD SAMBA的相关包: Samba 提供smb服务 Samba-client 客户端软件 samba-common 通用软件 cifs-utils smb客户端工具 samba-winbind 和AD相关 相关服务进程: smbd 提供smbd(cifs)服务 TCP:139,445 nmbd NetBIOS 名称解析 UDP:137,138 主配置文件: /etc/samba/smb.conf 帮助参看: man smb.conf 语法检查: testparm [-v] [/etc/samba/smb.conf] 客户端工具: smbclient mount.cifs
SAMBA配置
SAMBA的相关包
Samba 提供smb服务 Samba-client 客户端软件 samba-common 通用软件 cifs-utils smb客户端工具 samba-winbind 和AD相关
SAMBA服务器配置
主配置文件: /etc/samba/smb.conf 帮助参看: man smb.conf smb.conf 继承了.ini文件的格式,用[ ]分成不同的部分。 全局设置: [global] 服务器通用或全局设置的部分 特定共享设置: [homes] 用户的家目录共享 comment = Home Directories 描述信息 browseable = no 用户的家目录是否允许访问,这里通常设置为no writable = yes 是否允许写入内容 valid users = %S valid users = MYDOMAIN\%S [printers] 定义打印机资源和服务 [sharename] 自定义的共享目录配置 paht=/PATH/TO/SHARE_DIRECTORY 共享内容路径 comment=Comment String 描述信息 guest ok ={yes|no} 是否允许访客访问 public = {yes|no} 是否公开,与guest ok类似 writable = {yes|no} 是否可写 read only = {yes|no} 是否只读 write list = +group_name 用户指明可写的用户列表,这里的+表示加组名,表示组里面的用户可以写 # 和; 以此开头的语句为注释,大小写不敏感 宏定义: %m 客户端主机的NetBIOS名 %M 客户端主机的FQDN %H 当前用户家目录路径 %U 当前用户用户名 %g 当前用户所属组 %h samba 服务器的主机名 %L samba 服务器的NetBIOS名 %I 客户端主机的IP %T 当前日期和时间 %S 可登录的用户名 全局内的配置: workgroup 指定工作组名称 server string 主机注释信息 netbios name 指定NetBIOS名 名 interfaces 指定服务侦听接口和IP hosts allow 可用“ “,” ,空格,或tab 分隔,默认允许所有主机访问 , 也可在每个共享独立配置,如在[global] 设置,将应用并覆盖所有共享设置 IPv4 network/prefix: 172.25.0.0/24 IPv4 前缀: 172.25.0. IPv4 network/netmask: 172.25.0.0/255.255.255.0 主机名: desktop.example.com 以example.com后缀的主机名: .example.com 示例: hosts allow = 172.25. hosts allow = 172.25. .example.com hosts deny 拒绝指定主机访问 config file=/etc/samba/conf.d/%U 用户独立的配置文件 Log file=/var/log/samba/log.%m 不同客户机采用不同 日志 max log size=50 日志文件达到50K ,将轮循rotate, 单位KB passdb backend = tdbsam 密码数据库格式 Security 三种认证方式: share : 匿名(CentOS7 不再支持) user : samba用户(采有linux 用户,samba 的独立口令) domain: 使用DC(DOMAIN CONTROLLER) 认证 实现samba 用户: 包:samba-common-tools 工具:smbpasswd pdbedit samba 用户须是Linux 用户,建议使用/sbin/nologin 语法检查: testparm testparm - check an smb.conf configuration file for internal correctness testparm [OPTION...] <config-file> [host-name] [host-ip] -s, --suppress-prompt 禁止输入提示 -v, --verbose 同时显示默认选项 -l, --skip-logic-checks 跳过全局检查 --show-all-parameters 显示参数类型和可能值 --parameter-name=STRING 将testparm限制为命名参数 --section-name=STRING 将testparm限制为命名节 --usage 显示简短的有用消息 -d, --debuglevel=DEBUGLEVEL 设置调试水平 --option=name=value 从命令行设置smb.conf选项
管理SAMBA用户
前提: samab用户必须是系统中已经存在的用户 添加samba 用户 smbpasswd -a <user> pdbedit -a -u <user> 修改用户密码 smbpasswd <user> 删除用户和密码 : smbpasswd –x <user> pdbedit –x –u <user> 查看samba 用户列表 : /var/lib/samba/private/passdb.tdb pdbedit –L –v 查看samba 服务器状态 smbstatus
配置目录共享
每个共享目录应该有独立的[ ] 部分 [共享名称] 远程网络看到的共享名称 comment 注释信息 path 所共享的目录路径 public 能否被guest 访问的共享,默认no ,和guest ok 类似 browsable 是否允许所有用户浏览此共享, 默认为yes,no 为隐藏 writable=yes 可以被所有用户读写,默认为no read only=no 和writable=yes 等价 如与以上设置冲突,放在后面的设置生效,默认只读 write list 三种形式: 用户,@ 组名,+ 组名, 用,分隔 如writable=no ,列表中用户或组可读写,不在列表中用户只读 valid users 特定用户才能访问该共享,如为空,将允许所有用户,用户名之间用空格分隔
基本特定用户和组的共享
vim /etc/samba/smb.conf [share] path = /app/dir valid users=wang,@admins writeable = no browseable = no
SMB客户端访问
UNC路径: Universal Naming Convention, 通用命名规范 格式:\\sambaserver\sharename 终端下使用smbclient 登录服务器 smbclient -L instructor.example.com smbclient -L instructor.example.com -U wang > cd directory > get file1 > put file2 smbclient //instructor.example.com/shared -U wang 可以使用-U 选项来指定用户% 密码,或通过设置和导出USER和PASSWD环境变量来指定
挂载CIFS文件系统
手动挂载 mount -t cifs -o user=wang,password=magedu //server//shared /mnt/smb 开机自动挂载 cat /etc/fstab 可以用文件代替用户名和密码的输入 //server/homes /mnt cifs credentials=/etc/smb.txt 0 0 cat /etc/smb.txt username=wang password=password chmod 600 /etc/smb.txt
实现SMB共享
一、在samba 服务器上安装samba包 yum -y install samba 二、创建samba 用户和组 groupadd -r admins useradd -s /sbin/nologin -G admins wang smbpasswd -a wang useradd -s /sbin/nologin mage smbpasswd -a mage 三、创建samba 共享目录, 并设置SElinux mkdir /testdir/smbshare chgrp admins /testdir/smbshare chmod 2775 /testdir/smbshare semanage fcontext -a -t samba_share_t '/testdir/smbshare(/.*)?' restorecon -vvFR /testdir/smbshare 四、samba 服务器配置 vim /etc/samba/smb.conf security = user passdb backend = tdbsam [share] path = /testdir/smbshare write list = @admins systemctl start smb nmb systemctl enable smb nmb firewall-cmd --permanent --add-service=samba firewall-cmd --reload 五、samba 客户端访问 安装包 yum -y install cifs-utils 用wang 用户挂载smb 共享并访问 mkdir /mnt/wang mount -o username=wang //smbserver/share /mnt/wang echo "Hello wang" >/mnt/wang/wangfile.txt 用mage 用户 挂载smb 共享并访问 mkdir /mnt/mage mount -o username=mage //smbserver/share /mnt/mage touch /mnt/mage/magefile.txt
多用户SMB挂载
SAMBA 共享默认只支持同时用一个用户挂载SMB 共享 CentOS7 中可启用多用户挂载功能 客户端挂载samba 共享目录后,在客户端登录的不同用户访问同一个samba的挂载点,可获得不同权限。 一、samba 服务器配置 yum install samba mkdir /multiuser vim /etc/samba/smb.conf [smbshare] path=/multiuser writable=no write list= @admins 二、samba 服务器创建samba 用户 useradd –s /sbin/nologin smbuser smbpasswd –s smbuser useradd –s /sbin/nologin –G admins wang smbpasswd –a wang useradd –s /sbin/nologin mage smbpasswd –a mage 三、samba 服务器设置目录权限和SELinux对wang,admins 组分配目录读写权限 chmod 777 /testdir/multiuser 或者 setfacl –m u:wang:rwx /testdir/multiuser setfacl –m g:admins:rwx /testdir/multiuser 设置SELinux 标签: semanage fcontext -a -t samba_share_t '/testdir/multiuser (/.*)?' restorecon /testdir/multiuser 四、samba 客户端启用多用户挂载 yum -y install cifs-utils mkdir /mnt/smb echo 'username=smbuser' >/etc/multiuser echo 'password=centos' >>/etc/multiuser chmod 600 /etc/multiuser 以多用户方式挂载: vim /etc/fstab //smbserver/smbshare /mnt/smb cifs credentials=/etc/multiuser,multiuser,sec=ntlmssp 0 0 mount -a 五、在samba 客户端用实现多用户访问 useradd wang;useradd mage 用root 访问 ls /mnt/smb; touch /mnt/smb/root.txt 用wang 访问 ls /mnt/smb; touch /mnt/smb/wang.txt cifscreds add –u wang smbserver touch /mnt/smb/wang.txt 用mage 访问 cifscreds add –u mage smbserver ls /mnt/smb touch /mnt/smb/mage.txt
实现图形化管理
一、在CentOS6( 第二张光盘) 上安装包 yum install samba-swat 二 、配置swat 服务 vim /etc/xinetd.d/swat disable = no port = 901 only_from = 127.0.0.1 此行改成172.16.0.0/16 service xinetd restart 三 、浏览器访问管理 http://127.0.0.1:901 以root 用户登录 注意:commit changes 后会自动重新加载配置,且自动将/etc/samba/smb.conf
相关SELinux 配置
SMB 共享目录应设为samba_share_t 安全上下文 semanage fcontext -a -t samba_share_t '/sharedpath(/.*)?' restorecon -vvFR /sharedpath SMB设共享目录安全上下文也可设 public_content_t ( 只读)和public_content_rw_t ( 读写). 要支持读写,SElinux 布尔值smbd_anon_write 必须启用 如用SMB 网络共享samba 服务器上的用户家目录,需在samba 服务器上启用布尔值samba_enable_home_dirs 如需挂载远程SMB 目录做为本地用户家目录,需在SMB 客户机上启用布尔值use_samba_home_dirs
上一篇: 包包都惊呆了!
下一篇: 如何做精准裂变,提升付费转化率?