#!/bin/bash
#########################################
######功能###############################
#添加samba用户
#samba权限分配
######权限分配原则#######################
#普通用户拥有个人空间,可对该空间可读可写(废话)。
#每部门或项目组拥有共享空间,该部门或该组的成员对该空间内自己的文件可读可写,对其它文件可读。
#整个公司拥有一个共享空间。任何成员对该空间内自己的文件可读可写,对其它文件可读。
#部门负责人或项目负责人可对该组员工空间可读。
#高管对所有员工和部门或项目空间可读。
########################################
#Write By: TerryYW
#Version: v1.0
########################################
#####前期准备##########
#手动建立一个系统用户,并配置其使用磁盘quota,将该用户名赋值给initquota参数。
#####init_list列表各列含义##############
#name:position:department:password
#####init_list包含内容如下##############
#......................
#jack:staff:hr:passwd123
#jilly:deptadmin:hr:passwd123
#tom:companyadmin:company:passwd567
#...................................
#######################################
#设置初始化参数
init_list="name_position_dept_passwd.txt"
saveifs=$IFS
sharegroup="company"
flag=","
initquota="terry"
root_uid=0
#必要条件判断
#该脚本要以root身份运行
if [ `echo $UID` -ne "$root_uid" ]; then
echo "Warning:you are not root"
exit 2
fi
#initquota用户是否存在
if less /etc/passwd | awk -F: '{print $1}' | grep ^$initquota$ > /dev/null; then
echo "Info:initquotauser[$initquota] is exist!,continue...."
else
echo "Fatal:initquotauser[$initquota] is not exist!"
echo "Info:please add user [$initquota] to system and setup quota for it!"
exit 1
fi
#init_list列表文件是否存在
if [ -f $init_list ]; then
echo "Info:get [$init_list] data to runing"
else
echo "Fatal:file [$init_list] is not exist!,please renew setup parameter <init_list>"
exit 3
fi
#添加全公司共享组company.
if less /etc/group | awk -F: '{print $1}'| grep ^company$ > /dev/null; then
echo "Warning:group[company] is already exist!,continue execute......"
else
groupadd company
if [ -d /home/company ]; then
chmod 770 /home/company
chgrp company /home/company
else
mkdir /home/company
chmod 770 /home/company
chgrp company /home/company
fi
fi
#添加项目或部门组.
less $init_list | awk -F: '{print $3}' | sort -k2n | uniq > temp.log
while read dept
do
if less /etc/group | awk -F: '{print $1}'| grep ^$dept$ > /dev/null; then
echo "Warning:group[$dept] is already exist!,continue execute......"
else
groupadd $dept
if [ -d /home/$dept ]; then
chmod 770 /home/$dept
chgrp $dept /home/$dept
else
mkdir /home/$dept
chmod 770 /home/$dept
chgrp $dept /home/$dept
fi
fi
done < temp.log
#添加用户到linux系统,建立用户目录,并设置权限。
#添加samba用户,并设置密码。
IFS=:
while read name position dept passwd
do
if less /etc/passwd | awk -F: '{print $1}' | grep ^$name$ > /dev/null; then
echo "Warning:user[$name] is already exist!,continue execute......"
if [ -d /home/$name ]; then
chmod 750 /home/$name
else
mkdir /home/$name
chmod 750 /home/$name
fi
else
useradd -d /home/$name -s /bin/false -m $name
chmod 750 /home/$name
echo "Info:user[$name] be add to system!,continue execute......."
#复制磁盘quota到其他用户
edquota -p $initquota $name
#添加系统用户密码.
passwd $name >> logpasswd.log 2>&1 << sysuser
$passwd
$passwd
sysuser
#添加samba用户密码.
smbpasswd -s -a $name >> logsmb.log 2>&1 << sambauser
$passwd
$passwd
sambauser
fi
#用户依据自己所属部门,加入不同的组。
case $position in
staff)
#一般用户加入自己所属部门或项目组和公司共享组(sharegroup)
usermod -G ${dept}${flag}${sharegroup} $name
echo "Info:[$dept]staffuser[$name] be add to group [${dept}${flag}${sharegroup}]"
;;
deptadmin)
#部门主管或项目主管加入自己所属部门或项目组和自己部门所有员工组和公司共享组(sharegroup)
less $init_list | awk -F: '{print $1":"$2":"$3}'| grep -v ^$name:$position:$dept$ | grep $dept | grep -v $position | awk -F:
'{print $1}' > temp1.log 2>&1
groups=""
while read deptusergroup
do
groups=${groups}${deptusergroup}${flag}
done < temp1.log
groups=${groups}${dept}${flag}${sharegroup}
usermod -G $groups $name
echo "Info:[$dept]deptadminuser[$name] be add to group [$groups]"
;;
companyadmin)
#高管加入所有员工组和部门或项目组和公司共享组(sharegroup)
#高官在$init_list中设置的所属部门是company
#高管加入所有部门或项目组
#高管加入所有员工组
less $init_list | awk -F: '{print $1":"$2":"$3}'| grep -v ^$name:$position:$dept$ | grep -v $position | awk -F: '{print $1}'
> temp2.log 2>&1
less $init_list | grep -v $dept | awk -F: '{print $3}' | sort -k2n | uniq >> temp2.log 2>&1
groups=""
while read group
do
groups=${groups}${group}${flag}
done < temp2.log
groups=${groups}${sharegroup}
usermod -
|