Linux用户和权限管理

Linux用户和权限管理

Linux用户和权限管理_第1张图片

一、用户组

为什么要对用户进行分组?
对用户进行分组有以下几个好处:

  1. 管理与权限控制:通过将用户划分到不同的组中,管理员可以更轻松地管理和控制用户访问权限。管理员可以为每个组分配不同的权限和资源访问级别,以确保安全性和资源的公平分配。

  2. 组织和分类:分组可以帮助管理员将用户按照其职能、部门或其他标准进行组织和分类。这样可以更好地管理用户,并对他们进行分类、标记和识别。

  3. 简化管理工作:通过对用户进行分组,管理员可以更容易地管理用户。例如,可以更方便地创建、删除或修改用户组信息,而无需逐个处理每个用户的帐户信息。

  4. 提高安全性:通过分组,管理员可以更好地控制系统中的资源和访问权限,从而提高系统的安全性。例如,可以为某些组禁止访问某些敏感资源或限制其访问。

  5. 快速授权和取消授权:分组可以使管理员更方便地授权和取消授权对资源的访问权限,而无需逐个处理每个用户的帐户信息。
    总之,对用户进行分组可以使管理员更方便地管理和控制用户访问权限,从而提高系统的安全性、资源利用效率和管理效率。

一个用户至少属于一个组
组ID-Group ID-GID:
1.root用户组:GID=0
2.程序用户组(系统用户组):1-999(CentOS7)
3.普通用户组:1000-65535

Group相关命令
查看全部组:

cat /etc/group

查看用户的所属组:

groups

添加用户组:

groupadd 组名

删除用户组:

groupdel 组名

二、用户

用户ID-User ID-UID
1.root用户:UID=0(反之也成立)
如果一个用户的用户名不是root,但它的UID=0,那他就是root用户。
2.程序用户(系统用户):1-999(CentOS7)
3.普通用户:1000-65535
cat /etc/passwd

user相关命令:
添加用户:

useradd ...

修改用户密码:

passwd ...

删除用户:

userdel ...

修改用户信息:

usermod ...

没有给出完整命令,感兴趣可以去查.

三、用户管理相关文件

1、/etc/group

冒号是分隔符
1.组名
2.组密码
3.GID
4.用户列表:有些可能没写出来,比如说root组里面肯定有一个root用户
Linux用户和权限管理_第2张图片
组密码显示的全是X,是因为组密码是存放在一个影子文件中的
cat /etc/gshadow

2、/etc/passwd

这个文件非常重要,在渗透提权的时候使用得非常多
Linux用户和权限管理_第3张图片
组密码显示的全是X,是因为密码是存放在一个影子文件中的
cat /etc/shadow

3、影子文件/etc/shadow

在这里插入图片描述

redsun:用户名
$5$83Wy8d7esJJuXDw5$kJtkqcc8kg7geqNFBlbM.fs8MylNLPW.5AZOeDnN3A2:密码
19703:最后修改时间(1970年1月1日后的多少天)
0:最先修改间隔时间
99999:密码有效期
7:密码需要变更前的警告天数
:密码过期后的宽限天数
:账号失效时间
:保留

将1970年1月1日后的天数转换为正常日期格式:

date -d "1970-01-01 天数 days"

密码格式:$id$salt$encrypted
id:加密方式
salt:盐(Salt)是在对密码进行哈希处理之前,随机添加到密码中的一段额外数据。它的作用是使相同的密码在不同用户之间产生不同的哈希值,增加了密码存储的安全性
盐(Salt)是在对密码进行哈希处理之前,随机添加到密码中的一段额外数据。它的作用是使相同的密码在不同用户之间产生不同的哈希值,增加了密码存储的安全性。
举个简单的例子,假设有两个用户使用相同的密码"password",如果不使用盐值,那么这两个用户的密码哈希值将完全相同。而当我们引入盐值之后,即使密码相同,由于盐值不同,最终的哈希值也会不同。
比如,对于密码"password",一个用户的盐值为"abc123",另一个用户的盐值为"xyz789",最终生成的哈希值就会因盐值的不同而不同,增加了密码的安全性。
因此,使用盐值可以有效地防止彩虹表攻击等常见的密码破解方式,提高了密码存储的安全性。

id 加密方式
1 MD5
2a Blowfish(某些Linux发行版)
5 SHA-256
6 SHA-512

只能由密码明文单向计算密码密文

 openssl passwd -1 -salt admin 123456

这个命令是使用OpenSSL工具来生成一个使用MD5加密算法的密码哈希值。具体参数的解释如下:
passwd:OpenSSL工具的子命令,用于生成密码哈希值。
-1:指定使用MD5算法进行加密。这里的数字1代表MD5算法,可以使用其他数字选择不同的加密算法。
-salt admin:指定一个自定义的盐值。盐值是一个随机字符串,用于增加密码哈希的安全性。这里的盐值是"admin",可以根据需要修改。
-123456:要加密的明文密码。
执行该命令后,将会得到一个以 1 1 1开头的密码哈希值,它包含了使用MD5和指定盐值对明文密码加密后的结果。

当我们想更改账户的密码时,就通过openssl命令生成密码的哈希值
比如我想将用户hc的密码修改为aabbcc
首先使用

openssl passwd -1 -salt admin aabbcc

生成密码的哈希值
1 1 1admin$UeTgjpMGuVCQm/qy3NT/G.
生成密码的哈希值之后,需要使用 usermod 命令来修改用户的密码:
以 root 用户身份登录
运行以下命令来修改用户 hc 的密码

usermod -p "$1$admin$UeTgjpMGuVCQm/qy3NT/G." hc

4、/etc/sudoers

sudo:super user do
/etc/sudoers 是一个系统文件,它用于配置 Linux 系统中 sudo 命令的权限。sudo 命令允许普通用户以超级用户的身份执行特权命令。
/etc/sudoers 文件包含了一系列规则和配置选项,用于确定哪些用户、组或主机可以使用 sudo 命令以及他们可以执行哪些特权命令。

列出当前用户可以使用的所有 sudo 命令和执行限制:

sudo -l 

在这里插入图片描述
这种情况很正常,因为我还没有为redsun配置sudoers文件

配置sudoers文件之前,先查看一下sudoers文件的权限:

ll /etc/sudoers

在这里插入图片描述
修改文件或目录权限,这个命令后面会讲到

chmod u=rw /etc/sudoers
//为当前用户(root)添加读写权限

在这里插入图片描述

root用户为redsun配置sudoers文件:

vim /etc/sudoers

提示:再在vim编辑器中ctrl+F是翻到下一页,ctrl+B是翻到上一页
Linux用户和权限管理_第4张图片
配置好之后redsun用户可以通过sudo+命令和输入redsun的密码,来执行只有root用户才能执行的命令了
比如说,redsun用户在Linux上新建一个用户test1:

sudo useradd test1

四、用户管理基本命令

1、基本命令

操作 命令
查询用户账号身份标识 id
查询用户账号的登录属性 finger
查询当前主机的用户登录情况 w、who
查询系统当前在线的用户 users
查看用户 whoami
切换用户 su

finger是第三方工具需要安装

yum install -y finger

2、用户和文件的关系

在Linux文件系统的安全模型里,所有的文件都有两个属性:文件所有者和访问权限
文件所有者:所属用户、所属组
访问权限:读、写、执行

五、文件和目录归属

在这里插入图片描述

更改文件或目录的所属用户:

chown -R 用户名 路径

更改文件或目录的所属用户和用户组:

chown -R 用户名:组名 路径

-R选项:递归,更改文件的时候不需要这个选项

六、文件和目录权限

在这里插入图片描述
文件权限字符串的构成

drwxrwxr-x
文件或目录类型 所属用户的权限 所属组的权限 其他用户的权限
d rwx rwx r-x
符号 单词 含义 对于文件 对于目录
r read 可读 可以读取 可以浏览内容
w write 可写 可以修改 可以删除、移动内容
x execute 可执行 可以执行 可以进入目录
- 没有权限

rwx-对应数字:4210
Linux用户和权限管理_第5张图片

修改权限
添加组用户的写权限。全拼:change mode

chmod g+w 文件或目录

删除其他用户的所有权限:

chmod o= 文件或目录

使得所有用户都没有写权限:

chmod a-w 文件或目录

使得当前用户具有所有权限,组用户有读写权限,其他用户只有读权限

chmod u=rwx,g=rw,o=r 文件或目录
等价于
chmod 784 文件或目录

将目录以及目录下的文件都设置为所有用户拥有读写权限:
注意,使用’-R’选项一定要保留当前用户的执行和读取权限,否则会报错!

chmod-R a=rw testdir/

根据其他文件的权限设置文件权限:

chmod --reference=其他文件 文件

你可能感兴趣的:(Linux基本操作,linux,运维)