Linux批量添加用户和组shell脚本

最近在定制ISO的时候,有个需求是特定的项目用特定的用户去运行,取消root权限。这样就需要根据项目默认创建一批用户。于是写了个简单的脚本在系统安装完成后自动添加用户

简单例子

umask 0002
 
#批量创建用户组
for groups in aa bb cc dd
do
groupadd $groups
done
 
#批量创建相同用户组的用户
 
for users in aa bb
do
useradd -g aa $users
done
useradd -g cc cc
useradd -g dd dd

例子

例子:让系统自动添加a b c d 四个用户,并且密码和用户名同名,脚本如下:
#!/bin/bash
#自动添加用户和密码,且同名
for UU in a b c d
do
useradd $UU
echo $UU | passwd --stdin $UU
done
自动添加a b c d 四个用户,并且密码都是123:
#!/bin/bash
#自动添加用户和密码,且密码都是123
for UU in a b c d
do
useradd $UU
echo 123 | passwd --stdin $UU
done
如何给已有的用户改密码?
echo “newpassword” | passwd –stdin username
一:建立要添加用户列表的文件
#ee username.list
usr1
usr2
usr3
保存退出
二:写shell脚本实现自动添加用户(密码和用户名一样)
#ee useradd.sh
#!/bin/sh
for USER in $(cat username.list)
do
mkdir /home/$USER
echo $USER | pw useradd $USER -h 0
HOME=/home/$USER
done
保存退出
#chmod a+x haha.sh
#./haha.sh
注释:echo $USER | pw useradd $USER -h 0中的
第一个$USER是用户密码($USER就是usrname.list里面的内容)
第二个$USER是用户名

例子

newusers+chpasswd批量添加用户

1、首先我们创建用户文件和密码文件;

我们要创建包含新用户的文件userfile.txt ;另一个是为新添加的用户设置密码的userpwdfile.txt;

[root@localhost ~]# touch userfile.txt
[root@localhost ~]# touch userpwdfile.txt

然后用文本编辑器打开文件userfile.txt,添加如下内容;

win00:x:520:520::/home/win00:/sbin/nologin
win01:x:521:521::/home/win01:/sbin/nologin
win02:x:522:522::/home/win02:/sbin/nologin
win03:x:523:523::/home/win03:/sbin/nologin
win04:x:524:524::/home/win04:/sbin/nologin
win05:x:525:525::/home/win05:/sbin/nologin
win06:x:526:526::/home/win06:/sbin/nologin
win07:x:527:527::/home/win07:/sbin/nologin
win08:x:528:528::/home/win08:/sbin/nologin
win09:x:529:529::/home/win09:/sbin/nologin

userfile.txt 文件内容格式和 /etc/passwd 的格式是一样的,必须严格按照/etc/passwd 的格式来书写;上面所添加的用户都不能登录系统,但完全能用于ftp登录,但您得在相应ftp服务器的配置文件中打开让本地用户有读写权限;如果您想让上 面的部份用户可以登录系统,可以把SHELL类似改一改,比如改成/bin/bash ;

我们再来书写新增用户的密码文件userpwdfile.txt内容;这个文件的内容中的用户名要与 userfile.txt用户名相同且严格按照“用户名:密码”的格式来写,一个用户一行;也就是说我们先是添加了win00到win09的用户,现在要为这些用户更新密码;比如下面的;

win00:123456
win01:654321
win02:123321
win03:qweewq
win04:google
win05:adadwc
win06:wsscee
win07:xxec32
win08:543wew
win09:3ce3wf

2、用newusers批量添加用户,此时用户是没有密码的

[root@localhost ~]# newusers userfile.txt

2、执行命令/usr/sbin/pwunconv,将/etc/shadow产生的shadow密码解码,然后回写到/etc/passwd中, 并将/etc/shadow的shadow密码栏删掉。这是为了方便下一步的密码转换工作,即先取消shadow password功能,关闭影子文件。

[root@localhost ~]# pwunconv

3、 用chpasswd批量修改密码
[root@localhost ~]# chpasswd < userpwdfile.txt

4、最后不要忘了恢复影子文件,保证安全,您可以通过下面的命令来映射到 /etc/shadow文件名

[root@localhost ~]# pwconv

时间: 2024-10-31 20:54:06

Linux批量添加用户和组shell脚本的相关文章

Linux批量添加用户和组的命令

最近在定制ISO的时候,有个需求是特定的项目用特定的用户去运行,取消root权限.这样就需要根据项目默认创建一批用户.于是写了个简单的脚本在系统安装完成后自动添加用户 umask 0002   #批量创建用户组 for groups in aa bb cc dd do groupadd $groups done   #批量创建相同用户组的用户   for users in aa bb do useradd -g aa $users done useradd -g cc cc useradd -g

linux中shell批量添加用户和设置随机密码脚本

有一个朋友问我如何批量创建用户和设置密码 ,我就简单给他写了两个脚本,让他自己参考下并自己根据实际情况进行修改,毕竟他需要的用户名和密码都是实际生产环境的. 这里分两种情况,一种是测试for循环批量添加用户,一个是根据实际生产环境进行批量添加.分别写一下案例如下: 1,for添加指定类型用户以及设置随机密码. 脚本作用:批量添加user1-10用户并设置随机8位数随机密码 #!/bin/bash #test add user and set passwd for n in `seq 10` do

批量添加用户的shell脚本

题目要求:通过shell编程,实现批量添加用户. 保存为任意文件名:给x权限 不加任何参数,则为添加user1.user2.user3....user10,密码=用户名 加参数例:command -a test 20  命令 -a添加 test是用户头 20是添加数量(一次添加最多不得大于100个,下面代码可以自己改) command -d test 删除系统中用户名以test开头的,后跟数字的用户名,不加test,则默认删除user1.user2.user3...这类用户...慎用... #!

linux下使用adduser与useradd命令批量添加用户

在linux下添加用户的命令有 adduser与useradd ,这两个命令有些不同 .下面结合批量添加用户来说明. 一.adduser批量添加用户        使用adduser时,创建用户的过程更像是一种人机对话,系统会提示你输入各种信息,然后会根据这些信息帮你创建新用户.这样我们没有必要知道那么多的参数,一样可以达到自定义添加用户. 步骤如下: (1)建立用户名列表文件username.txt stu1 stu2 stu3 stu4 stu5 stu6 (2)批量添加的脚本文件 ###在

linux系统中使用adduser与useradd命令批量添加用户

adduser - 添加用户账号,与useradd是同一命令.需要root权限才能执行(有root权限). 在使用adduser命令时,它会添加这个名,并创建和用户名名称相同的组名,并把这个用户名添加到自己的组里去,并在/home目录想创建和用户名同名的目录,并拷贝/etc/skel目录下的内容到/home/用户名/的目录下,并提示输入密码,并提示填写相关这个用户名的信息. 在使用命令useradd时,它会添加这个用户名,并创建和用户名相同的组名,但它并不在/home目录下创建基于用户名的目录,

awk-linux 脚本 批量添加用户

问题描述 linux 脚本 批量添加用户 ! /bin/sh i=1 awk 'BEGIN{FS=":";}{print$3}'/etc/passwd>uid_list temp='tail -1 uid_list' while[$i -le 100] do mkdir /home/test/student$[i] temp=$(($i+1)) echo "student$[i]:x:${temp}:100:student${i}:/home/test/student$

Linux正则表达式,用户、组管理的入门知识

Linux基础-正则表达式 正则表达式简单来说就是一种行字符串处理的方式,通过一些特殊符号的辅助,可达到搜索.删除.替换等某些特定字符串的处理方式 通配符(Globbing) 通配符与元字符类似,通配符主要用于文件名的匹配,而元字符则主要用在字符串的匹配上: 下面介绍几种常用的通配符: * 表示匹配任意位数的任意字符 ? 表示匹配一位任意字符 ^ 表示取反,不包含的意思 [] 表示此区间内的任意一个字符 {} 表示一种集合 \ 转义字符,使具有特殊意义的字符失去原有意义 | 表示'或',匹配一组

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

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

linux如何在终端里输入shell脚本?

问题描述 linux如何在终端里输入shell脚本? 大家在公司里工作时写shell是在字符界面还是在图形界面的终端里写?我在图形界面的终端里写每写完一个命令就按回车然后命令就会执行我看其他人写的shell脚本写了好多行那么如何才能写很多行的脚本而不会每写一行换行按回车时就执行? 解决方案 http://blog.chinaunix.net/uid-20328094-id-95121.html 解决方案二: http://fanqiang.chinaunix.net/program/shell/