samba 批量添加用户
这2天接了个linux下文件服务器的单,所以研究samba,目前能做到的是批量导入用户,有些方面的处理还不是很周到,以后有时间再改,先发上几个相关文件.
安装执行办法:
./update.sh remove
./update.sh install
设置smb
./update.sh set
user.txt为用户密码文件,user:password
update.sh
#!/bin/bash
if [ "$1" = "remove" ]; then
aptitude purge samba -y > /dev/null
apt-get remove samba* -y > /dev/null
rm -rf /etc/samba > /dev/null
elif
[ "$1" = "install" ]; then
echo "Waiting..................."
aptitude install samba -f -y
aptitude install winbind -f -y
aptitude install expect -y
addgroup kx
elif
[ "$1" = "set" ]; then
/etc/init.d/samba stop
cp ./smb.conf /etc/samba/smb.conf -f
SAVEDIFS=$IFS
IFS=:
while read xname other
do
smbpasswd -x $xname
done < /etc/passwd
while read name passwd
do
deluser $name
useradd -g kx -k /dev/null -p $passwd -m -s /bin/false -d /home/$name $name >& /dev/null
chown $name.kx /home/$name
./expect_smb.sh $name $passwd > /dev/null
echo "Add user ##$name## with password ##$passwd## over!"
done < ./user.txt
/etc/init.d/samba restart
fi
./expect_smb.sh
#!/usr/bin/expect -f
#FileName:expect_smb.sh
#Add user to the samba server
# 1---The name of user
# 2---The passwd of user
set username [lindex $argv 0]
set password [lindex $argv 1]
spawn smbpasswd -a $username
expect "*password:"
send "$password\n"
expect "*password:"
send "$password\n"
expect eof
smb.conf
[global]
workgroup = mygroup
server string = %h server
; wins support = no
; wins server = w.x.y.z
dns proxy = no
; name resolve order = lmhosts host wins bcast
; interfaces = 127.0.0.0/8 eth0
; bind interfaces only = true
log file = /var/log/samba/log.%m
max log size = 1000
; syslog only = no
syslog = 0
panic action = /usr/share/samba/panic-action %d
security = user
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
invalid users = root
; unix password sync = no
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n *password\supdated\ssuccessfully* .
; pam password change = no
domain logons = no
; logon path = \\%N\profiles\%U
; logon path = \\%N\%U\profile
; logon drive = H:
; logon home = \\%N\%U
; logon script = logon.cmd
; add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u
load printers = no
; printing = bsd
; printcap name = /etc/printcap
; printing = cups
; printcap name = cups
; printer admin = @ntadmin
; include = /home/samba/etc/smb.conf.%m
# You may want to add the following on a Linux system:
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
; domain master = auto
; idmap uid = 10000-20000
; idmap gid = 10000-20000
; template shell = /bin/bash
winbind enum groups = yes
; winbind enum users = yes
#======================= Share Definitions =======================
[homes]
comment = Home Directories
browseable = no
writable = yes
create mask = 0700
directory mask = 0700
valid users = %S
[wind]
comment = wind
path = /home/wind
writable = yes
create mask = 0770
directory mask = 0770
[tools]
comment = tools
path = /home/tools
writeable = yes
create mask = 0700
directory mask = 0700
; write list = root, @ntadmin
; postexec = /bin/umount /cdrom
user.txt
kx1:0
kx2:0
kx3:0
kx4:0