Linux用户管理
这次来说一下 Linux的用户管理,因为 Linux不同于 windows,它是一个==多用户==、多任务的操作系统,即允许同时登录多个用户进行操作,所以在学习 Linux的过程中必然要学习用户管理方面的知识,当然,也无非是一些增删改查的操作。内容如下。
1、了解用户和组
服务器添加多账户的作用:
1)针对不同用户分配==不同的权限==,不同权限可以限制用户==可以访问到的系统资源==。
2)提高系统的安全性。
3)帮助系统管理员对使用系统的用户进行跟踪。
2、用户和组的关系
理论上Linux系统中的每个用户在创建时都应该有一个对应的用户组,这个组就称之为用户的==主组==。同时,有些情况下,某个用户需要临时使用某个组的权限,那这个组就称之为这个用户的==附属组==或附加组。
主组只能拥有一个,但是附属组或附加组可以同时拥有多个 => 亲爹(1个),干爹(多个)
3、用户组操作
用户组的操作,简单来说就三件事:用户组的添加、修改以及删除。需要先牢记以下单词。
组:group
添加:add
修改:mod
删除:del
3.1 用户组的添加
1)语法及案例
基本语法:
1 | groupadd [选项] 用户组的组名称 |
案例1:在系统中添加一个 hr的用户组
1 | groupadd hr |
没有任何提示或者报错,则说明添加成功。
案例2:在系统中添加一个 test的用户组并指定编号为1100
1 | groupadd -g 1100 test |
提问:以上既然创建了用户组,那创建的 hr以及 test用户组到底添加到哪里了?
答:默认情况下,我们添加的用户组都会放在一个系统文件中,文件位置 => ==/etc/group==
可以通过 tail命令查看 group文件中的内容。
1 | tail -3 /etc/group |
或者根据文件路径 /etc/group 查看
==2)/etc/group文件解析==
由以上命令的执行结果可知,在 /etc/group文件中,一共拥有三个冒号,共四列。每列含义如下:
1 | 第一列:用户组的组名称 |
3.2 用户组的修改
用户组的修改主要是对用户组名称和用户组编号进行修改。
基本语法:
1 | groupmod [选项 选项的值] 原来组的组名称 |
案例1:把 hr用户组更名为 szhr
1 | groupmod -n szhr hr |
案例2:把 test用户组的组编号由1100更改为1003
1 | groupmod -g 1003 test |
案例3:把 demo组的组名称更改为 admin且用户组的组编号更改为1004
1 | groupmod -g 1004 -n admin demo |
3.3 用户组的删除
基本语法:
1 | groupdel 用户组名称 |
案例:使用 groupdel删除 test用户组
1 | groupdel test |
4、用户管理
先来回顾一下单词。
用户:user
添加:add
修改:mod
删除:del
4.1 用户的添加
基本语法:
1 | useradd [选项 选项的值] 用户名称 |
案例1:在系统中创建一个 linuxuser账号
1 | useradd linuxuser |
问题1:我们并没有为 linuxuser账号指定所属的主组,可以成功创建账号吗?
答:可以,因为在创建账号时,如果没有明确指定用户所属的主组,默认情况下,系统会自动在用户组中创建一个与用户 linuxuser同名的用户组,这个组就是这个用户的主组。
问题2:刚才创建的 linuxuser账号能不能用于登录操作系统?
答:不能,因为 Linux的登录账号==必须要求有密码==,如果一个账号没有密码是无法登录操作系统的。
案例2:在系统中创建一个账号 zhangsan,指定用户所属的主组为 zhengyquan
1 | 第一步:查询一下 zhengyquan的组ID编号 |
案例3:在系统中创建一个账号 lisi,指定主组为zhengyquan,此用户只能被软件所使用,不能用于登录操作系统
1 | useradd -g 1000 -s /sbin/nologin lisi |
案例5:在系统中创建一个 wangwu,指定主组为 wangwu,附属组为 zhengyquan
1 | useradd -G 1000 wangwu |
4.2 用户信息查询
基本语法:
1 | id 用户名称 |
主要功能:查询某个指定的用户信息
案例:查询 linuxuser用户的信息
1 | id linuxuser |
字段说明:
uid:用户编号
gid:用户所属的主组的编号
groups:用户的主组以及附属组信息,第一个是主组,后面的都是附属组或附加组信息
4.3 与用户相关的用户文件
组:/etc/group文件
用户:/etc/passwd文件,每创建一个用户,其就会在此文件中追加一行
1 | vim /etc/passwd |
由上图可知,一共拥有7列,每列含义如下:
1 | 第1列:用户名称 |
4.4 passwd命令
基本语法:
1 | passwd 用户名称 |
主要功能:为某个用户设置密码(添加或修改),可以给自己也可以给别人设置
案例1:修改自己的密码
1 | passwd |
案例2:为 linuxuser 账号添加一个密码,密码:123456
1 | passwd linuxuser |
特别注意:在 Linux操作系统中,如果一个账号没有密码,则无法登录操作系统。
4.5 用户修改操作
用户:user,添加:add,修改:mod,删除:del
基本语法:
1 | usermod [选项 选项的值] 用户名称 |
案例1:修改 zhangsan账号信息,更名为 zs
1 | usermod -l zs zhangsan |
案例2:修改 wangwu账号信息,把用户的主组的编号更新为 1000(zhengyquan)
1 | usermod -g 1000 wangwu |
案例3:禁止 linuxuser账号登录 Linux操作系统
1 | usermod -s /sbin/nologin linuxuser |
案例4:禁止 linuxuser用户登录操作,即==锁定==用户(Ctrl + Alt + F2 ~ F6)
1 | usermod -L linuxuser |
在上一小点 4.4中为 linuxuser用户设置的密码是123456,按 ==Ctrl + Alt + Fn + F2~F6进入字符界面==,用该账户密码登录,由于账户被锁定,无法登录。
几点注意:
Linux系统除了默认的图形化界面,其实还有6个隐藏的字符界面,按Ctrl + Alt + F1~F6
有些电脑开启Fn功能键,所以如果Ctrl + Alt + F1
F6不生效,则可以按Ctrl + Alt + Fn + F1F6
退出当前运行的shell:==exit==
案例5:==解锁== linux用户
1 | usermod -U linuxuser |
按 ==Ctrl + Alt + Fn + F1切换回图形化界面==,终端输入==usermod -U linuxuser==解锁后再次登录,登陆成功。
问题:账号==已经解锁==,但是无法登录,可能原因如下。
① 当前账号==没有设置密码==,因为 Linux操作系统不允许没有密码的操作进行登录。
② 当前用户的 Shell类型为 ==/sbin/nologin==,所以其无法登录。
4.6 su命令
基本语法:
1 | su [-] root |
主要功能:切换用户的账号
从超级管理员切换到普通用户,root => zhengyquan,不需要输入zhengyquan的密码
从普通账号切换到超级管理员,zhengyquan => root,需要输入root的密码
从普通账号切换到普通账号,zhengyquan => linuxuser,也需要输入linuxuser密码
4.7 wheel组(了解)
Linux系统中,理论上只有在wheel组中的普通用户,才可以通过su命令切换到 root账户,默认所有普通用户都能切换到root,只要知道root密码,换句话说,默认此配置不生效。
4.8 用户删除操作
基本语法:
1 | userdel [选项] 用户名称 |
案例1:删除用户但是不删除用户的家目录
1 | userdel zs |
案例2:删除用户的同时删除用户的家目录
1 | userdel -r lisi |
删除账号流程:① 删除账号 ② 确认是否删除用户家 ③ 删除用户主组(没有其他用户)
==扩展==:当我们想要删除某个账号时,系统提示当前账号正在被某个进程所使用
解决方案:
第一种方案:找到登录的这个用户,然后将其直接注销(exit)
第二种方案:
1 | kill [-9] 进程的ID编号 |
案例3:结束11565进程
1 | kill 11565 |
如果上述还是不能解决,即 userdel -r linux 后还是显示进程被占用(即该程序可能开了多个进程),则采用另一种更加简单粗暴的方式,kill 对应用户的全部进程(尽量斩草除根,结束父进程)
1 | ps -ef |grep linux |
结束完成后,再次使用 userdel删除即可。