文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>原创:搭建samba文件服务器之批量用户生成

原创:搭建samba文件服务器之批量用户生成

时间:2010-06-26  来源:terryyw

如需转载,请标明出处,谢谢。 http://blog.chinaunix.net/u3/109345/showart_2261447.html Write by : TerryYW

#!/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 -

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载