RHCE033--用户管理
时间:2010-09-29 来源:twenty_four
- 创建用户
- 创建工作组
- 用户管理命令
- 修改用户基础属性
- 创建和修改用户用户口令
- /etc/passwd文件
- /etc/shadow文件
- 修改工作组命令:
- 删除工作组
- /etc/group
- /etc/default/useradd
- /etc/login.defs
- /etc/skel
- 手工创建一个用户laoyou ,使得UID/GID为512、自家目录为/home/admin,加入laoyou这个组,
- 编辑/etc/passwd /etc/shadow /etc/group三个文件,添加相应用户信息
- 给用户创建和修改自家目录设置权限
- 从/etc/skel中copy初始化文件到 laoyou用户的自家目录下,以及改变文件所有者为laoyou
一、用户和工作组
如果把Linux比喻成一家公司,那么用户就是公司里的员工,工作组就是员工所在的部门。
公司的每个部门和员工都有自己的编号,在Linux中,用户的编号称为UID,工作组的编号称为
GID。Linux在认识UID与GID,在Linux中每个执行程序和文件都有标识的权限,值允许拥有相应
的权限的用户或工作组进行相应的操作!
二、创建用户和工作组
在Linux中,只有root用户才有权限使用useradd创建用户
[root@51cto ~]# useradd 51cto //创建用户51cto
创建出来的用户属性都是默认的,如下属性可以创建拥有非默认属性的用户:
useradd 的主要参数:
-c :用户注释
-d :用户自家目录路径 //默认普通用户的工作目录在/home;root用户的工作目录在/root
-m :如果用户自家目录为空,则为用户创建一个新的自家目录
-e :用户过期时间
-g :用户的GID号
-G :把用户加入到其他工作组
-p :用户密码设置,必须是加密的
-s :用户使用的shell设置,默认是bash
-u :用户UID号
如下创建一个名为“user1”的新用户,uid为505(默认是从500开始),root同时将用户
加入到“root”这个工作组中,加密密码(用单引号括起来),目录为/home/user1,注释为
"the first user" ,到20121212过期的用户 user1
[root@51cto ~]# useradd -u 505 -G root -p 'asdf454sdf4sdf5df44' -d /home/user1 -m -c
"the first user" -e 20121212 user1
[root@51cto home]# cat /etc/passwd |grep user1
user1:x:505:505:the first user:/home/user1:/bin/bash
在Linux中,只有root用户才有权限使用groupadd创建新的工作组
groupadd的主要参数:
-g :后接GID,如果不使用-o参数,则该值必须是唯一且不能为负。
-o :和-g一起使用,允许使用相同的GID
[root@51cto ~]# groupadd -g 777 51ctogroup //增加一个GID为777的工作组
三、用户管理
[root@51cto ~]# usermod -a -G 777 user1 //把user1又加入到51ctogroup工作组中
-a 表示附加的意思,查看:
[root@51cto ~]# cat /etc/group |grep 51ctogroup
51ctogroup:x:777:user1 //这里下面有具体介绍
[root@51cto ~]# usermod -u 666 -s /etc/tcsh -e 20200101 user1
//修改user1的UID为666,登陆shell为tcsh,并且用户在20200101过期
[root@51cto ~]# cat /etc/passwd |grep user1
user1:x:666:505:the first user:/home/user1:/etc/tcsh
root用户可以修改任何用户的密码,包括自身密码,不受任何限制;普通用户值可以修改自己的密码,
且该用户没有被root锁定。普通用户必须满足密码复杂性才可以修改成功,否则被拒绝。
passwd参数(修改需要root权限才行):
-d :删除用户密码
-l :锁定用户
-u :解除锁定
-x :变更密码的最大天数,后+数字
-n : 变更密码的最小天数,后+数字
-S :查询用户密码状态
[root@51cto ~]# passwd 51cto //修改51cto用户密码
Changing password for user 51cto.
New UNIX password:
BAD PASSWORD: it is WAY too short //密码复杂性不够,不过root还是可以修改
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@51cto ~]# su - 51cto //切换到51cto用户,shell必须是/bin/bash
[51cto@51cto ~]$
[51cto@51cto ~]$ cat /etc/passwd |grep 51cto
51cto:x:501:501::/home/51cto:/bin/bash
切换到root用户对51cto进行锁定:
[root@51cto ~]# passwd -l 51cto
Locking password for user 51cto.
passwd: Success
另开启终端测试:
login as: 51cto
[email protected]'s password:
Access denied
对用户51cto解锁:
[51cto@51cto ~]$ passwd -u 51cto
Only root can do that. //root才有权限修改
[51cto@51cto ~]$ su - root
Password:
[root@51cto ~]# passwd -u 51cto //解锁用户
Unlocking password for user 51cto.
passwd: Success.
另开启终端测试:
login as: 51cto
[email protected]'s password:
[51cto@51cto ~]$ //登陆成功
删除用户:
userdel 【选项】 用户名 (-r 选项使得该用户的自家目录也清除,不加的话自家目录还存在)
[root@51cto ~]# userdel -r 51cto //删除51cto用户,并清除自家目录
四、用户管理文件
在Linux系统中,系统不认识用户名,只认识UID。
用户的UID保存在/etc/passwd文件中,比如:
[root@51cto ~]# cat /etc/passwd |grep user1
user1:x:666:505:the first user:/home/user1:/etc/tcsh
上面7个属性意思如下:
用户名 :user1
口令:x
UID:666
GID:505
描述信息:the first user
用户自家目录:/home/user1
用户登陆shell:/etc/tcsh
如果要修改用户的基本属性,可以直接修改文件,但必须是root才有权限
在早起的Unix系统中,用户信息和密码存放在/etc/passwd中,但该文件对系统中所有用户
都是可读的,不安全的缘故,所以Linux才使用/etc/shadow文件保存用户信息口令,比如:
[root@51cto ~]# cat /etc/shadow |grep user1
user1:$1$mjLtSPGu$j3R4RCz5zzQ.MIFtifwvu1:14881:0:99999:7::18262:
上面9个属性意思如下:
用户名:user1
口令:$1$mjLtSPGu$j3R4RCz5zzQ.MIFtifwvu1(MD5加密过的)
口令上次改动日期:14881(表示天数,Linux以1970.1.1开始来计算)
口令变更期限限制:0 (表示任何时间都可以修改口令)
强制用户变更口令期限:99999(多少天后必须改密码,99999表示不作限制,太长了)
强制变更口令提醒:7(提前7天提醒用户改密码,99999的话就不会提醒啦)
口令过期后禁用帐号天数:一般不做设置
帐号限制日期:18262(也是以1970.1.1算起)
该文件/etc/shadow只有root可以修改,若想禁止某用户登陆,直接在“用户:”后加上*
比如,禁止user1用户登陆:
[root@51cto ~]# cat /etc/shadow |grep user1
user1:*$1$mjLtSPGu$j3R4RCz5zzQ.MIFtifwvu1:14881:0:99999:7::18262:
另开启终端测试:
在测试之前必须先把user1的登陆shell修改为/bin/bash,不然的话不禁止也是无法登陆
login as: user1
[email protected]'s password:
Access denied
把*去掉后,用户马上又可以登陆了:
login as: user1
[email protected]'s password:
Access denied
[email protected]'s password:
Last login: Tue Sep 28 21:18:34 2010 from 218.192.87.4
五、工作组群管理命令
groupmod 【参数】 组名
groupmod参数:
-g :设置工作组ID
-n :修改工作组名
[root@51cto ~]# groupmod -g 777 -n 51group 51ctogroup
//把工作组51ctogroup改名为51group,GID改为777
[root@51cto ~]# cat /etc/group |grep 51group
51group:x:777:user1
命令:groupdel 工作组名
[root@51cto ~]# groupdel 51group
六、工作组群管理文件
查看文件/etc/group的格式参数:
[root@51cto ~]# tail -2 /etc/group //查看最后两个工作组
wzp24:x:500:wzp24
user1:x:505:
属性用冒号隔开,一共4项:
工作组名称:wzp24 、user1
工作组口令标识,x表示,该口令记录在/etc/gshadow文件中
工作组的GID
工作组成员:如wzp24这个工作组有一个成员wzp24;user1没有成员
如果想添加工作组,设置好GID,添加成员,直接修改/etc/group文件就行了
七、用户和工作组规则文件
在使用useradd 和 groupadd添加用户和工作组的时候,不是每个用户属性都要列出来,
可以使用模式属性。对应的默认属性文件有两个:
[root@51cto ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100 //默认新用户的GID为100
HOME=/home //默认自家目录
INACTIVE=-1 //帐号过期几日停权
EXPIRE= //帐号停止日期
SHELL=/bin/bash //默认使用的登陆shell
SKEL=/etc/skel //新建用户的源基本文件
CREATE_MAIL_SPOOL=yes //是否为新用户创建系统邮件箱
如果想变更默认设置可以直接编辑文件,或者使用useradd -D 命令 来修改!
useradd -D [ -g group] [ -b base ] [ -s shell ] [ -f inactive ] [ -e expire ]
[root@51cto ~]# useradd -D -b /tmp/
[root@51cto ~]# cat /etc/default/useradd |grep HOME
HOME=/tmp/
[root@51cto ~]# cat /etc/login.defs (一些#注释信息被我去掉了)
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail //邮件预设目录
#MAIL_FILE .mail
# Password aging controls:
PASS_MAX_DAYS 99999 //口令需要变更的时间最大值
PASS_MIN_DAYS 0 //口令需要变更的时间最小值
PASS_MIN_LEN 5 //口令最小长度
PASS_WARN_AGE 7 //口令失效前多少天发出警告
UID_MIN 500 //预设UID最小值
UID_MAX 60000 //预设UID最大值
GID_MIN 500 //预设GID最小值
GID_MAX 60000 //预设GID最大值
可以根据需要对该文件进行修改,如增加密码最小长度等
该目录中存放着用户初始化文件,当创建新用户的时候,系统会自动把这个目录的文件copy到
用户的自家目录中。该目录下的文件都是隐藏文件,root才可以添加、删除该目录下文件。
八、深化用户管理
shell为/bin/bash。
手工添加用户laoyou的如下步骤:
[root@51cto ~]# vim /etc/passwd
[root@51cto ~]# cat /etc/passwd |grep laoyou
laoyou:x:512:512::/home/admin:/bin/bash //在文件最后一行添加此内容
[root@51cto ~]# vim /etc/shadow
[root@51cto ~]# cat /etc/shadow |grep laoyou
laoyou:!!:14876:0:99999:7::: //在文件最后一行添加,设置口令
[root@51cto ~]# vim /etc/group
[root@51cto ~]# cat /etc/group |grep laoyou
laoyou:x:512: //创建laoyou组
[root@51cto ~]# mkdir /home/admin //创建目录
[root@51cto ~]# chown laoyou:laoyou /home/admin
//使/home/admin从属于laoyou用户和laoyou组
[root@51cto ~]# passwd laoyou
Changing password for user laoyou.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@51cto ~]# cp /etc/skel/.* /home/admin/
cp: omitting directory `/etc/skel/.'
cp: omitting directory `/etc/skel/..'
cp: omitting directory `/etc/skel/.mozilla'
[root@51cto ~]# ll -a /home/admin/
total 40
drwxr-xr-x 2 laoyou laoyou 4096 Sep 28 23:19 .
drwxr-xr-x 7 root root 4096 Sep 28 23:17 ..
-rw-r--r-- 1 root root 33 Sep 28 23:19 .bash_logout
-rw-r--r-- 1 root root 176 Sep 28 23:19 .bash_profile
-rw-r--r-- 1 root root 124 Sep 28 23:19 .bashrc
[root@51cto ~]# chown -R laoyou:laoyou /home/admin/
[root@51cto ~]# ll -a /home/admin/
total 40
drwxr-xr-x 2 laoyou laoyou 4096 Sep 28 23:19 .
drwxr-xr-x 7 root root 4096 Sep 28 23:17 ..
-rw-r--r-- 1 laoyou laoyou 33 Sep 28 23:19 .bash_logout
-rw-r--r-- 1 laoyou laoyou 176 Sep 28 23:19 .bash_profile
-rw-r--r-- 1 laoyou laoyou 124 Sep 28 23:19 .bashrc
到这里就成功创建一个用户laoyou了,如果要手工删除用户就直接编辑三个文件对应条目
九、批量创建用户
批量创建100个用户ux,使得UID为100x GID为100 ,自家目录为默认目录,登陆shell为/bin/shell
[root@51cto ~]# vim useradd.sh
[root@51cto ~]# cat useradd.sh
#!/bin/bash
for i in `seq 1 100`
do
echo "u$i:x:100$i:100::/home/u$i:/bin/bash" >>/root/user1.txt
echo "u$i:1234567" >> /root/passwd1.txt //定义用户密码都是1234567
done
newusers < /root/user1.txt //用户列表
chpasswd < /root/passwd1.txt //用户密码
[root@51cto ~]# chmod +x useradd.sh
[root@51cto ~]# sh useradd.sh
查看三个文件如下:
[root@51cto ~]# cat /etc/passwd
u1:x:1001:100::/home/u1:/bin/bash
u2:x:1002:100::/home/u2:/bin/bash
u3:x:1003:100::/home/u3:/bin/bash
u4:x:1004:100::/home/u4:/bin/bash
…...
u96:x:10096:100::/home/u96:/bin/bash