Samba批量增加用户与配置
文章目录
公司一直以来都有个共享盘的需求,之前使用的 windows server 做共享,但是用户的权限控制一直都做的很不理想,趁着这次服务器重置把共享搬到了 Linux 平台上,也摒除了要去使用各种类似 wingftp 的软件的麻烦。
制作用户列表
用户名称与用户组(userlist)
可以采用excel输入,然后复制出来或者导出都可以,注意导出的文本文件最后添加一个空行,不然会少一个用户。
zhangs arch leader yysj
lis arch leader yysj
wangw struc leader yysj
为用户创建随机密码并加入userlist
# 为用户列表创建随机的6位数密码
awk '{cmd="echo `date +%Y-%m-%d-%H-%M-%S.%N|md5sum|cut -b 1-6` "$system(cmd)}' userlist.txt > userlist
由于不知道怎么把生成的密码放到第二列,就放在第一列算了,创建用户跟密码的时候注意下就可以了。
创建密码后的文件类似:
842w3b zhangs arch leader yysj
1cb3f4 lis arch leader yysj
e0t4a6 wangw struc leader yysj
添加用户组
组列表文件
组列表文件为每行一个用户组(文件名:groups)。
yysj
arch
struc
assis
garden
mechat
bim
leader
stuff
intern
批量添加组
脚本如下(add_group.sh):
#!/bin/bash
cat $1 | while read group
do
groupadd ${group}
done
使用命令 sudo ./add_group.sh groups
添加用户组。
批量添加用户
脚本如下(add_samba_users.sh):
#!/bin/bash
# Create users
cat $1 | awk {print}| while read password username group_pro group_pos group_depa
do
useradd -M -s /usr/sbin/nologin -p ${password} -g ${group_depa} -G ${group_pro},${group_pos} $username
echo -e "$password\n$password" | smbpasswd -a $username -s
done
使用如下命令批量添加用户:
sudo ./add_samba_users.sh userlist
在批量添加用户以后要注意去查看一下/etc/passwd和/etc/group*两个文件,确认用户都按自己的需求添加了,而且属于对应的组。*
samba设置
编辑/etc/samba/smb.conf
文件,记得备份原版文件:
[global]
workgroup = WORKGROUP
server string = %h server (Samba, Ubuntu)
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
security = user
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = bad user
usershare allow guests = yes
# 注意:/samba/share/projects文件夹需要设置权限:sudo chmod 1775 /samba/share/projects,这样才能实现用户建立的文件其他人不能删除修改,包括Software和Rules共享同样设置
[Projects]
comment = Projects (read-and-write for @leader, read-only for others)
path = /samba/share/projects
browsable = yes
public = no
# yysj这个用户组才可以访问此文件夹
valid users = @yysj
# 仅用户yuhb和leader组的用户可以写目录
write list = yuhb,@leader
create mode = 0740
directory mode = 1755
[Software]
comment = Software (read_and_write for yuhb, read-only for others)
path = /samba/share/software
browsable = yes
public = no
# yysj这个用户组才可以访问此文件夹
valid users = @yysj
# 仅用户yuhb和leader组的用户可以写目录
write list = yuhb,@leader
create mode = 0740
directory mode = 1750
[Rules]
comment = Rules (read-and-write for @leader, read-only for others)
path = /samba/share/rules
browsable = yes
public = no
# yysj这个用户组才可以访问此文件夹
valid users = @yysj
# 仅leader组的用户可以写目录
write list = @leader
create mode = 0740
directory mode = 1750
samba的权限除了samba本身允许的权限以外,文件系统的权限也会对用户共享造成限制,所以打开了samba本身允许写的权限的时候,一定要注意系统文件夹和文件是否允许登录的用户修改
关于samba的目录权限设置可以参考这个来设置:
# 只有用户b02,b01,c01,a01,以及用户组A可以访问该文件夹,但是只有用户组A能够写该文件夹。
[AA]
comment = AA
path = /samba/A
public = no
valid users = b02,b01,c01,a01,@A
write list = @A
# 只有用户a01,c01,b01,以及用户组B可以访问该文件夹,但是只有用户组B能够写该文件夹。
[BB]
comment = BB
path = /samba/B
public = no
valid users = a01,c01,b01,@B
write list = @B
# 所有账号能够访问对方,但是不能编辑或删除对方建立的文件
# 要修改文件夹权限才能实现这个目的:sudo chmod 1777 /samba/share-rw
[share-rw]
comment = share-rw
path = /samba/share-rw
public = yes
writable = yes
文章作者 Evan Yu
上次更新 2020-03-12