赞
踩
因为不同的服务使用不同的用户来管理更加安全;并且使用多用户,能够让系统的运行效率更高;并且有利于系统的权限分配和管理
在系统内部,通过给每一个用户分配一个唯一标识号(用户ID或UID)来区分不同的用户,而用户名是为了方便我们使用而产生的。我们使用用户账户时,通常会为其分配一个密码,用于登录时证明是实际的授权用户。
用户有三种主要类型:超级管理员、系统用户和普通用户。
可以使用id
命令显示当前登录用户的信息。
[root@1060a ~]# id
用户id=0(root) 组id=0(root) 组=0(root)
组是用户的集合。组可用于向一组用户授予文件访问权限,而非仅仅向一共用户授予访问权限。在系统内部通用通过唯一标识号(组ID或GID)来区分不同的组。组名称是为了方便用户使用。
对于一个用户来说用户组可以分为主要组(所属组)和补充组(附加组)。
私有组(所属组):在创建用户时,如果不指定用户的用户组,系统会创建一个与用户名相同的用户组,这个用户组就是这个用户的私有组。
附加组(附属组):一个用户可以属于多个附加组,除了用户的稀有组,其他的用户组就是该用户的附属组。
在id
命令显示结果中,组ID
显示是私有组,组
显示是附加组
系统中跟用户相关的文件:/etc/passwd
,/etc/shadow
/etc/passwd
:用户账号文件,存储了所有用户的基本信息,所有用户对该文件都有读的权限。每行用户信息用:
划分为7个字段。
root:x:0:0:root:/root:/bin/bash
用户名:密码占位符:UID(用户ID):GID(组ID):描述信息:家目录:默认Shell
用户名:该账户的用户名。
密码占位符:表示该用户登录需要验证密码。将此处x删除则登录不需要密码.
UID:该账户的用户ID。
GID:该用户的组ID。
GECOS:用户在登录界面的名称。
家目录:存放该用户的相关数据,用户登录系统后的默认工作目录。
默认Shell:用户登录的默认shell程序,会在登录的时候运行/bin/bash。如果不想让用户进行交互式登录,该处是使用/sbin/nologin。
当使用/sbin/nologin只是无法登录系统,并不是该用户无法使用系统。
/etc/shadow
:保存用户的密码信息,并且是加密的密码,仅有root用户可以查看和修改。
root:XXXX:19663:0:90:7::: \\加密密码使用XXXX来代替 用户名:密码密文:密码最后一次修改时间:密码最短使用时间:密码最长有效时间:警告时间:锁定时间:密码过期时间:预留 (1)用户名:该账户的用户名。 (2)密码密文:经过加密后的密码,当此处为`!!`时,表示该用户没有设置过密码。当此处为空时,表示密码被删除了。 加密密码格式:机密密码字段中存储了三段信息:所用哈希算法,salt及加密哈希值。每段信息使用`$`分隔。 $6$3xpx4JkWVP9kEdFM$BovuOhOI.6sENI0A3YlEQAtIKroa9NfvH9du12noXyyTtDZfQfYycZfgc/8K/9J2E/Vxg.T/TvK9LIcjSx2YU/ (1)密码加密的哈希算法。数字6表示SHA-512哈希算法,1表示MD5哈希算法,5表示SHA-256哈希算法。 (2)用于加密密码的salt。 (3)用户密码的加密哈希值。salt和未加密密码组合并加密,生成加密的密码哈希值。 密码验证方式 用户尝试登录时,系统在 /etc/shadow 中查询用户的条目,将用户的 salt 和键入的未加密密码组合,再使用指定的哈希算法加密。如果结果与已加密哈希匹配,则用户键入了正确的密码。如果结果与已加密密码不符,则用户键入了错误的密码,登录尝试也会失败。这种方式允许系统判断用户是否键入了正确的密码,同时又不以用于登录的密码形式来存储密码。 (3)密码最后一次修改时间:其设置为自1970年1月1日起的天数。19663表示改账户在1970年1月1号周的第19571天修改了密码。 root 账号在 1970 年 1 月 1 日之后的第19663天修改的 root 用户密码。 那么,到底19663代表的是哪一天呢?可以使用如下命令进行换算: [root@1060a ~]# date -d '1970-01-01 19663 days' 2023年 11月 02日 星期四 00:00:00 CST 可以看到,通过以上命令,即可将其换算为我们习惯的系统日期。 (4)密码最短使用时间:自用户上次修改密码之后可以再次修改的最短时间。该字段用于防止用户频繁的修改密码。 (5)密码最长有效时间:自用户上次修改密码之后,可以不修改密码的最长时间。 (6)警告时间:当用户在截止时间之前登录达到改天数是,会受到密码过期的警告。 (7)锁定时间:在密码过期之后,在该时间内还可以进行登录。一旦超过该时间,账户就会被锁定。 (8)密码过期时间:设定值也是从1970 年 1 月 1 日起的天数。 (9)暂时没有任何用处。
系统中跟用户组相关的配置文件:/etc/group
,/etc/gshadow
/etc/group
:用户组文件,即用户组的所有信息都存放在此文件中。
root:x:0:
用户组名:密码占位符:GID:组内用户
(1)用户组名:用户组的名称。
(2)密码占位符:该字段始终应为 X。
(3)GID:组ID
(4)组内用户:该字段仅会列出把该组作为补充组的用户。如果用户的主要组是改组的话,不会出现在该字段。
/etc/gshadow
:存储用户组密码信息的文件,仅root用户可以读取和修改。
root:::
用户组名:组密码:组管理员:组内成员
(1)用户组名:用户组的名称
(2)组密码:经过加密后的密码
(3)组管理员:组管理员可以使用gpasswd命令进行组管理
(4)组内成员:将组作为附属组的成员
作用:用于创建用户。
语法:
useradd [options] username 常用选项: -u 指定用户的UID useradd -u uid username eg: [root@1060a ~]# useradd -u 1100 user1 [root@1060a ~]# id user1 用户id=1100(user1) 组id=1100(user1) 组=1100(user1) -g 指定用户的私有组 useradd -g groupname username eg: [root@1060a ~]# useradd -g user1 user2 [root@1060a ~]# id user2 用户id=1101(user2) 组id=1100(user1) 组=1100(user1) -G 指定用户的附加组 useradd -G groupname username eg: [root@1060a ~]# useradd -G user1 user3 [root@1060a ~]# id user3 用户id=1102(user3) 组id=1102(user3) 组=1102(user3),1100(user1) -c 指定用户GECOS信息 useradd -c "字符串" username eg: [root@1060a ~]# useradd -c "web server" user4 [root@1060a ~]# grep user4 /etc/passwd user4:x:1103:1103:web server:/home/user4:/bin/bash 在图形化登录界面中,登录用户选项中会看到一个web server的用户 -d 指定用户的家目录 useradd -d HOME_DIR username [root@1060a ~]# useradd -d /opt/user5 user5 [root@1060a ~]# cd ~user5 [root@1060a user5]# pwd /opt/user5 -s 指定用户默认是shell环境 useradd -s shell username eg: [root@1060a ~]# useradd -s /sbin/nologin user7 [root@1060a ~]# grep user7 /etc/passwd user7:x:1106:1106::/home/user7:/sbin/nologin
当使用useradd创建用户时,本质上完成以下操作
作用:设置修改用户密码,创建新用户后需要设置密码,不然无法登录。
语法:
passwd [options] [username] root用户设置密码 [root@1060a ~]# passwd user1 更改用户 user1 的密码 。 新的 密码: 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。 普通用户修改密码 [user1@1060a ~]$ passwd 更改用户 user1 的密码 。 当前 密码: 新的 密码: 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。 root用户可以修改所用用户密码,并且不需要验证旧密码以及可以使用弱密码 普通用户只允许修改自己密码,并且要先验证旧密码以及不允许使用弱密码 常用选项 -d 删除密码 passwd -d username eg: [root@1060a ~]# passwd -d user1 清除用户的密码 user1。 passwd: 操作成功 -l 锁定账户密码 passwd -l username eg: [root@1060a ~]# passwd -l user1 锁定用户 user1 的密码 。 passwd: 操作成功 -u 解锁用户 passwd -u username eg: [root@1060a ~]# passwd -u user1 解锁用户 user1 的密码。 passwd: 操作成功 密码锁定原理: 锁定密码本质上是在/etc/shadow文件中的加密密码字段前添加两个感叹号,这样密码就更改了。根据上文提到的密码验证过程,用户输入的密码经过加密后,不可能出现'!!$6$'开头的加密结果,与文件当中的加密字符串匹配不上,所以无法登录。 但是root切换用户不需要验证密码,所以root切换锁定的用户可以切换过去。 --stdin 从标准输入里面读取密码(不推荐使用) echo 密码 | passwd --stdin username eg: [root@1060a ~]# echo uos1.2.3 | passwd --stdin user1 更改用户 user1 的密码 。 passwd:所有的身份验证令牌已经成功更新。
作用:用于修改用户属性
语法:
usermod [options] username 常用选项: -l 修改用户名 usermod -l new_name old_name eg: [root@1060a ~]# id 1100 用户id=1100(user1) 组id=1100(user1) 组=1100(user1) [root@1060a ~]# usermod -l zhangsan user1 [root@1060a ~]# id 1100 用户id=1100(zhangsan) 组id=1100(user1) 组=1100(user1) -u 修改用户UID usermod -u uid username eg: [root@1060a ~]# id user2 用户id=1101(user2) 组id=1100(user1) 组=1100(user1) [root@1060a ~]# usermod -u 6666 user2 [root@1060a ~]# id user2 用户id=6666(user2) 组id=1100(user1) 组=1100(user1) -g 修改用户的私有组 usermod -g groupname username eg: [root@1060a ~]# id user3 用户id=1102(user3) 组id=1102(user3) 组=1102(user3),1100(user1) [root@1060a ~]# usermod -g root user3 [root@1060a ~]# id user3 用户id=1102(user3) 组id=0(root) 组=0(root),1100(user1) -G 修改用户的补充组 usermod -G groupname username eg: [root@1060a ~]# id user3 用户id=1102(user3) 组id=0(root) 组=0(root),1100(user1),1103(user4) [root@1060a ~]# usermod -G user3 user3 [root@1060a ~]# id user3 用户id=1102(user3) 组id=0(root) 组=0(root),1102(user3) 注:该方式修改补充组,会直接覆盖之前的所有组,在生产环境不建议使用。 -c 修改用户备注 usermod -c 字符串 uername eg: [root@rhce ~]# grep user1 /etc/passwd user1:x:1001:1001:mysql user:/home/user1:/bin/bash [root@rhce ~]# usermod -c user1 user1 [root@rhce ~]# grep user1 /etc/passwd user1:x:1001:1001:user1:/home/user1:/bin/bash -md 修改用户家目录 usermod -md HOME_DIR username 注:修改用户家目录,需要目录事先存在,如果不存在需要使用-m选项同时创建家目录 eg: [root@1060a ~]# grep user2 /etc/passwd user2:x:6666:1100::/home/user2:/bin/bash [root@1060a ~]# usermod -md /opt/user2 user2 [root@1060a ~]# cd ~user2 [root@1060a user2]# pwd /opt/user2 -s 修改用户shell环境 usermod -s shell username eg: [root@1060a ~]# grep user4 /etc/passwd user4:x:1103:1103:web server:/home/user4:/bin/bash [root@1060a ~]# usermod -c "mysql server" user4 [root@1060a ~]# grep user4 /etc/passwd user4:x:1103:1103:mysql server:/home/user4:/bin/bash
作用:删除用户
语法:
userdel [options] username
常用选项:
-r 删除用户的家目录以及目录中的所有文件和邮箱目录
[root@1060a ~]# userdel -r user2
注:删除用户使用-r选项会将用户家目录和邮箱目录删除,不使用-r选择则只会删除四个信息文件中映射关系。
由于userdel删除用户时只会删除同名的组,所有当使用usermod修改名称之后,创建用户时同时创建的组就不会删除,下次再次创建这个用户,
会提示该用户组已存在,无法创建用户。需要使用-g选项指定私有组。
作用:修改用户的密码的相关时间属性
语法:
chage [options] username
常用选项:
[root@1060a ~]# chage zhangsan
正在为 zhangsan 修改年龄信息
请输入新值,或直接敲回车键以使用默认值
最小密码年龄 [0]:
最大密码年龄 [90]:
最近一次密码修改时间 (YYYY-MM-DD) [2023-11-02]:
密码过期警告 [7]:
密码失效 [-1]:
帐户过期时间 (YYYY-MM-DD) [-1]:
作用:创建用户组
语法:
groupadd [options]... groupname...
创建名称为it的用户组
[root@1060a ~]# groupadd it
常用选项:
-g 指定GID
groupadd -g gid grupname
eg:
[root@1060a ~]# groupadd it
[root@1060a ~]# groupadd -g 2000 ct
[root@1060a ~]# grep ct /etc/group
ct:x:2000:
作用:修改用户组属性
语法:
groupmod [options] groupname 常用选项: -n 修改名字 groupmod -n new_name old_name eg: [root@1060a ~]# grep 2000 /etc/group ct:x:2000: [root@1060a ~]# groupmod -n ctgroup ct [root@1060a ~]# grep 2000 /etc/group ctgroup:x:2000: -g 修改GID groupmod -g gid groupname eg: [root@1060a ~]# grep ct /etc/group ctgroup:x:2000: [root@1060a ~]# groupmod -g 2023 ctgroup [root@1060a ~]# grep ct /etc/group ctgroup:x:2023:
作用:删除用户组
语法:
groupdel [options] groupname
删除it组
[root@1060a ~]# groupdel it
作用:给组设置密码,或者管理组内成员(该命令组管理员也可以使用)
语法:
gpasswd [option] groupname 给ctgroup组设置密码 gpasswd groupname [root@1060a ~]# gpasswd ctgroup 正在修改 ctgroup 组的密码 新密码: 请重新输入新密码: 登录到ctgroup组 newgrp groupname 注:此处1060a有修改,该命令普通用户没有权限。但是其他发行版本中该命令普通用户可以使用。 1060a——eg: [root@1060a ~]# id 用户id=0(root) 组id=0(root) 组=0(root) [root@1060a ~]# newgrp ctgroup Welcome to 4.19.0-91.82.152.uelc20.x86_64 [root@1060a ~]# id 用户id=0(root) 组id=2023(ctgroup) 组=2023(ctgroup),0(root) rhel9——eg: [user1@rhce ~]$ id uid=1001(user1) gid=1001(user1) groups=1001(user1) [user1@rhce ~]$ newgrp it Password: [user1@rhce ~]$ id uid=1001(user1) gid=1002(it) groups=1002(it),1001(user1) 登录到用户组,就是将组临时变成自己的私用组。 常用选项: -A 指定组管理员 gpasswd -A username groupname eg: [root@1060a ~]# gpasswd -A user3 ctgroup [root@1060a ~]# cat /etc/gshadow | grep ctgroup ctgroup::user3: -a 添加用户到组 gpasswd -a username groupname eg: [root@1060a ~]# id user4 用户id=1103(user4) 组id=1103(user4) 组=1103(user4) [root@1060a ~]# gpasswd -a user4 user3 正在将用户“user4”加入到“user3”组中 [root@1060a ~]# id user4 用户id=1103(user4) 组id=1103(user4) 组=1103(user4),1102(user3) -d 将用户从组里删除 gpasswd -d username groupname eg: [root@1060a ~]# id user4 用户id=1103(user4) 组id=1103(user4) 组=1103(user4),1102(user3) [root@1060a ~]# gpasswd -d user4 user3 正在将用户“user4”从“user3”组中删除 [root@1060a ~]# id user4 用户id=1103(user4) 组id=1103(user4) 组=1103(user4) -r 删除组密码 gpasswd -r groupname eg: [root@1060a ~]# gpasswd -r ctgroup
作用:用于组管理(该命令只用root可以使用)
语法
groupmems -a username |-d username |[-g groupname] |-l | -p 常用选项: -l 列出组内所有用户 groupmems -l -g grupname eg: [root@1060a ~]# groupmems -l -g ctgroup user3 user4 user5 -a 向组内添加用户 groupmems -a username -g groupname eg: [root@1060a ~]# groupmems -a zhangsan -g ctgroup [root@1060a ~]# groupmems -l -g ctgroup user3 user4 user5 zhangsan -d 删除组内用户 groupmems -d username -g groupname eg: [root@1060a ~]# groupmems -d zhangsan -g ctgroup [root@1060a ~]# groupmems -l -g ctgroup user3 user4 user5 -p 清空组内所有用户 groupmems -p -g groupname eg: [root@1060a ~]# groupmems -l -g ctgroup user3 user4 user5 [root@1060a ~]# groupmems -p -g ctgroup [root@1060a ~]# groupmems -l -g ctgroup
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。