为什么要对用户进行分组?
对用户进行分组有以下几个好处:
管理与权限控制:通过将用户划分到不同的组中,管理员可以更轻松地管理和控制用户访问权限。管理员可以为每个组分配不同的权限和资源访问级别,以确保安全性和资源的公平分配。
组织和分类:分组可以帮助管理员将用户按照其职能、部门或其他标准进行组织和分类。这样可以更好地管理用户,并对他们进行分类、标记和识别。
简化管理工作:通过对用户进行分组,管理员可以更容易地管理用户。例如,可以更方便地创建、删除或修改用户组信息,而无需逐个处理每个用户的帐户信息。
提高安全性:通过分组,管理员可以更好地控制系统中的资源和访问权限,从而提高系统的安全性。例如,可以为某些组禁止访问某些敏感资源或限制其访问。
快速授权和取消授权:分组可以使管理员更方便地授权和取消授权对资源的访问权限,而无需逐个处理每个用户的帐户信息。
总之,对用户进行分组可以使管理员更方便地管理和控制用户访问权限,从而提高系统的安全性、资源利用效率和管理效率。
一个用户至少属于一个组
组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.组名
2.组密码
3.GID
4.用户列表:有些可能没写出来,比如说root组里面肯定有一个root用户
组密码显示的全是X,是因为组密码是存放在一个影子文件中的
cat /etc/gshadow
这个文件非常重要,在渗透提权的时候使用得非常多
组密码显示的全是X,是因为密码是存放在一个影子文件中的
cat /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
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是翻到上一页
配置好之后redsun用户可以通过sudo+命令和输入redsun的密码,来执行只有root用户才能执行的命令了
比如说,redsun用户在Linux上新建一个用户test1:
sudo useradd test1
操作 | 命令 |
---|---|
查询用户账号身份标识 | id |
查询用户账号的登录属性 | finger |
查询当前主机的用户登录情况 | w、who |
查询系统当前在线的用户 | users |
查看用户 | whoami |
切换用户 | su |
finger是第三方工具需要安装
yum install -y finger
在Linux文件系统的安全模型里,所有的文件都有两个属性:文件所有者和访问权限
文件所有者:所属用户、所属组
访问权限:读、写、执行
更改文件或目录的所属用户:
chown -R 用户名 路径
更改文件或目录的所属用户和用户组:
chown -R 用户名:组名 路径
-R选项:递归,更改文件的时候不需要这个选项
文件权限字符串的构成
drwxrwxr-x | |||
文件或目录类型 | 所属用户的权限 | 所属组的权限 | 其他用户的权限 |
d | rwx | rwx | r-x |
符号 | 单词 | 含义 | 对于文件 | 对于目录 |
---|---|---|---|---|
r | read | 可读 | 可以读取 | 可以浏览内容 |
w | write | 可写 | 可以修改 | 可以删除、移动内容 |
x | execute | 可执行 | 可以执行 | 可以进入目录 |
- | 没有权限 |
rwx-对应数字:4210
修改权限
添加组用户的写权限。全拼: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=其他文件 文件