1. 用户、用户组

1.1 用户相关的文件位置

/etc/passwd 用户信息文件

root:x:0:0:root:/root:/bin/bash

第一列: 用户名 第二列: 密码位 第三列: 用户 ID  0 超级用户 UID。如果用户 UID 为 0,代表这个账号是管理员账号。那 Linux 中 如何把普通用户升级成为管理员呢?就是把其他用户的 UID 修改为 0 就可以了,这点和 Windows 是不同的。不过不建议建立多个管理员账号。  1-499 系统用户(伪用户)UID。这些 UID 账号是系统保留给系统用户的 UID,也就是 说 UID 是 1-499 范围内的用户是不能登录系统的,而是用来运行系统或服务的。其中 1-99 是系统保留的账号,系统自动创建。100-499 是预留给用户创建系统账号的。  500-60000 普通用户 UID。建立的普通用户 UID 从 500 开始,最大到 60000。这些用 户足够使用了,但是如果不够也不用害怕,2.6.x 内核以后的 Linux 系统用户 UID 已经 32 这么多了。 第四列:组 ID GID 添加用户时,如果不指定用户所属的初始组,那么会建立和用户名相 第四列:组 ID GID 添加用户时,如果不指定用户所属的初始组,那么会建立和用户名相 同的组 第五列: 用户说明 第六列: 用户家目录 ~ 如何把普通用户变成超级用户:把用户 UID 改为 0

如何把普通用户变成超级用户:把用户 UID 改为 0

/etc/shadow 影子文件

root:$6$9w5Td6lg$bgpsy3olsq9WwWvS5Sst2W3ZiJpuCGDY.4w4MRk3ob/i85fI38RH15wzVoomff9isV1PzdcXmixzhnMVhMxbv0:15775:0:99999:7:::
> 第一列: 用户名

第二列: 加密密码

我们也可以在密码前人为的加入“!”或“*”改变加密值让密码暂时失效,使这个用

户无法登陆,达到暂时禁止用户登录的效果。

注意所有伪用户的密码都是“!!”或“*”,代表没有密码是不能登录的。当然我新

创建的用户如果不设定密码,它的密码项也是“!!”,代表这个用户没有密码,不能登录

第三列: 密码最近更改时间, 1970 年 1 月 1 日作为标准时间

时间戳转日期 [root@localhost ~]# date -d "1970-01-01 15775 days"

2013 年 03 月 11 日 星期一 00:00:00 CST

日期转时间戳

[root@localhost ~]# echo $(($(date --date="2013/03/11" +%s)/86400+1))

15775 第四列: 两次密码的修改间隔时间(和第 3 字段相比)

第五例: 密码有效期(和第 3 字段相比)

第六列: 密码修改到期前的警告天数(和第 5 字段相比)

第七列: 密码过期后的宽限天数(和第 5 字段相比)

第八列: 密码失效时间

这里同样要写时间戳,也就是用 1970 年 1 月 1 日进行时间换算。如果超过了

失效时间,就算密码没有过期,用户也就失效无法使用了

第九列: 保留

/etc/group 组信息文件

`root:x:0:root```

第一列: 组名 第二列: 组密码位 第三列: GID 第四列: 此组中支持的其他用户.附加组是此组的用户 初始组:每个用户初始组只能有一个,初始组只能有一个,一般都是和用户名相同的组作为 初始组 附加组:每个用户可以属于多个附加组。要把用户加入组,都是加入附加组 4 组密码文件/etc/gshadow 如果我给用户组设定了组管理员,并给该用户组设定了组密码,组密码就保存在这个文件当中。 组管理员就可以利用这个密码管理这个用户组了。 5 用户的家目录 6 用户邮箱目录 这个邮箱在/var/spool/mail 目录当中,例如 user1 用户的邮箱就是/var/spool/mail/user1 文 件 7 用户模板目录/etc/skel/

变更用户及组会导致文件信息变化

7. 用户、组、权限管理 - 图1 7. 用户、组、权限管理 - 图2

运行级别

  1. int [0~6]
  2. :
  3. int 0
  4. init 3
  5. int 5
  6. vim /etc/inittab #查看当前运行等级

7. 用户、组、权限管理 - 图3 何如找回root密码 即进入单用户模式,修改root密码 因为单用户模式中,root不需要密码就可登录 7. 用户、组、权限管理 - 图4

1.2 用户管理命令

useradd

作用:添加用户

格式为:useradd [选项] 用户名 选项: -D 改变新建用户的预设值 -c 添加备注文字 -d 新用户每次登陆时所使用的家目录 -e 用户终止日期,日期的格式为YYYY-MM-DD -f 用户过期几日后永久停权。当值为0时用户立即被停权,而值为-1时则关闭此功能,预设值为-1 -g 指定用户对应的用户组 -G 定义此用户为多个不同组的成员 -m 用户目录不存在时则自动创建 -M 不建立用户家目录,优先于/etc/login.defs文件设定 -n 取消建立以用户名称为名的群组 -r 建立系统帐号 -u 指定用户id

例子:

#添加新用户
[root@linuxcool ~]# useradd linuxcool        

不创建家目录,并且禁止登陆:
[root@linuxcool ~]# useradd -M -s /sbin/nologin linuxcool

添加新用户linuxcool,指定UID为888,指定归属用户组为root,cool成员,其shell类型为/bin/sh:
[root@linuxcool ~]# useradd -u 888 -s /bin/sh -G root,cool linuxcool

添加新用户linuxcool,设置家目录为/tmp/linuxcool,用户过期时间为2020/09/01.过期后两天停权:
[root@linuxcool ~]# useradd -e "2020/09/01" -f 2 -d /tmp/linuxcool linuxcool

usermod

作用:用于修改用户的属性

格式为:usermod [选项] 用户名 选项: -c<备注> 修改用户账号的备注文字 -d<登入目录> 修改用户登入时的目录 -e<有效期限> 修改账号的有效期限 -f<缓冲天数> 修改在密码过期后多少天即关闭该账号 -g<群组> 修改用户所属的群组 -G<群组> 修改用户所属的附加群组 -l<账号名称> 修改用户账号名称 -L 锁定用户密码,使密码无效 -s 修改用户登入后所使用的shell -u 修改用户ID -U 解除密码锁定

实例:

更改登陆目录:
[root@linuxcool ~]# usermod -d /home/hnlinux root

改变用户的uid:
[root@linuxcool ~]# usermod -u 777 root

修改用户名为linux:
[root@linuxcool ~]# usermod -l Linux linuxcool

锁定linuxcool的密码:
[root@linuxcool ~]# usermod -L linuxcool

解锁linuxcool的密码:
[root@linuxcool ~]# usermod -U linuxcool

passwd

作用:用于修改用户密码、过期时间、认证信息等

格式为:passwd [选项] [用户名] 选项: -d 删除密码 -l 锁定用户密码,无法被用户自行修改 -u 解开已锁定用户密码,允许用户自行修改 -e 密码立即过期,下次登陆强制修改密码 -k 保留即将过期的用户在期满后能仍能使用 -S 查询密码状态

实例:

修改当前登陆的账户密码:
[root@linuxcool ~]# passwd

修改其他用户密码(假设有linuxprobe用户):
[root@linuxcool ~]# passwd linuxcool

锁定密码不允许用户修改:
[root@linuxcool ~]# passwd -l linuxcool

解除锁定密码,允许用户修改:
[root@linuxcool ~]# passwd -u linuxcool

下次登陆强制改密码:
[root@linuxcool ~]# passwd -e linuxcool

清除登录密码。清除之后登录时无需密码,风险极大,不推荐使用:
[root@linuxcool ~]# passwd -d linuxcool

查询密码状态:
[root@linuxcool ~]# passwd -S linuxcool

userdel

作用:用于删除用户

格式为:userdel [选项] 用户名 选项: -f 强制删除用户账号 -r 删除用户主目录及其中的任何文件 -h 显示命令的帮助信息

实例:

删除用户,但不删除其家目录及文件:
[root@linuxcool ~]# userdel linuxcool

删除用户,并将其家目录及文件一并删除:
[root@linuxcool ~]# userdel -r linuxcool

强制删除用户:
[root@linuxcool ~]# userdel -f linuxcool

su

作用:用于切换用户身份

[root@localhost ~]# su [选项] 用户名
选项:
-: 选项只使用“-”代表连带用户的环境变量一起切换
-c 命令: 仅执行一次命令,而不切换用户身份
“-”不能省略,它代表切换用户身份时,用户的环境变量也要切换成新用户的环境变量

1.2 组管理命令

groupadd

作用:用户创建用户组

格式为:groupadd [选项] 群组名 选项: 实例:

-g 指定新建工作组的id
-r 创建系统工作组,系统工作组的组ID小于500
-K 覆盖配置文件“/ect/login.defs”
-o 允许添加组ID号不唯一的工作组
实例:
使用-g参数新建linuxcool工作组名,1005是工作组id:
[root@linuxcool ~]# groupadd -g 1005 linuxcool

使用-r创建系统工作组:
[root@linuxcool ~]# groupadd -r -g 368 linuxcool

goupdel

作用:删除用户组

格式:groupdel 组名

例子:

#删除 testgrp 组
[root@localhost ~]#groupdel testgrp

gpasswd

作用:把用户添加进组或从组中删除

[root@localhost ~]# gpasswd [选项] 组名
选项:
-a 用户名: 把用户加入组
-d 用户名: 把用户从组中删除
举个例子:
[root@localhost ~]# groupadd grouptest
#添加组 grouptest
[root@localhost ~]# gpasswd -a user1 grouptest
Adding user user1 to group grouptest
#把用户 user1 加入 grouptest 组
[root@localhost ~]# grep "user1" /etc/group
user1:x:501:
grouptest:x:505:user1
#查看一下,user1 用户已经作为附加用户加入 grouptest 组
[root@localhost ~]# gpasswd -d user1 grouptest
Removing user user1 from group grouptest
#把用户 user1 从组中删除
[root@localhost ~]# grep "grouptest" /etc/group
grouptest:x:505:
#组中没有 user1 用户了

组的概念

7. 用户、组、权限管理 - 图5 例子:** 7. 用户、组、权限管理 - 图6 7. 用户、组、权限管理 - 图7 7. 用户、组、权限管理 - 图8 7. 用户、组、权限管理 - 图9

高权限用户回退低权限用户 exit 退回即可

**

用户组

useradd #用户名
useradd -d 指定目录,新的用户名,给新创建的用户指定家目录
passwd  用户名  # 设置密码
userdel #删除用户
userdel -r  #删除用户及用户目录  #通常默认不删除目录
id  用户名 #查询

可对有共性的多个用户进行统一的管理

groupadd 组名
例 :
groupadd huojiandui         #增加组“火箭队”
groupdel huojiandui         #删除组“火箭队”
进阶版:    增加用户时直接加入组
格式:useradd -g  用户组   用户名
例 :
useradd -g huojiandui Ym
usermod -g 用户组 用户名 #这是修改这个用户到别的组
例 :
usermod -g shanghai Ym #修改用户ym到shanghai组
chown tom test.txt #修改test这个文件的所用者,tom是文件所有者
ls -ahl     #查看文件、目录所在组
//下面是修改文件所在组
//格式:
chgrp police test.txt       #修改text。txt这个文件到police组
//下面是 改变用户所在组
//格式:
usermod -g 组名 用户名
usermod -d 目录名  用户名 改变该用户登录的初始目录