用户管理

用户管理

一、用户管理--理论

1、什么是linux多用户多任务?

linux系统允许多个用户同时登录系统,并执行各自应用程序

2、linux为什么需要用户管理

linux是一个多用户系统,用户管理可以帮助系统管理员对系统的用户进行追踪;同时linux也是一个多任务系统,用户管理可以控制用户对系统资源的访问,通过用户和用户组,使得不同用户对同一文件权限不同

3、linux中有几种用户?作用分别是?

  • root用户:管理操作系统的各种配置服务、管理用户等
  • 虚拟用户:系统或程序创建的用户,用来执行所属应用程序的运行
  • 普通用户:由root创建,用户权限较低,可以按需指向不同的任务

4、如何理解linux的用户、用户组和文件的关系?

linux是一个多用户系统,通过“用户和用户组”为文件解决权限问题,为此引入“文件所有者、用户组成员、其他用户”的概念,使得每个对象对同一文件具有不同权限

5、什么是linux的主组、附加组

  • 主组
    • 用户的初始组
    • 用户有且只能属于一个主组
    • 用户只能更换主组,不能删除主组(若主组为空,则系统会自动删除)
    • 用户创建的文件属于改用的主组
  • 附加组
    • 用户可以属于零个或多个附加组
    • 附加组可以直接删除,而无需关心是否所属用户
    • 附加组可以新增和移除任意个所属用户

6、如何理解linux用户和用户组的关系

  • 一对一:即一个用户可以存在于一个组中,也可以使组中唯一的成员
  • 一对多:即一个用户可以存在于多个组中,那么此用户具有多个组的权限
  • 多对一:即多个用户可以存在一个组中,同一个组中的用户具有相同的权限
  • 多对多:即多个用户存在多个组中,是上面三种关系的拓展

7、如何理解linux的root用户?root用户的特点是什么?

  • root是linux系统中UID为0的用户
  • root用户是系统中唯一的超级管理员,拥有系统的所有权限
  • root用户所在的组称为“root组“,处于root组中的普通用户可以通过sudo命令获取root权限

8、linux可以对用户、用户组做哪些管理

  • 添加用户及用户组
  • 更改用户及用户组
  • 删除用户及用户组

9、linux用户配置文件,每个字段解释一下?

  • /etc/passed——管理用户UID/GID等重要参数
  • /etc/shadow——管理用户密码
  • /etc/group——管理用户组相关信息
  • /etc/gshadow——管理用户组密码
  • /etc/skel——用户家目录的模板文件,在建立新用户时初始化用户家目录

10、关于linux用户管理、设置的配置文件有哪些?他们之间的联系是?

  • 用户管理文件

    • /etc/passwd
    • /etc/shadow
    • /etc/group
    • /etc/gshadow
    • /etc/skel
    • /home
  • 配置文件之间的联系,及创建用户的过程

    ①在/etc/passwd写入新用户信息

    ②在/etc/group写入用户组信息

    ③在/etc/shadow写入用户密码的信息

    ④在/etc/gshadow写入用户组密码的信息

    ⑤拷贝/etc/skel的文件到/home/新用户目录下

11、linux存放用户密码的 文件是?该文件有什么特点?

存放密码的文件是/etc/shadow;主要特点是没有任何权限,

除了root之外,任何用户不可读取、写入、执行

[root@server ~]# ls -l /etc/shadow
----------. 1 root root 1471 Jun 29 22:55 /etc/shadow

12、linux的UID、GID默认新建规则是?

二者的新建规则:都是从1000开始创建,如创建新用户的UID为1000,则创建新组的GID也为1000

二、用户管理--命令

1、groupadd--创建新的用户组

用户组文件存放于/etc/group

  • 文件结构

image-20230702131621100

  • 参数
参数 功能
-g 设置用户组ID
-p 设置用户组密码
  • 示例
[root@server ~]# groupadd opslinux

2、groupmod--更改用户组属性

  • 参数

    参数 功能
    -g 设置用户组ID
    -p 设置用户组密码
    -n 设置用户组名称
  • 示例

#01:修改用户组ID
[root@server ~]# groupmod -g 2023  opslinux

#02:修改用户组名称
[root@server ~]# groupmod -n devops opslinux

3、groupdel--删除用户组

-f   #强制删除而不询问
  • 示例
[root@server ~]# groupdel devops

4、useradd--创建并设置用户信息

  • 用户文件存放于/etc/passwd
  • 文件结构

image-20230702132333754

  • 参数
参数 功能
-u 设置用户ID
-g 设置用户对应主组
-G 设置用户对应附加组
-c 添加备注文字
-s 设置用户默认shell终端
-d 设置用户登录时所使用的家目录
-e 设置用户终止日期
  • 示例
#01:添加新用户USER01时加入附加组GROUP01
[root@server ~]# useradd -G GROUP01 USER01

#02:查看USER01的组信息
[root@server ~]# id USER01
uid=2007(USER01) gid=2007(USER01) groups=2007(USER01),2500(GROUP01)

5、usermod--修改用户账号信息

  • 参数
参数 功能
-u 修改用户ID
-g 修改用户主组
-G 修改用户附加组
-a 将用户添加到附加组
-l 修改用户名
-L 锁定用户,是密码立即失效
-U 解除锁定,使密码恢复正常

6、passwd--修改用户密码

linux不允许没有密码的用户登录系统,因此新创建的用户处于锁定状态,需要设置密码之后才能登录系统

  • 语法:passwd 用户名
  • 参数
参数 功能
-d 清除已有密码
-e 下次登录时强制修改密码
-l 锁定用户的密码值,不允许修改
-u 解锁用户的密码值,允许修改
  • 非交互式修改密码
[root@server ~]# echo 123456 | passwd --stdin USER01
Changing password for user USER01.
passwd: all authentication tokens updated successfully.

7、userdel--删除用户账号

  • 参数
参数 功能
-f 强制删用户账号而不询问
-r 删除用户家目录及其内部全部文件
  • 建议注释而不是直接删除

image-20230701231831062

8、查看用户相关信息

  • id--查看当前用户

    image-20230701232019854

​ id + 用户名 #查看指定用户

  • whoami--显示当前用户名

image-20230701232152348

  • who--查看当前登录用户信息

    image-20230701232256457

  • w--显示已登录的信息

image-20230701232334951

9、su--切换用户身份

su -    #完全切换用户身份

[root@server ~]# su - lifang01
Last login: Mon Jun 19 13:22:57 CST 2023 on pts/0
[lifang01@server ~]$ 
  • 切换用户身份的注意事项
    • 从root往普通用户切换不需要密码,但是反之则需要root的密码
    • 切换用户前后的工作路径时不变的
    • 普通用户没有办法访问root的家目录,但反之则可以

10、visudo--编辑/etc/sudoers文件

visudo -c   #检查/etc/sudoers文件的语法错误

image-20230701232849090

示例:使用普通用户USER01在/opt下创建文件t.txt

#01:查看/opt文件夹权限
[USER01@server ~]$ ls -ld /opt
drwxr-xr-x. 3 root root 80 Jul  2 10:53 /opt
[USER01@server ~]$ touch /opt/hello.txt
touch: cannot touch ‘/opt/hello.txt’: Permission denied

#02;查看touch路径
[USER01@server ~]$ which touch
/usr/bin/touch

#03:使用visudo在/etc/sudoers文件增加touch权限
root    ALL=(ALL)       ALL
USER01   ALL=(ALL)      /usr/bin/touch

#04:使用sudo为用户USER01提权,创建t.txt文件
[USER01@server ~]$ sudo touch /opt/t.txt

11、sudo--授权普通用户执行管理员命令

image-20230701232928430

12、chpasswd--批量更新密码

命令里面没有用户名和密码,回车以后以“用户名:密码”的格式输入,密码一般为明文,chpasswd根据选项加密

  • 参数
参数 功能
-c 使用指定方法加密,加密方法:DES,MD5,SHA256,SHA512
-e 提供的密码已经加密
  • 非交互式加密
[root@server ~]# echo "USER01:123321" | chpasswd

  • 示例
#01:创建密码文件
[root@server ~]# mkdir /root/user_chpasswd_file

#02:密码文件重定向到chpasswd命令
[root@server ~]# chpasswd < /root/user_chpasswd_file

#03:为用户批量设置密码
[root@server ~]# chpasswd
USER01:123456
USER02:123456
USER03:123456
#输入格式为“用户名:密码”
#输入完毕后按Ctrl + d退出

13、grep的or、and、not

or grep -e
and grep -E
not grep -v
  • 语法
grep -e grep -e 'pattern1' -e 'pattern2' filename
grep -E grep -E 'pattern1| pattern2' filename
grep -v grep -v pattern filename
  • 示例
#01:测试数据:
[root@server test]# cat t
1111111
2222222
3333333
4444444
5555555

#02:grep -e(或):
[root@server test]# grep -n -e "11111" -e "6666" t
1:1111111

#03:grep -E(与):
[root@server test]# grep -E '1111|3333' t
1111111
3333333

#03:grep -v(非):
[root@server test]# grep -n -v 11111 t
2:2222222
3:3333333
4:4444444
5:5555555

14、chage--这种账号密码有效期

  • 参数
参数 功能
-E 设置账号到期时间
-i 设置密码到期后还能使用几天
-l 显示用户及密码的有效期
  • 示例
#01:设置用户cc01密码过期时间为2023-07-03
[root@server ~]# chage -E '2023-07-03' cc01

#02:显示用户及密码的有效期
[root@server ~]# chage -l cc01
Last password change					: Jul 02, 2023
Password expires					: never
Password inactive					: never
Account expires						: Jul 03, 2023
Minimum number of days between password change		: 0
Maximum number of days between password change		: 99999
Number of days of warning before password expires	: 7

15、groups--显示用户的用户组信息

[root@server ~]# groups ycc01
ycc01 : cc01 GROUP02

16、gpasswd--设置管理用户组

  • 参数
参数 功能
-a 添加指定用户到用户组
-d 从组中删除指定用户
-A 设置管理员
-r 删除组密码
  • 示例
#01:查看用户组GROUP01当前组成员
[root@server ~]# grep -w 'GROUP01' /etc/group
GROUP01:x:2500:USER02,USER01,ycc01

#02:从用户组GROUP01中删除用户ycc01
[root@server ~]# gpasswd -d ycc01 GROUP01
Removing user ycc01 from group GROUP01

#03:添加用户jerry到用户组GROUP01
[root@server ~]# gpasswd -a jerry GROUP01

#04:查看用户组GROUP01成员
[root@server ~]# grep -w 'GROUP01' /etc/group
GROUP01:x:2500:USER02,USER01,jerry

17、last--列出目前与过去登录系统的用户相关信息

  • 指令所在路径

    /usr/bin/last

  • 命令输出字段介绍

    image-20230702121606750

  • 参数

参数 功能
-n 设置显示n行记录
-i 显示特定ip登录情况,跟踪使用
-d 将IP地址转换为主机名称
-x 显示系统关闭、用户登录和退出的历史
-t 显示YYMMDDMMSS之前的信息
-a 将登录系统的主机名称或ip地址显示在最后一行
  • 示例
#01:将登录系统的主机名或IP地址显示在最后一行
[root@server ~]# last -3 -a
root     pts/1        Sun Jul  2 09:34   still logged in    192.168.10.1
ycc01    pts/1        Sun Jul  2 09:07 - 09:08  (00:00)     192.168.10.1
ycc01    pts/1        Sun Jul  2 09:06 - 09:07  (00:00)     192.168.10.1

wtmp begins Thu Jun 15 07:57:01 2023

#02:显示YYYYMMDDHHMMSS(20230701122000)之前的信息
[root@server ~]# last -5 -t 20230701122000
USER01   pts/0        192.168.10.1     Fri Jun 30 12:31    gone - no logout 
USER01   pts/0        192.168.10.1     Fri Jun 30 12:23 - 12:25  (00:02)    
root     pts/1        192.168.10.1     Fri Jun 30 11:31    gone - no logout 
yuchao01 pts/2        192.168.10.1     Fri Jun 30 11:18 - 11:30  (00:11)    
lifang01 pts/2        192.168.10.1     Fri Jun 30 10:45 - 10:57  (00:12)    

wtmp begins Thu Jun 15 07:57:01 2023

18、lastlog-列出所有用户,并显示用户最后一次登录信息

  • 命令输出字段介绍

image-20230702125037629

  • 示例
[root@server ~]# lastlog -u root
Username         Port     From             Latest
root             pts/1    192.168.10.1     Sun Jul  2 09:34:59 +0800 2023
posted @ 2023-07-02 13:29  方木木不方  阅读(157)  评论(0)    收藏  举报