linux批量添加账号
一些账号相关的检查工具
回到顶部pwck命令和grpck命令
回到顶部[root@study ~]# pwck user 'ftp': directory '/var/ftp' does not exist user 'avahi-autoipd': directory '/var/lib/avahi-autoipd' does not exist user 'pulse': directory '/var/run/pulse' does not exist pwck: no changes可以看到上面好多用户的家目录都不存在,由于那些账号绝大部分都是系统账号,确实不需要家目录, 所以这属于正常的错误!
相对应的群组检查可以使用grpck命令!
pwconv命令和pwunconv命令
回到顶部早期的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文件中信息本来就是同步一致的,并不会有上述的两点问题!
如果是通过手动编辑/etc/passwd文件添加账号,那么pwconv就很重要!
当然linux并不推荐直接修改编辑/etc/passwd文件,/etc/passwd文件中每个字段的修改都有对应的命令可以使用!
pwunconv命令和pwconv命令刚好相反,pwunconv命令将/etc/shadow文件的账号密码信息写回到/etc/passwd文件内, 并且删除/etc/shadow文件。
说实话这两个命令真的很无聊,完全没有存在的意义!希望永远也不要用到这两个命令!
chpasswd
回到顶部chpasswd读取的数据格式为username:password 。
例如想要更改peter的密码为123456,可以像下面这样:
[root@study ~]# echo "peter:123456" | chpasswd这样就可以更新peter的密码,chpasswd默认会读取/etc/login.defs文件内的加密算法对密码进行加密, 也可以使用-c或-e选项指定加密算法,具体可以通过--help选项查看。 其实chpasswd命令和passwd命令的--stdin选项类似,因此chpasswd命令也就变得英雄无用武之地了! 不过,在批量创建账号的shell脚本中也可以使用该命令!
批量添加账号脚本
回到顶部[root@study ~]# vim accountadd.sh #!/bin/bash # This shell script will create amount of linux login accounts for you. # 1. check the "accountadd.txt" file exist? you must create that file manually. # one account name one line in the "accountadd.txt" file. # 2. use openssl to create users password. # 3. User must change his password in his first login. # 4. more options check the following url: # http://linux.vbird.org/linux_basic/0410accountmanager.php#manual_amount # 2015/07/22 VBird export PATH=/bin:/sbin:/usr/bin:/usr/sbin # 0. userinput usergroup="" # if your account need secondary group, add here. pwmech="openssl" # "openssl" or "account" is needed. homeperm="no" # if "yes" then I will modify home dir permission to 711 # 1. check the accountadd.txt file action="${1}" # "create" is useradd and "delete" is userdel. if [ ! -f accountadd.txt ]; then echo "There is no accountadd.txt file, stop here." exit 1 fi [ "${usergroup}" != "" ] && groupadd -r ${usergroup} rm -f outputpw.txt usernames=$(cat accountadd.txt) for username in ${usernames} do case ${action} in "create") [ "${usergroup}" != "" ] && usegrp=" -G ${usergroup} " || usegrp="" useradd ${usegrp} ${username} # 新增账号 [ "${pwmech}" == "openssl" ] && usepw=$(openssl rand -base64 6) || usepw=${username} echo ${usepw} | passwd --stdin ${username} # 建立密码 chage -d 0 ${username} # 强制登入修改密码 [ "${homeperm}" == "yes" ] && chmod 711 /home/${username} echo "username=${username}, password=${usepw}" >> outputpw.txt ;; "delete") echo "deleting ${username}" userdel -r ${username} ;; *) echo "Usage: $0 [create|delete]" ;; esac done只要建立accountadd.txt文件即可,每行一个账号。 而是否需要修改密码?是否与账号相同的信息等等,可以自由选择! 若使用openssl自动猜密码时,用户的密码请由outputpw.txt去!
[root@study ~]# vim accountadd.txt std01 std02 std03 std04 std05 [root@study ~]# sh accountadd.sh create Changing password for user std01. passwd: all authentication tokens updated successfully. ...省略...
initroot编辑整理,转载请注明www.initroot.com
100次点赞
100次阅读