手动增长使用者 通常来讲,咱们不很建议你们使用手动的方式来新增使用者,为何呢? 由于使用者的创建涉及到 GID/UID 等权限的关系,并且,与档案/目录的权限也有关系, 使用 useradd 能够帮咱们自动设定好 UID/GID 家目录以及家目录相关的权限设定, 可是,手动来增长的时候,有可能会忘东忘西,结果致使一些困扰的发生。 不过,要瞭解整个系统,最好仍是手动来修改过比较好,至少咱们的账号问题能够彻底依照本身的意思去修订, 而没必要迁就于系统的预设值啊!可是,仍是要告诫一下朋友们,要手动设定账号时, 您必需要真的很瞭解本身在做什么,尤为是与权限有关的设定方面喔! 好吧!底下就让咱们来玩一玩啰~ ^_^ 一些检查工具 既然要手动修改账号的相关设定档,那么一些检查群组、账号相关的指令就不可不知道啊~ 尤为是那个密码转换的 pwconv 及 pwuconv 这两个玩意~可重要的很呢! 底下咱们稍微介绍一下这些指令吧! # pwck pwck 这个指令在检查 /etc/passwd 这个账号设定档内的资讯,与实际的家目录是否存在等资讯, 还能够比对 /etc/passwd /etc/shadow 的资讯是否一致,另外, 若是 /etc/passwd 内的资料栏位错误时,会提示使用者修订。 通常来讲,我只是利用这个玩意儿来检查个人输入是否正确就是了。 [root@linux ~]# pwck user adm: directory /var/adm does not exist user news: directory /etc/news does not exist user uucp: directory /var/spool/uucp does not exist 瞧!上面仅是告知我,这些账号并无家目录,因为那些账号绝大部分都是系统账号, 确实也不须要家目录的,因此,那是‘正常的错误!’呵呵!不理他。 ^_^。 相对应的群组检查可使用 grpck 这个指令的啦! # pwconv 这个指令主要的目的是在‘将 /etc/passwd 内的账号与密码,移动到 /etc/shadow 当中!’ 早期的 Unix 系统当中并无 /etc/shadow 呢,因此,使用者的登入密码早期是在 /etc/passwd 的第二栏,后来为了系统安全,才将密码资料移动到 /etc/shadow 内的。 使用 pwconv 后,能够: * 比对 /etc/passwd 及 /etc/shadow ,若 /etc/passwd 内存在的账号并无对应的 /etc/shadow 密码时,则 pwconv 会去 /etc/login.defs 取用相关的密码资料,并创建该账号的 /etc/shadow 资料; * 若 /etc/passwd 内存在加密后的密码资料时,则 pwconv 会将该密码栏移动到 /etc/shadow 内,并将本来的 /etc/passwd 内相对应的密码栏变成 x ! 通常来讲,若是您正常使用 useradd 增长使用者时,使用 pwconv 并不会有任何的动做,由于 /etc/passwd 与 /etc/shadow 并不会有上述两点问题啊! ^_^。 不过,若是手动设定账号,这个 pwconv 就很重要啰! # pwunconv 相对于 pwconv , pwunconv 则是‘将 /etc/shadow 内的密码栏资料写回 /etc/passwd 当中, 而且删除 /etc/shadow 档案。’这个指令说实在的,最好不要使用啦! 由于他会将你的 /etc/shadow 删除喔!若是你忘记备份,又不会使用 pwconv 的话, 粉严重呢! # chpasswd chpasswd 是个挺有趣的指令,他能够‘读入未加密前的密码,而且通过加密后, 将加密后的密码写入 /etc/shadow 当中。’这个指令很常被使用在大量建置账号的状况中喔! 他能够由 Standard input 读入资料,每笔资料的格式是‘ username:password ’。 举例来讲,个人系统当中有个使用者账号为 dmtsai ,我想要更新他的密码 (update) , 假如他的密码是 abcdefg 的话,那么我能够这样作: [root@linux ~]# echo "dmtsai:abcdefg" | chpasswd 神奇吧!这样就能够更新了呢!在预设的状况中, chpasswd 使用的是 DES 加密方法来加密, 咱们可使用 chpasswd -m 来使用 FC4 预设的 MD5 加密方法,不过, FC4 彷佛怪怪的,我总是没法使用 -m 来达成这个指令。不管如何, 仍是能够直接使用 chpasswd 来应用 DES 加密喔! 使用 DES 方法加密后,在 /etc/shadow 的密码栏内,他的密码位数为 13 位, 瞭乎?? 小标题的图示特殊账号,如纯数字账号的创建 在咱们瞭解了 UID/GID 与账号的关系以后,基本上,您应该瞭解了,为啥咱们不建议使用纯数字的账号了! 由于不少时候,系统会搞不清楚那组数字是‘账号’仍是‘UID’,这不是很好啦~ 也所以,在早期某些版本底下,是没有办法使用数字来创建账号的。例如在 Red Hat 9 的环境中, 使用‘ useradd 1234 ’他会显示‘ useradd: invalid user name '1234' ’呼呼!瞭解了吗?! (不过,这个问题在 FC4 却不存在!由于 FC4 能够创建纯数字的账号说~) 不过,有的时候,长官的命令难为啊~有时仍是得要创建这方面的账号的,那该如何是好? 呵呵!固然能够手动来创建这样的账号啦!不过,为了系统安全起见,鸟哥仍是不建议使用纯数字的账号的啦! 所以,底下的范例当中,咱们使用手动的方式来创建一个名为 normaluser 的账号, 并且这个账号属于 normalgroup 这个群组。OK!那么整个步骤该如何是好呢? 由前面的说明来看,您应该瞭解了账号与群组是与 /etc/group, /etc/shadow, /etc/passwd, /etc/gshadow 有关,所以,整个动做是这样的: 1. 先创建所须要的群组 ( vi /etc/group ); 2. 将 /etc/group 与 /etc/gshadow 同步化 ( grpconv ); 3. 创建账号的各个属性 ( vi /etc/passwd ); 4. 将 /etc/passwd 与 /etc/shadow 同步化 ( pwconv ); 5. 创建该账号的密码 ( passwd accountname ); 6. 创建使用者家目录 ( cp -a /etc/skel /home/accountname ); 7. 更改使用者家目录的属性 ( chown -R accountname.group /home/accountname )。 够简单的咯吧!让咱们来玩一玩啰~ 1. 创建群组 normalgroup ,假设 520 这个 GID 没有被使用!而且同步化 gshadow [root@linux ~]# vi /etc/group # 在最后一行加入底下这一行! normalgroup:x:520: [root@linux ~]# grpconv [root@linux ~]# grep 'normalgroup' /etc/group /etc/gshadow /etc/group:normalgroup:x:520: /etc/gshadow:normalgroup:x:: # 简单!搞定群组啰! ^_^ 2. 创建 normaluser 这个账号,假设 UID 700 没被使用掉! [root@linux ~]# vi /etc/passwd # 在最后一行加入底下这一行! normaluser:x:700:520::/home/normaluser:/bin/bash 3. 同步化密码,而且创建该使用者的密码 [root@linux ~]# pwconv [root@linux ~]# grep 'normaluser' /etc/passwd /etc/shadow /etc/passwd:normaluser:x:700:520::/home/normaluser:/bin/bash /etc/shadow:normaluser:x:13030:0:99999:7::: # 呵呵!没错没错!已经创建稳当啰~可是密码还不对~ [root@linux ~]# passwd normaluser Changing password for user normaluser. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully. 4. 创建使用者家目录,而且修订权限! [root@linux ~]# cp -a /etc/skel /home/normaluser [root@linux ~]# chown -R normaluser:normalgroup /home/normaluser 别怀疑!这样就搞定了一个账号的设定了! 今后之后,你能够创建任何名称的账号啰~不过,仍是不建议您设定一些很怪很怪的账号名称啦! 小标题的图示不开放终端机登入的账号 (ex>mail acccount) 刚刚咱们上面创建的这个账号是‘能够登入系统的账号’,若是想要创建一个不能登入系统的账号, 例如单纯使用邮件收发信件而已的账号,那么又该如何设定呢?很简单啦~ 你能够这样想: * 由于不须要登入系统,因此建议 shell 栏位给予 /sbin/nologin ; * 由于不须要登入,因此家目录也能够先不创建。 也就是说,其实全部的步骤与刚刚上头提到的动做都同样,不过,少掉了不少与家目录有关的设定行为就是了。 底下我假设个人系统里面有个叫作 mail 的群组 (/etc/group) ,他的 GID 是 12 (以 FC4 为例), 另外,这个使用者的账号为 popuser ,假设 UID 为 720 ,那么该如何创建呢? 1. 修改账号属性 [root@linux ~]# vi /etc/passwd popuser:x:720:12::/home/popuser:/sbin/nologin 2. 密码同步,而且给予密码! [root@linux ~]# pwconv [root@linux ~]# passwd popuser 这样就又 OK 了~哇!真是太简单了杰克~.... 那么又该如何删除这些账号呢?啊!仍是建议利用 userdel 啦~简单~乾脆又俐落~ 若是想要暂时移除而已的话,那么利用 passwd -l 及 passwd -u 吧! ^_^。 若是真的那么想要手动来移除这个账号的话,就这样作: 1. 先以 find / -user account 找出全部的账号档案,并将他删除; 2. 将 /etc/passwd 与 /etc/shadow 的相关资料删除; 3. 将 /etc/group 及 /etc/gshadow 相关资料删除; 4. 将 /home 底下关于该账号的目录删除; 5. 到 /var/spool/mail 以及 /var/spool/cron 里面将相关的使用者档案删除。 这样就手动删除啦~ 一个大量建置账号的范例 不要怀疑,不少时候,咱们均可能须要大量的建置账号的, 举例来讲,学校要帮同窗创建他们的账号,那就极可能须要啦~ 通常来讲,创建账号要进行的前制工做不少,包括要创建账号名称与该账号的密码对应表~ 这个是最讨厌的啦~并且还要决定须要使用哪个群组~呼呼~好讨厌的感受那~ 目前不少网站都有提供大量创建账号的工具,例如台南县网中心的卧龙大师: http://linux.tnc.edu.tw/techdoc/howto/howtouse_cmpwd.htm 提供的好用的 cmpwd 程式, 不过,其实咱们也能够利用简单的 script 来帮咱们达成喔!例如底下这支程式, 他的执行结果与卧龙大师提供的程式差很少啦~ 可是由于我是直接以 useradd 来新增的, 因此,即便不瞭解 UID ,也是能够适用的啦~ 整支程式的特点是: * 预设不容许使用纯数字方式创建账号; * 可加入年级来区分账号; * 可设定账号的起始号码与账号数量; * 有两种密码创建方式,能够与账号相同或程式自行以乱数创建密码档。 执行方法也简单的要命~请自行参考的啦!再也不多说~ 使用时请注意,不要在公家使用的主机上面进行测试,由于..... 这支程式会大量创建账号嘛!^_^ #!/bin/bash # # 这支程式主要在帮您创建大量的账号之用, # 更多的使用方法请参考: # http://linux.vbird.org/linux_bas ... r.php#manual_amount # # 本程式为鸟哥自行开发,在 FC4 上使用没有问题, # 但不保证毫不会发生错误!使用时,请自行负担风险~ # # History: # 2005/09/05 VBird 刚刚才写完,使用看看先~ PATH=/sbin:/usr/sbin:/bin:/usr/bin; export PATH accountfile="user.passwd" # 1. 进行账号相关的输入先! read -p "账号开头代码 ( Input title name, ex> std )======> " username_start read -p "账号层级或年级 ( Input degree, ex> 1 or enter )=> " username_degree read -p "起始号码 ( Input start number, ex> 520 )========> " nu_start read -p "账号数量 ( Input amount of users, ex> 100 )=====> " nu_amount read -p "密码标准 1) 与账号相同 2)乱数自订 ==============> " pwm if [ "$username_start" == "" ]; then echo "没有输入开头的代码,不给你执行哩!" ; exit 1 fi testing1=`echo $nu_amount | grep '[^0-9]' ` testing2=`echo $nu_start | grep '[^0-9]' ` if [ "$testing1" != "" ] || [ "$testing2" != "" ]; then echo "输入的号码不对啦!有非为数字的内容!" ; exit 1 fi if [ "$pwm" != "1" ]; then pwm="2" fi # 2. 开始输出账号与密码档案! [ -f "$accountfile" ] && mv $accountfile "$accountfile"`date +%Y%m%d` nu_end=$(($nu_start+$nu_amount-1)) for (( i=$nu_start; i<=$nu_end; i++ )) do account=$username_start$username_degree$i if [ "$pwm" == "1" ]; then password="$account" else password="" test_nu=0 until [ "$test_nu" == "8" ] do temp_nu=$(($RANDOM*50/32767+30)) until [ "$temp_nu" != "60" ] do temp_nu=$(($RANDOM*50/32767+30)) done test_nu=$(($test_nu+1)) temp_ch=`printf "\x$temp_nu"` password=$password$temp_ch done fi echo "$account":"$password" | tee -a "$accountfile" done # 3. 开始创建账号与密码! cat "$accountfile" | cut -d':' -f1 | xargs -n 1 useradd -m chpasswd < "$accountfile" pwconv echo "OK!创建完成!" 这支程式能够在底下连结下载: http://linux.vbird.org/download/index.php?action=download&fileid=70 |