Linux笔记-用户和用户组

Linux操作系统是一个多用户多任务的操作系统。在安装Linux操作系统过程中,会提示设置root用户密码和创建一个新用户,也就是说,当Linux系统安装完成后,你会拥有两个用户账号,一个是root用户,它拥有系统的最高权限,另一个是你自己创建的账号,一些操作会受限。
值得一提的是,在Linux系统中,还有用户组(一类用户的集合)的概念,每一个用户至少属于一个用户组。

下面进入正题!
在这里插入图片描述
在上图中
一开始使用普通用户账号登录,意欲创建一个名为general_user的用户组,执行结果为权限不够,因为仅有root权限的用户才可以创建用户和用户组(或者root用户把创建用户和用户组的权限赋予了某个信任用户)。使用su root(命令格式:su 用户名,作用:切换到某个用户模式)命令后,输入root用户密码(安全起见,输入的密码将不可见)便可以切换到root用户模式,这时再输入groupadd general_user(命令格式:groupadd 用户组名)创建用户组general_user成功。

接下来,使用命令useradd -g general_user general_user1(命令格式:useradd -g 用户名 用户组名)创建一个名为general_user1的用户,同时把该用户添加到用户组general_user中,使用命令passwd general_user1(命令格式:passwd 用户名)为用户general_user1设置密码(密码不能与用户名相同,且输入的密码不可见)。使用useradd general_user2(命令格式:useradd 用户名)创建一个名为general_user2的用户,同样使用命令passwd general_user2(命令格式:passwd 用户名)为用户general_user2设置密码。
在这里插入图片描述
在上图中
使用命令id general_user1(命令格式:id 用户名)查看用户general_user1的用户id(uid)和组id(gid),uid是用户在该Linux系统中的唯一标识,gid是组在该Linux操作系统中的唯一标识。如上图,用户general_user1的uid=1001,gid=1001,属于用户组general_user。

使用命令groups general_user1(命令格式:groups 用户组名)查看用户general_user1所在的用户组。如上图,结果为用户组general_user。

使用命令cat /etc/passwd|grep general_user1(命令格式:cat /etc/passwd|grep 用户名)查看用户general_user1的详细信息:两个1001分别为uid和gid,/home/general_user1是用户general_user1的用户主目录,/bin/bash是脚本的解释路径。

对用户general_user2执行同样的上面3条命令,结果为用户general_user2属于general_user2用户组,使用命令gpasswd -a general_user2 general_user(命令格式:gpasswd -a 用户名 用户组名)把用户general_user2添加到用户组general_user中,这时再使用groups general_user2查询,general_user2同时属于general_user2和general_user两个用户组。
在这里插入图片描述
在上图中
使用命令gpasswd -d general_user2 general_user(命令格式:gpasswd -d 用户名 用户组名)把用户general_user2从用户组general_user中删除,删除成功,使用命令groups general_user2再次查看用户general_user2所在用户组,结果只为general_user2,因为用户general_user2已经从用户组general_user中被删除,它不再是用户组general_user的成员。

同样使用命令gpasswd - d general_user1 general_user(命令格式:gpasswd -d 用户名 用户组名)试图把用户general_user1从用户组general_user中删除,删除失败,使用命令groupdel general_user(命令格式:groupdel 用户组名)试图删除整个用户组,也失败,为什么呢?

我们回过头去看创建general_user1和general_user2这两个用户时有什么不同。用户general_user2是先创建,再添加到用户组general_user中;而用户general_user1是在创建同时添加到用户组general_user中。“gpasswd -d 用户名 用户组名”这条命令只能把先创建后添加的用户从用户组中删除,对创建时同时添加进来的用户无法删除,且从用户组中删除仅仅是从该用户组中删除,不意味着该用户彻底被删除了,因为该用户可能还属于其他用户组。那么现在想一个问题,现在怎么把用户general_user1从用户组general_user中删除呢?只能是使用命令userdel general_user1(命令格式:userdel 用户名)直接删除该用户,但也就意味着,同时把用户general_user1从其它用户组中也删除了,即用户general_user1在系统中不存在了,这在实际情况下可能不是我们希望的结果,因此,在使用创建用户命令时,要慎重考虑,同时创建用户并添加至分组中固然方便,但在删除时会遇到困难,无法从该用户组中删除,只能直接删除该用户。
在这里插入图片描述
在上图中
现在介绍什么是主组,在Linux系统中,每个用户可以属于多个用户组,但只能有一个主组,**对于先创建后入组的用户来说,主组名与该用户的用户名同名,对于创建的同时入组的用户来说,主组就是该用户创建同时所加入的用户组。**如上图,对于用户general_user2来说,可以使用命令groupdel general_user(命令格式:groupdel 用户组名)直接删除该用户的非主组general_user,但无法直接删除该用户的主组,只有当用户general_user2在系统中被删除时,它所在的主组general_user2才能被删除。

查看系统所有的用户信息
命令:cat /etc/passwd
在这里插入图片描述
查看系统所有的用户组信息
在这里插入图片描述
联系现实
在现实应用环境中,我们应避免以root权限登录,当某些操作需要root权限时,我们再使用账号切换命令切换到root用户。这样做是为了降低root账号被泄露的风险,对于敏感数据,我们会设置只有root权限的用户才可以读取,因此,一旦root账号泄露,也就意味着很多敏感数据也会面临泄露的风险。
在企业应用环境中,服务器大多也是采用Linux系统。对于管理员而言,对服务器数据的访问采用的是root用户权限,而对于一般用户,对服务器数据的访问采用的是某个用户组权限,从数据库理论的角度来讲,就是一个视图。因此,管理员账号密码的保密非常重要,一旦泄露,就会造成大量用户数据隐私泄露,造成企业经济损失。

本篇命令总结:
创建新用户:useradd 用户名
创建新用户的同时添加入某一个组:useradd -g 用户组 用户名
为指定用户设置密码:passwd 用户名
切换到新用户的工作环境:su 用户名(切换到root需要输入root用户的密码)
删除用户:userdel 用户名
查看用户信息:id 用户名
查看用户所在分组:groups 用户名
查看用户的详细信息:cat /etc/passwd|grep 用户名
查看用户组的详细信息:cat /etc/groups|grep 用户组名
查看所有用户信息:cat /etc/passwd
查看所有用户组信息:cat /etc/group
创建新用户组:groupadd 用户组名
删除用户组:groupdel 用户组名
把指定用户添加到指定用户组中:gpasswd -a 用户名 用户组名
从指定用户组中删除指定用户:gpasswd -d 用户名 用户组名

发布了2 篇原创文章 · 获赞 2 · 访问量 2500

猜你喜欢

转载自blog.csdn.net/weixin_42989774/article/details/104020258