“CentOS服务搭建-02-samba文件服务”的版本间的差异

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

2021年6月18日 (五) 15:05的最新版本


安装并启动Samba

  • 安装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  # 重启使生效
  • 注:
    • 防火墙不关闭,所有节点无法进行挂载。也可以采用:防火墙放行TCP端口:139、445以及UDP端口:137、138。
    • selinux不关闭,无法查看共享文件夹下的文件。

配置文件共享、用户、samba

  • 创建共享目录:
mkdir /share-jyc
  • 创建用户组和用户:
groupadd samba-jyc  # samba-jyc组
useradd -g samba-jyc user123  # samba-jyc 组下的用户 user123
passwd user123  # user123 的密码设置,两次
  • 添加samba文件的共享用户
    • smbpasswd -a user123 # 系统账户以外添加samba账户,才可以访问共享目录 // 参数说明: -a: 添加 -x: 删除 -d: 禁用 -e: 启用
    • 对于共享目录需要使用chown 添加文件夹的用户权限,比如:
chown user123:samba-jyc share-jyc # 给samba-jyc组的user123用户添加权限到share-jyc文件夹
  • 修改samba配置
vi /etc/samba/smb.conf
  • 内容修改为:
[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 # 未使用

smb.conf说明

  • public = no # 是否允许guest访问
  • admin users = admin # 指定管理用户
  • valid users = @admin # 可访问的用户组(用户组前+@)、用户,每个名称分隔用“,”
  • secutity用来指定安全模式,user模式是需要账号密码来登录共享的
  • hosts allow用来指定开放的ip段,当前指定的是对192.168下的所有ip都开放
  • 文件权限设置
 create mask = 0777
 directory mask = 0777
 force directory mode = 0777
 force create mode = 0777
[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            //是否设置为只读

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

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

启动samba服务并设置自启动

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

防火墙允许samba

  • 首先启动被关闭的防火墙:systemctl start firewalld.service
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

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

(选用内容)客户端进行文件挂载

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

(选用内容)Windows下更换帐户登陆samba

net use \\192.168.1.102\IPC$ /delete  # 删除上一次建立的连接