在Linux中批量建立用户的shell_unix linux

  最近,笔者在校园网应用平台建设中采用了Linux操作系统,为校园网用户提供DNS、Apache、POP3、SMTP、FTP等服务。由于我校学生用户数在3000人以上,笔者在建设整个应用平台的过程中特别重视保证用户管理效率。我的基本思路和做法是:利用shell为每个学生建立一个系统账号——即提供一个E-mail地址(含FTP空间账号),然后学生可以凭借其E-mail再注册论坛用户。基于这样的管理思路,笔者编写了一个批量建立用户的shell,实践证明,利用shell可以有效地管理基于Unix内核的系统用户。

  以下是整个shell的源码及注释,此代码在Redhat 7.2及Turbo Linux 7.0上调试通过,在其他版本的Linux中使用可能需要做适当的修改。其中“@”部分是代码注释,“()”部分是笔者对于编程思路的解释。

  @!/bin/sh(定义使用sh shell)

  groupadd users(建立用户组)

  @grade code(定义第一个参数为年级代码,赋予变量“grade”)

  grade=$1

  @class code(定义第二个参数为班级代码,赋予变量“num_class”)

  num_class=`expr $2 + 0`

  if (test $num_class -le 9)(以下代码是为了保证班级码的位数为两位)

  then

   num_class="0"$num_class

  fi

  @max user id(定义第三个参数为该班学生的最大ID号,赋予变量“max_stid”)

  max_stid=`expr $3 + 0`

  @init user id(该班学生用户ID号从1开始)

  num_stid =1

  @mkdir user home(在“/home”目录为所有学生建立名为"student"的公共目录)

  if [ ! -x /home/student ]

  then

   mkdir /home/student

  fi

  if [ ! -x /home/student/$1$num_class ] (在学生公共目录下为每个班级建立以该班代码命名的目录)

  then

   mkdir /home/student/$1$num_class

  fi

  while (test $num_stid -le $max_stid)(从用户ID号1开始循环,直到最大ID号)

   do

   if (test $num_stid -le 9) (以下保证学生代码的位数为两位)

   then

   num_stid="0"$num_stid

   fi

   user_name=$grade$num_class$num_stid(把年级、班级、学生ID号三部分代码组合成用户名,并赋予变量user_name)

   @save user passwd to file user_pwlist(按“name:passwd”的格式逐行追加写入“user_pwlist”文件,以备初始化用户密码)

   echo $user_name":"$user_name >> user_pwlist

   @add user(建立该用户,同时赋予“users”组,创建该用户目录)

   adduser -g users -d /home/student/$1$num_class/$user_name $user_name

   @set quota(为该用户设置配额,限制最大容量为20MB,没有文件数限制)

   setquota -u $user_name 10240 20480 0 0 /home

   @set directory mode(设置该用户目录的权限为755)

   chmod 755 /home/student/$1$num_class/$user_name

   @current user id add one(用户ID号加1,准备下一次循环,建立下一个用户)

   num_stid=`expr $num_stid + 1`

  done

  chpasswd < user_pwlist(以下两行为刚才建立的所有用户设置密码)

  pwconv

  rm user_pwlist -f(删除“user_pwlist”文件)

  

  关于使用:

  1. 用vi编辑器逐行写入以上代码部分,并以文件的形式保存,如以“addclass”命名保存,再执行以下步骤。

  2. #chmod +x addclass(设置addclass文件为可执行权限)

  3. #./addclass ga 1 50(建立ga0101-ga0150用户)

  注意:#为提示符。

  

  以上代码只是笔者在使用shell进行系统用户管理时的一点体会。由于shell可以和Linux的系统命令结合使用,所以它在管理中的功能就显得非常强大。就以上代码而言,我们只要稍加改动,就可以建立删除批量用户的shell、批量配置用户配额的shell以及批量初始用户密码的shell。如果再加上一层班级循环语句,就可以生成一次建立一个年级用户的shell。

时间: 2024-10-29 00:18:58

在Linux中批量建立用户的shell_unix linux的相关文章

[小白技巧]如何在Linux中阻止其它用户访问你的家目录

[小白技巧]如何在Linux中阻止其它用户访问你的家目录 如果你和其他人共享Ubuntu机器,那么你可能要设置多个用户,希望其他用户登录到他们自己的帐号,并只能访问他们自己的家目录.但是,默认情况下,任何一个用户都可以访问任何一个家目录. 当你在Ubuntu中添加一个新用户时,adduser工具为新的帐号添加了一个新的家目录.默认情况下,该目录位于根下面的/home/目录下,并以该帐号的用户名命名.例如,/home/lori.Ubuntu中创建的用户家目录具有其它人可读/执行权限,这就给系统中所

linux中useradd增加用户简单方法

在 Linux 系统中,与用户管理有关的文件主要有如下几个:分别是/etc/passwd,/etc/shadow,/etc/gfoup,/etc/gshadow .它们分别与用户的账号,密码,用户组及用户组密码有关. 所以创建新账号的过程也就是和这几个文件在打交道,不过不要害怕,通过 useradd 命令来创建新账号,系统会自动与这些文件进行操作不用咱手动一个一个的来更改,这样也不用担心出错的问题.呵呵. (1)最简单的方法: useradd -m username 再在/home 目录下建立一

如何在Office 365中批量添加用户

企业管理员在O365订阅中创建用户时,不可能像试用时那样一个一个地添加.在初始化企业订阅的时候往往需要批量添加用户,O365为我们提供了批量添加用户要用到的CSV文件模版及空白文件,用文本编辑器编辑该文件,按照文件的格式要求将用户记录逐条逐项对应填上就可以轻松完成用户的批量添加.如图: 在此图中可以下载CSV文件的示例和空白文档,用最简单的文本编辑器打开该文档的样子如下图: 最上边一行实际上是在O365中创建用户记录时会包含的字段,不能对这一行进行任何删改,否则无法通过系统验证.如果不能或不愿将

linux中批量查找替换文本内容例子

  .批量查找某个目下文件的包含的内容,例如: # grep -rn "要找查找的文本" ./ 2.批量查找并替换文件内容. # sed -i "s/要找查找的文本/替换后的文本/g" `grep -rl "要找查找的文本" ./` sed的其他用法如下: 1.删除行首空格 sed 's/^[ ]*//g' filename sed 's/^ *//g' filename sed 's/^[[:space:]]*//g' filename 2.行

Linux中创建管理用户、用户组命令

  使用Linux时,需要以一个用户的身份登陆,从而限制一个使用者能够访问的资源:而组则是用来方便组织管理用户. 用户与组 •每个用户拥有一个UserID •每个用户属于一个主组,属于一个或多个附属组 •每个组拥有一个GroupID •每个进程以一个用户身份运行,并受该用户可访问的资源限制 •每个可登陆用户有一个指定的SHELL 系统中的文件都有一个所属用户及所属组,用户.组信息保存在以下三个文件中: /etc/passwd   用户信息 /etc/shadow  用户密码 /edc/group

linux中如何添加用户并赋予root权限详解_Linux

一.linux添加用户并赋予root权限 1.添加用户,首先用adduser命令添加一个普通用户,命令如下: #adduser eric //添加一个名为eric的用户 #passwd eric//修改密码 Changing password for user eric. New UNIX password: //在这里输入新密码 Retype new UNIX password: //再次输入新密码 passwd: all authentication tokens updated succe

linux中vsftpd虚拟用户配置脚本示例

每次新安装服务器后,都要进行一系列的配置,安装软件,修改配置等,为了今后更好的部署vsftpd,特此写了个脚本用于部署 登录FTP有三种方式,匿名登录.本地用户登录和虚拟用户登录. 匿名登录:在登录FTP时使用默认的用户名,一般是ftp或anonymous. 本地用户登录:使用系统用户登录,在/etc/passwd中. 虚拟用户登录:这是FTP专有用户,有两种方式实现虚拟用户,本地数据文件和数据库服务器. FTP虚拟用户是FTP服务器的专有用户,使用虚拟用户登录FTP,只能访问FTP服务器提供的

linux中禁止root用户ssh远程登录并修改ssh远程登录端口

服务器的安全性不言而喻,服务器安全性设置的第一步就是堵住入口. 对于linux而言,堵住入口,就是不让别人能随便进入我们的服务器里面乱搞,不然一个命令 "rm  -rf  / ",后果不堪设想.所以不能让别人进入我们的服务器,更加不能让别人用root用户进去.所以最好的做法就是: 在linux上面设置禁止root用户远程登录,并且修改ssh端口[因为默认的端口是22,改了设置多一层障碍],然后我们需要登录进去的时候,就用一个没有权限的用户登录进去,然后再用su命令切换到root或者其他

详解Unix/Linux中周期执行指令Crontab命令_unix linux

简介 crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行. 通常,crontab储存的指令被守护进程激活,crond常常在后台运行,每一分钟检查是否有预定的作业需要执行.这类作业一般称为cron jobs. cron 是 Unix/Linux 中提供定期执行 shell 命令的服务,包括 crond 和 crontab 两部分:      crond: cron