is:cos:centos服务搭建-02-samba文件服务

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
is:cos:centos服务搭建-02-samba文件服务 [2025/02/17 04:02] – 移除 - 外部编辑 (未知日期) 127.0.0.1is:cos:centos服务搭建-02-samba文件服务 [2025/02/17 04:02] (当前版本) – ↷ 页面is:centos服务搭建-02-samba文件服务被移动至is:cos:centos服务搭建-02-samba文件服务 A.L
行 1: 行 1:
 +~~IS~~
  
 +==== 安装并启动Samba ====
 +  * 安装samba
 +  <code>
 +  yum -y install samba
 +  systemctl start smb.service
 +  </code>
 +  * 关闭安全防护
 +  <code>
 +  vim /etc/sysconfig/selinux
 +  SELINUX=enforcing 改为 SELINUX=disabled  # 关闭selinux
 +  systemctl disable firewalld.service  # 关闭防火墙
 +  shutdown -r now  # 重启使生效
 +  </code>
 +  * 注:
 +    * 防火墙不关闭,所有节点无法进行挂载。也可以采用:防火墙放行TCP端口:139、445以及UDP端口:137、138。
 +    * selinux不关闭,无法查看共享文件夹下的文件。
 +
 +==== 配置文件共享、用户、samba ====
 +  * 创建共享目录:
 +  <code>mkdir /share-jyc</code>
 +  * 创建用户组和用户:
 +  <code>groupadd samba-jyc  # samba-jyc组
 +  useradd -g samba-jyc user123  # samba-jyc 组下的用户 user123
 +  passwd user123  # user123 的密码设置,两次</code>
 +  * 添加samba文件的共享用户
 +    * smbpasswd -a user123  # 系统账户以外添加samba账户,才可以访问共享目录  // 参数说明: -a: 添加 -x: 删除 -d: 禁用 -e: 启用
 +    * 对于共享目录需要使用chown 添加文件夹的用户权限,比如: 
 +  <code>chown user123:samba-jyc share-jyc # 给samba-jyc组的user123用户添加权限到share-jyc文件夹</code>
 +  * 修改samba配置
 +  <code>vi /etc/samba/smb.conf</code>
 +  * 内容修改为:
 +  <code>
 +  [global]
 +           workgroup = JYCSAMBA
 +           security = user  # smb4.0开始使用
 +           passdb backend = tdbsam
 +           printing = cups
 +           printcap name = cups
 +           load printers = yes
 +           cups options = raw
 +  [homes]  # 自定义,windows用户看到的文件夹名称
 +           comment = JYC Server-databackup share  # 自定义,windows用户看到的文件夹描述
 +           path = /home/sharejyc
 +           valid users = %S, %D%w%S
 +           browseable = yes
 +           read only = No
 +           inherit acls = Yes
 +           writable = yes
 +           create mask = 0777
 +           directory mask = 0777
 +           force directory mode = 0777 # 未使用
 +           force create mode = 0777 # 未使用
 +  </code>
 +
 +===== smb.conf说明 =====
 +  * public = no # 是否允许guest访问
 +  * admin users = admin # 指定管理用户
 +  * valid users = @admin # 可访问的用户组(用户组前+@)、用户,每个名称分隔用“,”
 +  * secutity用来指定安全模式,user模式是需要账号密码来登录共享的
 +  * hosts allow用来指定开放的ip段,当前指定的是对192.168下的所有ip都开放
 +  * 文件权限设置
 +  <code>
 +   create mask = 0777
 +   directory mask = 0777
 +   force directory mode = 0777
 +   force create mode = 0777
 +  </code>
 +
 +  <code>
 +  [global]
 +      workgroup = WORKGROUP         //这是工作组,可以添加自己的工作组,我用的是默认的WORKGROUP
 +      security = user                
 +      map to guest = Bad User        //这是samba 4.0版本以后必须设置为user用户,设置为share  然后用testparm检测smb.conf 会报错的 服务也启动不起来
 +      log file = /var/log/samba/log.%m    //log日志及路径  里面记载的用户的登录操作日志
 +      max log size = 50           //日志文件存储的文件最大的大小
 +      unix charset = UTF-8          //在Linux服务器上面的显示编码 如果不知道自己的编码 可以查看下自己的系统编码
 +      display charset = UTF-8        //自己服务器上面的显示编码  一般都是和unix charset查到的一样
 +      guest account = nobody         //访问的用户范围
 +      dos charset = cp936          //Windows端显示的编码
 +      create mask = 777           //赋予权限
 +      directory mask = 777         //赋予权限
 +  [resource]               //这个是Windows上显示的文件夹的名字(共享文件夹)
 +      comment = All Printers       //这个是共享文件夹的说明
 +      path = /home/resource        //共享文件夹的路径
 +      browseable = yes           //是否让所有的使用者都看到这个项目,隐藏目录,但知道目录还是可以访问
 +      guest ok = yes            //是否让来宾用户访问
 +      writable = yes            //是否为可以写入
 +      read only = no            //是否设置为只读
 +  </code>
 +
 +==== 用testparm检测配置文件的正确性,有可能会出现下面的错误 ====
 +  <code> rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) </code>
 +  * 解决方法:编辑配置文件 vim /etc/security/limits.conf 在里面加入一行配置
 +  <code>root -nofile 16384</code>
 +  * root指root用户。如果想都所有用户生效,把root替换为“*”即可!我是设置的“*”。
 +
 +==== 启动samba服务并设置自启动 ====
 +  <code>
 +  sudo systemctl start smb
 +  sudo systemctl enable smb.service  # 设置开机启动
 +  sudo systemctl status smb
 +  testparm
 +  </code>
 +
 +==== 防火墙允许samba ====
 +  * 首先启动被关闭的防火墙:systemctl start firewalld.service
 +  <code>
 +  firewall-cmd --zone=public --add-port=139/tcp --permanent
 +  firewall-cmd --zone=public --add-port=445/tcp --permanent
 +  firewall-cmd --zone=public --add-port=137/udp --permanent  
 +  firewall-cmd --zone=public --add-port=138/udp --permanent  
 +  firewall-cmd --permanent --zone=public --add-service=samba  # samba服务允许通过防火墙
 +  firewall-cmd --reload
 +  systemctl restart firewalld.service
 +  </code>
 +
 +==== SELinux允许samba ====
 +  <code>
 +  getsebool -a | grep samba  # 查看samba状态
 +  setsebool -P samba_enable_home_dirs=1  # 赋予权限
 +  chcon -t samba_share_t /data/share/
 +  </code>
 +
 +==== (选用内容)客户端进行文件挂载 ====
 +  <code>
 +  mkdir /share
 +  mount -t cifs //文件服务器ip/public /share -o "username=share,password=xxx"
 +  </code>
 +
 +==== (选用内容)Windows下更换帐户登陆samba ====
 +  <code>
 +  net use \\192.168.1.102\IPC$ /delete  # 删除上一次建立的连接
 +  </code>