Linux安全优化之权限详解

文件权限存在的意义

1、文件权限的存在是系统最底层安全设定方法之一
2、保证文件可以被授权的用户做相应的操作

文件权限的查看

ls -l file文件权限查看
ls -ld dir目录权限查看
ls -LR dir递归目录查看
ll file文件权限查看
ll -d dir目录权限查看

在这里插入图片描述

对权限的理解

r:
1、对文件:是否可以查看文件中的内容 —>cat file
2、对目录:是否可以查看目录中有什么子文件或者子目录 —> ls dir
w:
1、对文件:是否可以改变文件里面记录的字符
2、对目录:是否可以对目录中子目录或子文件的元数据进行更改
x:
1、对文件:是否可以通过文件名称调用文件内记录的程序
2、对目录:是否可以进入目录

文件权限的读取

- | rw-rw-r--| 1 | root| root | 0 | Oct  1 1434 | file
文件类型|文件权限|内容被记录次数|文件所有人|文件所有组|文件大小|文件最后一次被修改时间|文件名称

文件类型

-空文件,文本
d目录
l软链接
ssocket套接字
bblock块设备
c字符设备

文件权限

rw-|rw-|r--
 1  2  3
1.[u] 文件所有者对文件能做操作
2.[g] 文件所有组对文件能做操作	
3.[o] 其他人对文件能做操作

内容被记录次数

1、文件:文件的硬链接个数
2、目录:目录中子目录个数

更改文件和目录的所有人、所有组

chown student file     ##更改file文件的所有人
chgrp westos file1     ##更改file1文件的所有组
chown student.westos file2 ##同时更改file2文件的所有人、所有组

示例:
此操作在watch监控下完成

watch -n 1 "ls -lR /mnt/mnt"   ##-lR 含义:同时监控目录下的文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

chown -R lee.westos file1 ##更改目录本身及目录下的文件

示例:注意对比,没有-R只改变目录的用户和家目录,但其下文件并没有更改。
在这里插入图片描述
在这里插入图片描述

 chgrp	新所有组名称	文件名			##更改文件所有组
 chgrp	新所有组名称	目录名			##更改目录的所有组
 chgrp	-R 	新所有组名称		目录名	##更改目录本身与目录下所有文件的所有组

改变文件的权限

chmod	<u|g|o><+|-|=><rwx>	file|dir
chmod	u+x		/mnt/file1
chmod	g-r		/mnt/file2
chmod	ug-r	/mnt/file3
chmod	u-r,g+x		/mnt/file4
chmod	-r		/mnt/file5
chmod	a-r		/mnt/file6
chmod	o=r-x	/mnt/file7

示例:在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

chmod --reference=file|dir	file1|dir1	##复制file或dir的权限给file1或dir1

示例:
在这里插入图片描述
数字方式权限指定:

--x       001        1
-w-       010        2
-wx       011        3
r--       100        4
r-x       101        5
rw-       110        6
rwx       111        7
4——r
2——w
1——x

在这里插入图片描述

umask 命令

从系统存在角度来说,开放权力越大,系统存在意义越高,从系统安全角度来说,开放权力越少,系统安全性越高.

umask           ##系统默认umask为0022,umask值中第一位与特殊权限有关
umask 077       ##修改该系统保留权限为077,此设定为临时设定,只当前shell中生效

在这里插入图片描述
要想永久修改umask;

vim /etc/bashrc            ##shell配置文件
vim /etc/profile           ##系统配置文件
source /etc/bashrc
source /etc/profile    ##让更改立即生效

示例:第一个为普通用户的umask,第二个为超级用户的umask
在这里插入图片描述
进行更改
在这里插入图片描述
注意:两个文件的umask值必须都要更改
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

粘制位sticky

1、作用:
只针对目录生效,当一个目录上有sticky权限时,在这个目录中的文件只能被文件的所有者删除。
2、设定方式:

chmod o+t dir
chmod 1xxx dir

示例:
在这里插入图片描述
在这里插入图片描述

强制位 sgid

1、作用:
对文件:只针对与二进制可执行文件,当文件上有sgid时任何人执行此文件产生的进程都属于文件的组。
对目录:当目录上有sgid权限时任何人在此目录中建立的文件都属于目录的所有组。
2、设定方式

chmod    g+s   file|dir
chmod    2xxx  file|dir

示例:
在这里插入图片描述
在这里插入图片描述
注意观察下两图,用户组改变了
在这里插入图片描述
在这里插入图片描述

冒险位 suid

1、作用:
只针对与二进制可执行文件,当文件上有suid时任何用户执行这个文件中的程序产生的进程都属于文件的所有人。
2、设定方式:

chmod	u+s	    file
chmod	u-s	    file		##撤销权限
chmod	4xxx	file

示例:
在这里插入图片描述

acl权限列表

1、作用:让特定用户对特定文件拥有特定权限
2、acl列表查看:

-rw-rwxr--+ 1 root root 0 Jul 21 15:55 file
	       ^ 加号表示acl开启

查看acl开启的文件的权限:

getfacl	file	##查看acl开启的文件的权限

acl列表每一行的含义:

 #file:file			##文件名称
 #owner:root		    ##文件拥有者
 #group:root		    ##文件拥有组
 user::rw-			##文件拥有人的权限
 user:student:rwx  	##指定用户的权限
 group::r--		    ##文件拥有组的权限
 group:student:rwx	##指定用户组的权限
 mask::rwx			##能赋予用户的最大权力阀值
 other::r--		    ##其他人的权限

3、acl列表的管理

getfacl    file
setfacl    -m u:username:rwx file  ##设定username对file拥有rwx权限
setfacl    -m g:group:rwx file     ##设定group组成员对file拥有rwx权限
setfacl    -x u:username file      ##从acl列表中删除username
setfacl    -b file                 ##关闭file上的acl列表 

示例:让tom对file拥有特定的权限
在这里插入图片描述
删除 tom 对file的特定权限
发现+仍然存在
在这里插入图片描述
关闭acl权限
在这里插入图片描述

mask值

当权限列表中mask标示能生效的权利值
当用chmod减小开启acl的文件权限时mask值会发生改变

chmod g-W westos

如果要恢复mask的值

setfacl -m m:rw westos

示例:
在这里插入图片描述
在这里插入图片描述

acl的默认权限的设定

acl默认权限只针对目录设定
注意:acl权限只针对设定完成之后新建的文件或目录生效,而对已经存在的文件是不会继承默认权限

setfacl -m d:u:student:rwx /mnt/westos
setfacl -k /mnt/westos     ##关闭默认权限

示例:建立目录给予权限
在这里插入图片描述
在该目录下建立没有默认权限
在这里插入图片描述

在这里插入图片描述
进行此步操作
在这里插入图片描述
再次在该目录下建立文件都会默认权限
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

权限优先级排序

userperm > acluser > aclgroup > groupperm > otherperm
即:用户权限> acl用户权限 > acl组权限 > 组权限 > 其他用户权限

chatter命令

用chattr命令可以改变一个文件的隐藏属性。

chattr [-RVf][-v version] [mode]  files…
这个错误是由于无法连接到本地主机的10248端口导致的。这个端口通常是kubelet进程监听的端口,用于健康检查。出现这个错误可能是由于kubelet进程没有正确启动或者配置错误导致的。 解决这个问题的方法是检查kubelet进程的状态和配置。你可以按照以下步骤进行操作: 1. 检查kubelet进程是否正在运行。你可以使用以下命令检查kubelet进程的状态: ```shell systemctl status kubelet ``` 如果kubelet进程没有运行,你可以使用以下命令启动它: ```shell systemctl start kubelet ``` 2. 检查kubelet的配置文件。你可以使用以下命令查看kubelet的配置文件路径: ```shell kubelet --kubeconfig /etc/kubernetes/kubelet.conf --config /var/lib/kubelet/config.yaml --bootstrap-kubeconfig /etc/kubernetes/bootstrap-kubelet.conf config view ``` 确保配置文件中的端口号和地址正确,并且与你的环境相匹配。 3. 检查网络连接。你可以使用以下命令检查是否可以连接到localhost10248端口: ```shell curl -sSL http://localhost:10248/healthz ``` 如果无法连接,请确保端口没有被防火墙或其他网络配置阻止。 4. 检查docker的配置。有时候,kubelet进程依赖于docker进程。你可以按照以下步骤检查docker的配置: - 创建/etc/docker目录: ```shell sudo mkdir /etc/docker ``` - 编辑/etc/docker/daemon.json文件,并添加以下内容: ```json { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ], "registry-mirrors": ["https://tdhp06eh.mirror.aliyuncs.com"] } ``` - 重启docker进程: ```shell systemctl restart docker ``` 请注意,以上步骤是一种常见的解决方法,但具体解决方法可能因环境而异。如果以上步骤无法解决问题,请提供更多的错误信息和环境配置,以便我们能够更好地帮助你。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值