目录
一、基本概念
1.用户账号
在Linux操作系统中,根据系统管理的需要将用户账号分为不同的类型,主要包括超级用户、普通用户和程序用户,各类型拥有的权限,担任的角色也不相同。
- 超级用户:root 用户是Linu 操作系统中默认的超级用户账号,对本主机拥有至高无上的权限,类似于Windows操作系统中的Administrator 用户只有当进行系统管理、维护任务时才建议使用root 用户登录系统,日常事务处理建议只使用普通用户账号。
- 普通用户:普通用户账号需要由 root 用户或其他管理员用户创建,拥有的权限受到一定限制,一般只在用户自己的宿主目录中拥有完整权限。
- 程序用户:在安装Linux 操作系统及部分应用程序时,会添加一些特定的低权限用户账号这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运行,如 bin、daemon、ftp、mail 等。
2.组账号
基于某种特定联系(如都需要访问 FTP 服务)将多个用户集合在一起,即构成一个用户组,表示该组内所有用户的账号称为组账号。每一个用户账号至少属于一个组,这个组称为该用户的基本组(或私有组),若该用户同时还包含在其他的组中,则这些组称为该用户的附加组(或公共组)。例如,用户 2hangsan 是技术部的员工,与部门内的其他同事同属于基本组 tech,后来因工作安排需要,公司将 zhangsan 加入邮件管理员组 mailadm,则此时用户 zhangsan 同时属于 tech,mailadm 组tech 组是其基本组账号,而 mailadm 组是其附加组账号。
对组账号设置的权限将适用于组内的每一个用户账号。
3.UID和GID号
Linux 操作系统中的每一个用户账号都有一个数字形式的身份标记,称为 UD (User iDentity,用户标识号),对于操作系统核心来说,UD 是区分用户的基本依据,原则上每个用户的 UD 号应该是唯一的。root 用户账号的 UD 号为固定值 0,而程序用户账号的 UD 号默认为 1~499,500~60000的UID 号默认分配给普通用户使用。
与UD 类似,每一个组账号也有一个数字形式的身份标记,称为GD (Group lDentity,组标识号)。root 组账号的GID 号为固定值0,而程序组账号的GID 号默认为1-499,500~60000的GID 号默认分配给普通组使用。
二、用户账号管理
1.用户账户文件。
- 与用户账户相关的配置文件主要有两个,分别是 /etc/passwd 和 /etc/shadow。
(1)passwd 用户名称配置文件的格式。
[root@rhel1 ~]# head -2 /etc/passwd 查看前两行
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
- 第1字段:用于账户的名称,也是登录系统时使用的识别名称。
- 第2字段:经过加密的用户密码字串,或者密码占位符“x”。
- 第3字段:用户账号的UID号。
- 第4字段:所属基本组账户的GID号。
- 第5字段:用户全名,可填写与用户相关的说明信息。
- 第6字段:宿主目录,即该用户登录后所在的默认工作目录。
- 第7字段:登录Shell等信息,用户完成登录后使用的Shell。
(2)shadow用户密码配置文件的格式。
[root@rhel1 ~]# head -2 /etc/shadow 查看前两行
root:$6$wQspdptw56NkbEow$e807wPSKI0PmwUV/VfszQSoMZ0aaQGdXTtPCxfIsqm43EbKaVHIrS6lfRkOMyp.2MRaB4rKpDBLAV72HDf14a.::0:99999:7:::
bin:*:18367:0:99999:7:::
- 第1字段:用户账户名称。
- 第2字段:使用SHA-512加密的密码字串信息,“ * ”或“!!”时表示此用户不能登录到系统。
- 第3字段:上次修改密码的时间,表示从1970年01月01日算起到最近一次修改密码时间隔的天数。
- 第4字段:密码的最短有效天数,自本次修改后,必须至少经过该天数才能再次修改密码,默认为0 ,表示不进行限制。
- 第5字段:密码的最长有效天数,自本次修改后,经过该天数以后必须再次修改密码,默认为99999 ,表示不进行限制。
- 第6字段:提前多少天警告用户密码将过期,默认为7。
- 第7字段:在密码过期之后多少天禁用此用户。
- 第8字段:账号失效时间,此字段指定了用户作废的天数,默认为空,表示账号永久可用。
- 第9字段:保留字段,目前没有特定用途。
(3)单独获取用户信息,命令如下。
[root@rhel1 ~]# getent passwd root 获得root信息
root:x:0:0:root:/root:/bin/bash
(4)判断一个用户是否存在,可以使用“id 用户名”命令。
[root@rhel1 ~]# id tom
id: “tom”:无此用户
2.管理用户
(1)创建tom用户。
[root@rhel1 ~]# useradd -d /tom -s /sbin/nologin \
> -c "Im tom" -u 2000 -g root -G users tom
- -d:指定用户的家目录,默认为/home/用户名。
- -m:创建家目录,这是默认选项,一般不用指定。
- -M:不为用户创建家目录,即创建好用户之后没有“/home/用户名”。
- -s:指定用户的shell,默认为/bin/bash。
- -c:用来指定备注信息,不指定则为空。
- -u:指定用户的uid。
- -g:默认情况下,创建用户时会创建一个同名组。用-g选项可以指定组。
- -G:指定附属组,即把用户加人一个额外的组,此时 tom属于两个组如果同时指定-g和-G选项,如-g root-G users,这里的意思是不再为tom创建命名组,直接加入root组,同时再额外地加入users组,此时tom 就属于两个组,即root和users组。
(2)没设置密码的用户是处于被锁定状态,此用户不能登录。
[root@rhel1 ~]# passwd ‐S tom
tom LK 2023‐03‐08 0 99999 7 ‐1 (密码已被锁定。)
(3)给tom用户设置密码。
[root@rhel1 ~]# passwd tom
更改用户 tom 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
(4)tom用户已经有了密码,但是现在用户仍然是不能登录的。
[root@rhel1 ~]# su - tom 登录测试
This account is currently not available.
[root@rhel1 ~]#
-
这是因为tom用户的shell被设置为了/sbin/nologin,任何用户的shell 被设置为/sbin/nologin,则此用户是不能登录系统的。那么,创建此用户的意义何在?很多时候我们搭建了服务,如用samba共享了一个目录,希望其他主机来访问此共享目录时不能以匿名用户访问,必须输入关的用户名和密码,但又不想让他能登录系统,这种情况下就可以用到 了。
(5)简单的创建、修改、删除用户账户。
[root@rhel1 ~]# useradd zhangsan 创建zhangsan用户
[root@rhel1 ~]# passwd zhangsan 设置zhangsan用户的密码
[root@rhel1 ~]# userdel -r zhangsan 删除zhangsan用户
3.修改用户属性
(1)把tom的shell改成/bin/bash,并把备注信息改成hello tom。
[root@rhel1 ~]# usermod -s /bin/bash -c "Hello Ton" tom 修改
[root@rhel1 ~]# grep tom /etc/passwd 查看
tom:x:2000:0:Hello Ton:/tom:/bin/bash
- -c:修改注释信息。
- -s:修改shell信息。
- -d:修改家目录。
- -L:锁定用户。
- -U:解锁用户。
(2)锁定用户。
[root@rhel1 ~]# usermod -L tom 锁定
[root@rhel1 ~]# passwd -S tom 查看结果
tom LK 2023-12-06 0 99999 7 -1 (密码已被锁定。)
-
锁定用户,使用root用户是可以用su命令切换过去的,但是使用其他用户是不能用su命令切换过去的。
(3)解锁用户。
[root@rhel1 ~]# usermod -U tom 解锁
[root@rhel1 ~]# passwd -S tom 查看结果
tom PS 2023-12-06 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
(4)修改用户的家目录。
[root@rhel1 ~]# grep tom /etc/passwd 查看tom家目录
tom:x:2000:0:Hello Ton:/tom:/bin/bash
[root@rhel1 ~]# usermod -d /home/tom tom 修改tom家目录
[root@rhel1 ~]# grep tom /etc/passwd 查看修改结果
tom:x:2000:0:Hello Ton:/home/tom:/bin/bash
(5)可以看到,tom用户的家目录已经设置为了/home/tom。在第二个终端中测试,这里显示无法切换到/home/tom。
[bdqn@rhel1 ~]$ su - tom
密码:
su: 警告:无法更改到 /home/tom 目录: 没有那个文件或目录
(6)我们只要把原来的家目录拷贝过去即可,在第一个终端中执行如下命令。
[root@rhel1 ~]# cp -a /tom/ /home/ 拷贝
[root@rhel1 ~]# ls /home/ 查看
as bdqn tom
(7)再回到第二个终端测试。
[bdqn@rhel1 ~]$ su - tom
密码:
[tom@rhel1 ~]$ pwd
/home/tom
4.管理组
(1)创建组和加入组。
[root@rhel1 ~]# gpasswd -a bdqn root 把bdqn加到root组里面
[root@rhel1 ~]# groups bdqn 查看bdqn已加入root组
[root@rhel1 ~]# gpasswd -d bdqn root 把bdqn从root组删除
[root@rhel1 ~]# grep "root" /etc/group 查看root组有哪些用户
[root@rhel1 ~]# groupadd bob 创建bob组
[root@rhel1 ~]# grep bob /etc/group 查看bob信息
[root@rhel1 ~]# groupdel bob 删除bob组
[root@rhel1 ~]# cat /etc/group 查看所有组
[root@rhel1 ~]# w 查询当前主机和用户登录情况
(2)创建组时,可以通过-g选项来指定gid信息。例如,创建bob组,组id设置为3000。
[root@rhel1 ~]# groupadd -g 3000 bob
[root@rhel1 ~]# grep bob /etc/group
bob:x:3000:
5.用户的密码策略
-
很多人是没有修改密码的习惯的,设置了一个密码就一直使用下去,这样会带来一定的安全隐患。所以,为了提高安全性,需要设置一定的密码策略,使用的命令是chage。
(1)-l:列出用户的信息。
[root@rhel1 ~]# chage -l tom
最近一次密码修改时间 :12月 07, 2023
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
(2)-d:用于更改最近一次修改密码的日期,如改成2023年3月20日。
[root@rhel1 ~]# chage -d 2023-12-11 tom
[root@rhel1 ~]# chage -l tom
最近一次密码修改时间 :12月 11, 2023
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
(3)E:设置此账户什么时候过期,如果设置2023年12月6日过期。
[root@rhel1 ~]# chage -E 2023-12-6 tom
[root@rhel1 ~]# chage -l tom
最近一次密码修改时间 :12月 11, 2023
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :12月 06, 2023
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
- 账户过期是不能登录系统的。
(4)-E -1:设置账户为永不过期。
[root@rhel1 ~]# chage -E -1 tom
[root@rhel1 ~]# chage -l tom
最近一次密码修改时间 :12月 11, 2023
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
(5)用户策略设置。
[root@rhel1 ~]# chage -m 5 -M 30 -W 6 -I 3 tom
[root@rhel1 ~]# chage -l tom
最近一次密码修改时间 :12月 11, 2023
密码过期时间 :1月 10, 2024
密码失效时间 :1月 13, 2024
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :5
两次改变密码之间相距的最大天数 :30
在密码过期之前警告的天数 :6
- -M:最大使用天数,过了这个天数还没有修改密码,账户将被锁定。
- -m:最小使用天数,两次修改密码的间隔不得低于这个天数,不能今天改了明天再改回去。
- -W:达到最大使用天数之前,提前几天警告。如同房贷,提前一周短信通知用户银行卡余额要足够。
- -I:达到最大使用天数之后还没有修改密码,不会立即锁定账户,而是会给几天的缓冲期,但是在缓冲期内不管何时登录系统,都会强迫你修改密码。如果在缓冲期内也没有修改密码,则会锁定账户。
(6)设置下次登录强制修改密码。
[root@rhel1 ~]# chage -d 0 tom
(7)清除某用户的密码。
[root@rhel1 ~]# passwd -d tom 清空tom密码
清除用户的密码 tom。
passwd: 操作成功
[root@rhel1 ~]# passwd -S tom
tom NP 2023-12-07 5 30 6 3 (密码为空。)

被折叠的 条评论
为什么被折叠?



