Linux samba文件共享

HUC-WFX 1年前 ⋅ 12534 阅读

1、安装samba

yum install samba
yum install samba*

2、检查SMB服务状态

systemctl status smb    //查看状态
systemctl start smb     //启动smb
systemctl restart smb   //重启服务
systemctl stop smb      //停止smb服务
3、开放防火墙对应端口
firewall-cmd --zone=public --add-port=445/tcp --permanent
firewall-cmd --reload

4、关闭SELinux

vim  /etc/selinux/config


将SELINUX=enforcing改为SELINUX=disabled 
5、修改smb.conf文件配置共享文件夹
vim /etc/samba/smb.conf
#全局配置
[global]
        workgroup = SAMBA
        security = user
        netbios name = 10.1.1.10     //这个根据服务器IP地址修改对应的参数
        server string = SAMBA SERVER
        log file = /var/log/samba/log.%m
        max log size = 50
        passdb backend = tdbsam
        map to guest = Bad User
        guest ok = yes
        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
#公共共享文件夹        
[public]
        comment = Public Stuff
        path = /home/public
        create mask = 0664
        directory mask = 0775
        public = yes
        writable = yes
        read only =no  

6、使用create_user.sh 快速创建共享文件夹及用户

    调用方式为:create_user.sh <用户名> <密码> <用户组>

    例如:sudo sh create_user.sh wlzx wlzx samba
代码逻辑如下:
  • 定义变量接收用户名,密码,用户组这3个参数
  • 判断用户组是否存在,如果不存在则创建
  • 判断用户组的共享目录是否存在,如果不存在则创建并赋予770权限然后更改文件所属用户组
  • 判断用户是否存在,如果不存在则创建,如果存在则退出脚本
  • 创建私人文件夹 更改文件夹所属用户(用户组和用户同名)
  • 赋予文件夹700权限
  • 写入samba的配置文件
  • 重启samba服务
 
create_user.sh完整代码如下:
#!/bin/bash

username=$1
password=$2
group=$3
#-----------用户组创建--------------
#检测输入检测用户组是否存在
#如果用户组存在提示已存在继续执行下一步
#如果用户组不存在则执行创建用户组 创建用户组目录
egrep "^$group" /etc/group >& /dev/null
if [ $? -ne 0 ];then
    groupadd $group
fi
if [ ! -d "/home/$group" ]; then
    mkdir -p /home/$group
    chmod 770 -R /home/$group
    chown -R :$group /home/$group
fi

#------------创建系统用户并添加到samba共享系统中----------------
#根据输入参数检测用户是否存在
#用户不存在且参数完成的情况下提示创建成功
#用户不存在参数不完整提示错误结束进程
#用户存在提示用户已存在
pdbedit -L | grep "^$username:" &>/dev/null
if [ $? -ne 0 ]; then
    useradd  -s /sbin/nologin -G $group $username
    echo "$password" | passwd --stdin $username 1>/dev/null 2>>addsmbuser.log
    echo -e "$password\n$password" | pdbedit -a -t -u $username 2>>addsmbuser.log
    if [ $? -eq 0 ]; then
        echo "$username 创建成功"
    else
        echo "错误"
            exit 1
    fi
else
    echo -e "$username 已存在"
fi
#---------------创建共享文件夹-----------
#继承上面进程完成的参数创建对应的文件夹
mkdir -p /home/$username
chown -R $username:$group /home/$username
chmod 700 -R /home/$username

#---在smb.conf文件中追加对应的配置参数,并重启smb服务
cat <<EOF>> /etc/samba/smb.conf
[$username]
        security = user
        path = /home/$username
        valid users = @$username
        read list = @$username
        write list = @$username
        writable = yes
        create mask = 0777
        directory mask = 0777
EOF

systemctl restart smbd​