目录

~~IS~~

安装并启动Samba

  yum -y install samba
  systemctl start smb.service
  
  vim /etc/sysconfig/selinux
  SELINUX=enforcing 改为 SELINUX=disabled  # 关闭selinux
  systemctl disable firewalld.service  # 关闭防火墙
  shutdown -r now  # 重启使生效
  

配置文件共享、用户、samba

mkdir /share-jyc
groupadd samba-jyc  # samba-jyc组
  useradd -g samba-jyc user123  # samba-jyc 组下的用户 user123
  passwd user123  # user123 的密码设置,两次

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

  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
  

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>