CentOS服务搭建-02-samba文件服务

来自DeerGrove Wiki
Administrator讨论 | 贡献2019年9月26日 (四) 23:29的版本 配置文件共享、用户、samba
跳转至: 导航搜索


安装并启动Samba

  1. yum -y install samba
    systemctl start smb.service
  2. 关闭安全防护
    vim /etc/sysconfig/selinux
    SELINUX=enforcing 改为 SELINUX=disabled # 关闭selinux
    systemctl disable firewalld.service # 关闭防火墙
    shutdown -r now # 重启使生效
  3. 注:
    1. 防火墙不关闭,所有节点无法进行挂载。也可以采用:防火墙放行TCP端口:139、445以及UDP端口:137、138。
    2. selinux不关闭,无法查看共享文件夹下的文件。

配置文件共享、用户、samba

  1. 创建共享目录:
    mkdir /share-jyc
  2. 创建用户组和用户:
    groupadd samba-jyc # samba-jyc组
    useradd -g samba-jyc share123 # samba-jyc 组下的用户 share123
    passwd share123 # share123 的密码设置,两次
  3. 添加samba文件共享用户
    smbpasswd -a share123 # 光添加系统账户还不够, 需要把已经存在的系统账户添加到samba中才可以访问共享目录
    smbpasswd的参数说明: -a: 添加 -x: 删除 -d: 禁用 -e: 启用
  4. 修改samba配置
    vi /etc/samba/smb.conf
  5. 内容修改为:
    [global]
    workgroup = JYCSAMBA
    security = user
    passdb backend = tdbsam
    printing = cups
    printcap name = cups
    load printers = yes
    cups options = raw
    [homes]
    comment = JYC Server-databackup share
    path = /home/sharejyc
    valid users = %S, %D%w%S
    browseable = yes
    read only = No
    inherit acls = Yes
    # 2019-09-26 增加
    writable = yes
    create mask = 0777
    directory mask = 0777
    force directory mode = 0777
    force create mode = 0777

smb.conf说明:

  • comment = Shared Directories # 共享文件目录描述
  • path = /storage/shared/ # 共享文件目录
  • public = no # 是否允许guest访问
  • admin users = admin # 指定管理用户
  • valid users = @admin # 可访问的用户组、用户
  • browseable = yes # 是否浏览权限,隐藏目录,但知道目录还是可以访问
  • writable = yes # 是否可写权限
  • secutity用来指定安全模式,user模式是需要账号密码来登录共享的
  • valid users = @用户组,用来指定允许登录的用户组
  • hosts allow用来指定开放的ip段,当前指定的是对192.168下的所有ip都开放
  • 文件权限设置
    1. create mask = 0777
    2. directory mask = 0777
    3. force directory mode = 0777
    4. force create mode = 0777


  • [global]
  1. workgroup = WORKGROUP         //这是工作组,可以添加自己的工作组,我用的是默认的WORKGROUP
  2. security = user               
  3. map to guest = Bad User        //这是samba 4.0版本以后必须设置为user用户,设置为share 然后用testparm检测smb.conf 会报错的 服务也启动不起来
  4. log file = /var/log/samba/log.%m    //log日志及路径 里面记载的用户的登录操作日志
  5. max log size = 50           //日志文件存储的文件最大的大小
  6. unix charset = UTF-8          //在Linux服务器上面的显示编码 如果不知道自己的编码 可以查看下自己的系统编码
  7. display charset = UTF-8        //自己服务器上面的显示编码 一般都是和unix charset查到的一样
  8. guest account = nobody         //访问的用户范围
  9. dos charset = cp936          //Windows端显示的编码
  10. create mask = 777           //赋予权限
  11. directory mask = 777         //赋予权限
  • [resource]               //这个是Windows上显示的文件夹的名字(共享文件夹)
  1. comment = All Printers       //这个是共享文件夹的说明
  2. path = /home/resource        //共享文件夹的路径
  3. browseable = yes           //是否让所有的使用者都看到这个项目
  4. guest ok = yes            //是否让来宾用户访问
  5. writable = yes            //是否为可以写入
  6. read only = no            //是否设置为只读

用testparm检测配置文件的正确性,有可能会出现下面的错误

rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) 
  1. 解决方法:编辑配置文件 vim /etc/security/limits.conf 在里面加入一行配置
      root - nofile 16384
      root指root用户 如果想都所有用户生效,把root替换为 * 即可!我是设置的 * 下面是配置文件内容

启动samba服务并设置自启动

  1. sudo systemctl start smb
  2. sudo systemctl enable smb.service # 设置开机启动
  3. sudo systemctl status smb
  4. testparm

防火墙允许samba

  1. firewall-cmd --zone=public --add-port=139/tcp --permanent
  2. firewall-cmd --zone=public --add-port=445/tcp --permanent
  3. firewall-cmd --zone=public --add-port=137/udp --permanent
  4. firewall-cmd --zone=public --add-port=138/udp --permanent
  5. firewall-cmd --permanent --zone=public --add-service=samba # samba服务允许通过防火墙
  6. firewall-cmd --reload
  7. systemctl restart firewalld.service

SELinux允许samba

  1. getsebool -a | grep samba # 查看samba状态
  2. setsebool -P samba_enable_home_dirs=1 # 赋予权限
  3. chcon -t samba_share_t /data/share/

客户端进行文件挂载

mkdir /share mount -t cifs //文件服务器ip/public /share -o "username=share,password=xxx"