Linux系列讲解 —— 用户/用户组管理简介

1. linux用户的分类:

超级用户:
root用户,可以操作一切文件,uid(0)

普通用户:
登录操作系统所使用的用户,所能操作的文件和目录有限,uid(500 - 6000)

伪用户:
为了满足一些系统进程对文件所属的要求,方便系统管理而内建的用户,这类用户不能登录系统,uid(1 - 499)

2. 查看用户及用户组

2.1 查看所有用户

列出的内容格式:用户:密码:uid:gid:相关信息:用户家目录:用户所使用的shell解释器

sun@sun-pc:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
...

注:
1.passwd文件中的密码都是无效的x字符,真正存储密码的地方在/etc/shadow,但依然是加密显示的;
2.指定shell解释器是/usr/sbin/nologin和/bin/false的,都是无法登录的用户。比较明显的区别就是,解释器是/usr/sbin/nologin的用户,在登录的时候会提示"This account is currently not available.",而解释器是/bin/false的什么也不会提示。

2.2 查看所有用户组

列出的内容格式:用户组:密码:gid:组中的用户

sun@sun-pc:~$ cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,sun
...

注:可能有人好奇为啥用户组也有密码,其实这个组密码确实极少用。可能在某些极端的情况下,root用户没办法及时响应新用户申请加入某个组的请求,这个时候设立一个组管理员(为该组添加密码),这样组自己就可以管理用户的加入或离开申请,从而减少root的管理压力。

3. 用户创建及删除

创建用户

#创建用户gerrit
sun@sun-pc:~$ sudo useradd gerrit -m -s /bin/bash

#设置用户密码
sun@sun-pc:~$ sudo passwd gerrit 
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:已成功更新密码

#查看一下创建的用户及其所属组id信息
sun@sun-pc:~$ id gerrit
uid=1001(gerrit) gid=1001(gerrit)=1001(gerrit)

-m:自动建立用户的家目录
-d:指定用户的家目录,同时也需要添加-m选项才可以生成
-s:指定用户登入后所使用的shell
-g:指定用户所属组
-G:指定用户附加所属组
-u:指定用户ID号

删除用户

#删除用户gerrit
sun@sun-pc:~$ sudo userdel -f -r gerrit 
userdel: user gerrit is currently used by process 15730
userdel: gerrit 邮件池 (/var/mail/gerrit) 未找到

#查看用户id信息,发现已经删除
sun@sun-pc:~$ id gerrit
id: "gerrit": no such user

-f:强制删除,不管是不是正在使用
-r:删除用户的家目录及邮箱目录

4. 用户组创建及删除

创建用户组

sun@sun-pc:~$ sudo groupadd testgroup

删除用户组

sun@sun-pc:~$ sudo groupdel testgroup

5. 用户所属组操作

5.1 将用户添加到指定用户组

#假设现在有一个test用户和一个testgroup用户组,将test用户添加到testgroup用户组
sun@sun-pc:~$ sudo usermod -a -G testgroup test

#查看test用户及其用户组id信息
sun@sun-pc:~$ id test
uid=1001(test) gid=1001(test)=1001(test),1002(testgroup)

-G:新的附加组列表 GROUPS
-a:将用户追加至上边 -G 中提到的附加组中,并不从其它组中删除此用户

5.2 将用户从指定组中删除

假设gerrit用户属于sambashare用户组,现将gerrit从其中移除

gerrit@sun-pc:~$ sudo deluser gerrit sambashare
正在将用户"gerrit"从组"sambashare"中删除...
完成。

5.3 更改用户组名称

sudo groupmod -n <new name> <old name>

6. 文件(目录)所属用户(用户组)更改

sun@sun-pc:~$ ls -l /usr/
总用量 132
...
drwxr-xr-x   3 root root  4096 825 10:41 libx32
drwxr-xr-x  14 root root  4096 826 11:08 local
...

我们把上面那个local目录及其包含的所有文件(子目录)更改为sun用户(用户组)所有:

#下面sun:sun,前面的是用户名,后面的是用户组名
sun@sun-pc:/usr$ sudo chown -R sun:sun /usr/local

sun@sun-pc:~$ ls -l /usr/
总用量 132
...
drwxr-xr-x   3 root root  4096 825 10:41 libx32
drwxr-xr-x  14 sun sun  4096 826 11:08 local

-R:递归处理指定目录下的所有文件和目录
-v:显示处理的详细信息

7. 相关问题

问题:xxx 不在 sudoers 文件中。此事将被报告。
在这里插入图片描述

解决:
方法一: 将用户gerrit用户更改为管理员用户。怎么做呢?只需要将其添加到root用户组即可。

#切换到root用户
gerrit@sun-pc:~$ su root

#将gerrit添加到sudo用户组
root@sun-pc:~# usermod -a -G sudo gerrit

#打开一个新终端,在新终端中登陆gerrit用户后,再次尝试即可
gerrit@sun-pc:~$ sudo apt-get install mysql-server
[sudo] gerrit 的密码: 
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
mysql-server 已经是最新版 (5.7.36-0ubuntu0.18.04.1)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 47 个软件包未被升级。


方法二: 使用sudo编辑/etc/sudoers,然后wq!退出即可
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/In_engineer/article/details/122596038