简易 Linux Server 部署教程系列之 06 使用 Samba 实现文件共享服务 ( 作者信息 : 阮晓龙投稿时间 :2018 年 5 月 4 日 ) 一 需求描述 1 需求说明支持 Windows Linux Unix Mac 等操作系统支持 Android ios 等移动平台支持计算机 平板电脑 智能手机 智能电视全终端体系支持多账号 多共享目录, 以及交叉授权 2 部署要求 基于 CentOS 7 实现 Samba 服务 实现 Shell 脚本自动化部署 二 方案设计 1 目录设计 PublicShare: 所有人可以读写 TeachShare: 学生可以读取, 但不能够写入 教师可以读写 WorkShare: 开发人员可以读写, 其他人不能够访问 所有目录存放在 /srv/smb 下 2 账号权限设计学生账号 :stu1 stu2 stu3 教师账号 :tec1 tec2 tec3 开发账号 :dev2 dev2 dev3 交叉账号 :tec1 tec2 具有开发人员同等权限管理员账号 :smbadmin 密码说明 : 密码 = 账号 +pwd 字符, 例如 stu1 的密码为 stu1pwd
三 配置脚本 1 清除前期安装的内容( 首次安装请跳过 ) yum -y remove samba sambaclient yum -y autoremove rm -rf /srv/smb rm -rf /var/mail/stu* rm -rf /var/mail/tec* rm -rf /var/mail/dev* rm -rf /var/mail/smbadmin userdel stu1 userdel stu2 userdel stu3 userdel tec1 userdel tec2 userdel tec3 userdel dev1 userdel dev2 userdel dev3 userdel smbadmin groupdel stugroup groupdel tecgroup groupdel devgroup groupdel smbgroup echo 'old config is clean.' 2 安装 Samba yum -y install samba sambaclient echo 'Samba install ok.' # 创建 smb 服务的资源目录 mkdir -p /srv/smb/publicshare mkdir -p /srv/smb/teachshare mkdir -p /srv/smb/workshare chmod -R 777 /srv/smb echo 'Resource Folder and Privileges is config.'
3 创建用户信息 groupadd stugroup groupadd tecgroup groupadd devgroup groupadd smbgroup useradd -MN -g stugroup -s /sbin/nologin stu1 && echo -e "stu1pwd\nstu1pwd" smbpasswd -a -s stu1 useradd -MN -g stugroup -s /sbin/nologin stu2 && echo -e "stu2pwd\nstu2pwd" smbpasswd -a -s stu2 useradd -MN -g stugroup -s /sbin/nologin stu3 && echo -e "stu3pwd\nstu3pwd" smbpasswd -a -s stu3 useradd -MN -g tecgroup -s /sbin/nologin tec1 && echo -e "tec1pwd\ntec1pwd" smbpasswd -a -s tec1 useradd -MN -g tecgroup -s /sbin/nologin tec2 && echo -e "tec2pwd\ntec2pwd" smbpasswd -a -s tec2 useradd -MN -g tecgroup -s /sbin/nologin tec3 && echo -e "tec3pwd\ntec3pwd" smbpasswd -a -s tec3 useradd -MN -g devgroup -s /sbin/nologin dev1 && echo -e "dev1pwd\ndev1pwd" smbpasswd -a -s dev1 useradd -MN -g devgroup -s /sbin/nologin dev2 && echo -e "dev2pwd\ndev2pwd" smbpasswd -a -s dev2 useradd -MN -g devgroup -s /sbin/nologin dev3 && echo -e "dev3pwd\ndev3pwd" smbpasswd -a -s dev3 useradd -MN -g smbgroup -s /sbin/nologin smbadmin && echo -e "smbadminpwd\nsmbadminpwd" smbpasswd -a -s smbadmin usermod -G devgroup tec1 usermod -G devgroup tec2 chown nobody:nobody /srv/smb/publicshare chown smbadmin:smbgroup /srv/smb/teachshare chown smbadmin:devgroup /srv/smb/workshare echo 'user and group is config.'
4 修改 smb.conf 配置文件 mv /etc/samba/smb.conf /etc/samba/smb.conf.bak cat > /etc/samba/smb.conf << EOF [global] # 工作组名 workgroup = WORKGROUP # 服务器描述信息 server string = Welcome to Teach Demo Samba Service %v # 显示的服务器名称 netbios name = TeachSambaDemo # 日志文件存放位置 log file = /var/log/samba/log.%m # 日志文件大小上限, 单位为 KB max log size = 10240 # 安全级别 security = user passdb backend = tdbsam # 共享名和共享配置信息 [PublicShare] # 共享描述 comment = Public Share is Open Share # 共享存放的位置 path = /srv/smb/publicshare # 禁止匿名访问 # 管理员账号 # 允许所有账号写操作 writeable = Yes # 允许所有账号浏览 browseable = Yes # 新建文件的权限默认值 # 新建目录的权限默认值 [TeachShare] comment = Teach Share For Linux Lessons
path = /srv/smb/teachshare # 授权访问资源的用户列表, 可以为用户名或者用户组名, 用户组名加 @ 或 + valid users = @stugroup,@tecgroup,@devgroup # 授权写操作的用户列表 write list = @tecgroup [WorkShare] comment = Work Share For Developer path = /srv/smb/workshare valid users = +devgroup write list = +devgroup EOF echo 'smb.conf is ok.' 6 配置 Samba 服务 systemctl enable smb systemctl start smb echo 'smb service is auto start,and now is running.' 7 关闭防火墙和 SELinux # 推荐配置防火墙策略, 而非关闭 systemctl disable firewalld systemctl stop firewalld setenforce 0 echo 'Firewall and SELinux is shutdown.' 点此下载配置的 shell 脚本 : 使用 Samba 实现文件共享服务的配置脚本.zip 查看原文 : 简易 Linux Server 部署教程系列之 06- 使用 Samba 实现文件共享服 务.pdf