管理用户和组账户
用户和组的关系及类型
每个账户有一个唯一的UID
每个组也有一个唯一的GID
多个账户可以属于同一个组
用户和组的相关文件详解
和账户相关文件
/etc/passwd、/etc/shadow
和组相关文件
/etc/group、/etc/gshadow
账户宿主(家)目录中文件来源
新建用户帐号时,从 /etc/skel 目录中复制而来
默认定义账户的属性文件
/etc/login.defs
用于保存用户的帐号基本信息
文件位置:/etc/passwd
每一行对应一个用户的帐号记录
[root@localhost ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
字段1:用户帐号的名称
字段2:密码占位符“x”
字段3:用户帐号的UID号(区分管理员0与普通用户)
字段4:所属基本组帐号的GID号
字段5:用户全名
字段6:宿主目录
字段7:登录Shell信息
用户操作
用户账户:
(管理员) 超级用户root
(非管理员)程序用户nologin
普通用户:可以通过shell登录
UID (User Identity,唯一的用户标识号)
超级用户root的UID为0
程序用户的UID1-499
普通用户的UID大于等于500
用于保存密码字串、密码有效期等信息
文件位置:/etc/shadow
每一行对应一个用户的密码记录
[root@localhost ~]# tail -2 /etc/shadow
tcpdump:!!:17858::::::
u1:$6$JbFqCFLa$UxqyL20WGTmsGQdErwt9iXQkelcGLXtQ3C9KML0MytI/894vjeM28cD.rHSyWeAwipLijQgZQpGFojdgURI52/:17867:0:99999:7:::
字段1:用户帐号的名称
字段2:加密的密码字串信息
字段3:上次修改密码的时间
字段4:密码的最短有效天数,默认值为0
字段5:密码的最长有效天数,默认值为99999
字段6:提前多少天警告用户口令将过期,默认值为7,提前一周
字段7:在密码过期之后多少天禁用此用户(默认0)
字段8:帐号失效时间,默认值为空
字段9:保留字段(未使用)
加密算法
1 MD5
2a Blowfish
5 SHA-256
6 SHA-512
组操作
用户和组账户查询
/etc/group文件
组帐号:
主要组(私有组)
次要组(附属组)
GID: (Group Identify,组标识号)
用户至少属于一个组(主要组)
默认情况下:创建用户时,会自动创建一个组,组名和用户名一样,这个组就是这个用户的主要组
Linux组帐号
主要组(私有组)
与用户相关的默认组,在/etc/passwd文件的第四个字段定义
次要组(附属组)
用户可以同时属于其他的组,在/etc/group文件的第四个字段定义
用户的主要组的名称和GID相关
控制用户初始配置文件
/etc/skel/*文件
新建用户帐号时,复制到用户宿主目录中
主要控制用户初始配置文件
.bash_profile:用户每次登录时执行
.bashrc:每次进入新的Bash环境时执行
.bash_logout:用户每次退出登录时执行
/etc/profile 所有用户每次登录时会执行
保存组帐号的密码信息
/etc/gshadow文件
/etc/gshadow文件的应用极少,知道有这个文件即可
对账户初始的属性设置
/etc/login.defs文件
设置普通用户的UID和GID范围等
添加与删除用户
useradd命令
格式:useradd [选项]... 用户名
常用命令选项
-u:指定 UID 标记号
-d:指定宿主目录,缺省为 /home/用户名
-e:指定帐号失效时间
-g:指定用户的基本组名(或GID号)
-G:指定用户的附加组名(或GID号)
-M:不为用户建立并初始化宿主目录
-s:指定用户的登录Shel
useradd命令在后台到底做了哪些工作
passwd命令
格式:passwd [选项]... 用户名
常用命令选项
-d:清空用户的密码,使之无需密码即可登录
-l:锁定用户帐号
-S:查看用户帐号的状态(是否被锁定)
-u:解锁用户帐号
--stdin:接收标准输入作为密码
-n:密码最少失效期
-x:密码最长有效期
root用户可以修改所有用户密码,不要求复杂性
普通用户只能改自己的密码,要求复杂性
普通用户修改密码时先输入当前密码,管理员不需要,可以直接修改
[root@localhost ~]# echo "123" | passwd --stdin u4 Changing password for user u4. passwd: all authentication tokens updated successfully.
userdel命令
格式:userdel [-r] 用户名
添加 -r 选项时,表示连用户的宿主目录一并删除
usermod命令
格式:usermod [选项]... 用户名
常用命令选项
-l:更改用户帐号的登录名称
-L:锁定用户账户
-U:解锁用户账户
以下选项与useradd命令中的含义相同
-u、-d、-e、-g、-G、-s
修改用户密码相关参数
chage命令
格式:chage [选项]... 用户名
常用命令选项
-l:列出密码时效的具体信息
添加、修改和删除组
groupadd命令
格式:groupadd [-g GID] 组帐号名
groupdel命令
格式:groupdel 组帐号名
groupmod命令
用途:设置组名和组id
格式:groupmod [选项]... 组帐号名
常用命令选项
-n:修改组名
-g:修改组id
gpasswd命令
用途:设置组帐号密码(极少用)、添加/删除组成员
格式:gpasswd [选项]... 组帐号名
常用命令选项
-a:向组内添加一个用户
-d:从组内删除一个用户成员
-M:定义组成员列表,以逗号分隔(重置)
先创建组,在创建用户
id命令
用途:查询用户身份标识
格式:id [用户名]
finger命令
用途:查询用户帐号的详细信息
格式:finger [用户名]
chfn命令
用途:修改用户的备注信息,/etc/passwd第5字段
who、w、users命令
用途:查询已登录到主机的用户信息
groups命令
用途:查询用户所属的组
本章总结
弄清/etc/passwd /etc/shadow /etc/group 等文件中重要字段的意义
熟悉useradd、usermod、passwd、groupadd、groupmod等命令和重要选项的使用
掌握常用查询用户信息命令
练习
验证一:
将/etc/passwd的字段2删除
用户密码为空
登录时不输入密码
本地登录,远程登录,哪一种可以用空密码登录?
本地登录可以,远程登录不可以
验证二:
将/etc/shadow的字段2删除
是不是空密码?
是的
练习一:
创建目录/cis/ceo和/cis/soft,分别用于保存个项目组中用户帐号的宿主目录;
为两个项目组添加组帐号ceo、soft,GID号分别为10001、10002;为技术部添加组帐号tech_new,GID号为2000;
添加2个用户,分别为b100、b200,要求他们的基本组是ceo,附加组是tech_new,宿主目录均使用/cis/ceo目录中与帐号同名的文件夹(例如b100用户的宿主目录/cis/ceo/b100);其中b200用户帐号设置2012-12-31日后失效;
添加2个用户,分别为a100、a200,要求他们的基本组是soft,附加组是tech_new;宿主目录均使用/cis/soft目录中与帐号同名的文件夹(例如a1用户的宿主目录/cis/soft/a100) ;其中a200用户帐号登录的shell为/bin/ksh
所有新建用户密码都是123456;
[root@dbserver02 ~]# mkdir -p /cis/ceo /cis/soft [root@dbserver02 ~]# groupadd -g 10001 ceo [root@dbserver02 ~]# groupadd -g 10002 soft [root@dbserver02 ~]# groupadd -g 2000 tech_new [root@dbserver02 ~]# useradd -g ceo -G tech_new -d /cis/ceo/b100 b100 [root@dbserver02 ~]# useradd -g ceo -G tech_new -d /cis/ceo/b200 -e 2012-12-21 b200 [root@dbserver02 ~]# useradd -g soft -G tech_new -d /cis/soft/a100 a100 [root@dbserver02 ~]# useradd -g soft -G tech_new -d /cis/soft/a200 -s /bin/ksh a200 [root@dbserver02 ~]# passwd a100 Changing password for user a100. New password: BAD PASSWORD: it is too simplistic/systematic BAD PASSWORD: is too simple Retype new password: passwd: all authentication tokens updated successfully.
练习二:
1)新建2个组group1,group2
groupadd -g group1
groupadd -g group2
2)更改组group2的GID为103,更改组名为grouptest
Groudmod -g 103 -n grouptest group2
3)删除组grouptest
groupdel grouptest
4)新建用户user1,指定UID为777,目录为/opt/user1,主要组为group1,次要组为root,指定shell为/bin/bash
useradd -u 777 -d /opt/user1 -g group1 -G root -s /bin/bash user1
7)使用usermod命令修改用户user1的个人说明为This is a test
usermod -c "This is a test" user1
8)修改用户user1密码过期时间为2018-07-27
usermod -E 2018-07-27 user1
9)更改用户user1的密码为111111,加锁用户user1并查看/etc/shadow,用户user1通过ssh登录,解锁用户user1,再通过ssh登录.
echo “111111” | passwd ---stdiu user1
passwd -l user1
tail -1 /etc/shadow
passwd -u user1
10)更改用户主目录/home/user1为/home/user11
usermod -d /home/user11
11)将root更改为csh,并查看结果,并将root改为bash
usermod -s /bin/csh root
usermod -s /bin/bash root
14)列出用户user1的UID,GID等
id user1
15)增加用户user3,增加组testgroup,将root,user1,user3加入到testgroup
useradd user3
groupadd testgroup
gpasswd -a root testgroup
gpasswd -a user1 testgroup
gpasswd -a user3 testgroup
group testgroup
16)使用passwd给user1用户密码锁定,用passwd查看user1密码锁定信息,最后用passwd给用户user1解锁
passwd -l user1
passwd -S user1
passwd -u user1
17)创建一个用户mandriva,其ID号为2002,基本组为distro(组ID为3003),附加组为linux
useradd -U 2002 -g distro -G linux mandriva
18)创建一个用户fedora,其全名为Fedora Community,默认shell为tcsh
useradd -s /bin/tcsh fedora
usermod -c "Fedora Community" fedora
19)修改mandriva的ID号为4004,基本组为linux,附加组为distro和fedora
usermod -u 4004 -g linux -G distro,fedora mandriva
20)给fedora加密码,并设定其密码最短使用期限为2天,最长为50天。
passwd fedora
passwd fedora -m 2 -M 50
21)将mandriva的默认shell改为/bin/bash
usermod -s /bin/bash mandriva
22) 添加系统用户hbase,且不允许其登陆系统。
useradd -r -s /sbin/nologin hbase