LINUX 安全运维-文件安全

辰星2年前技术文章477
文件的ACL

针对文件以及文件夹我们在新建的时候,通常会有一个默认的权限:image.png

[rootobogontmplmkdirtest
[rootcbogontmp]touchtestxt
[rootcbogontmp]it
totale
doxr-xr-x.2rootroot6Jan721:40test
n-p--r-a.lrootrootoJan721:41test.txt
[rootabogontmpi

我们会发现文件夹是755,而我们的文件是644,这是为什么呢,原因就是在linux中默认的umask权限,这个umask一般在我们的/etc/profile
#/r/share/doc/setupuidgidfie
ifISUID-qt199158Lid-gn2
:then
Umask002
else
Umask@
image.png
umask值:022代表什么意思呢,umask其实是权限的补码,就是在777权限上减去的值,所以我们文件夹的权限是7-0/7-2/7-2=755,那为什么我们文件的是644呢,因为创建文件的时候还需要减去一个默认的执行权限1,所以文件的权限就是7-1/7-3/7-3=644
平时我们修改文件权限的常用命令有这些:chmod、chown、chattr等,但是对于文件还有一个ACL(访问控制列表)机制,下面就以Centos7中来介绍一下文件的访问控制,对于ACL常见的命令有3个:setfacl、getfacl、chacl
LrootebogonD
totale
dnwxr-xr-x.2root
hoot6Jan1020:55test
root6
.lrootrooteJan1020:55test.txt
[rootabogonDesktoplcgetfacltest.x
file:test.txt
owner:root
group:root
USeR::RW-
group::f..
other::[..
LrootooogonDesktoplagetfacltes
file:test
owner:root
group:root
User::nx
group::r-x

image.png
通过上图我们可以发现对文件的描述是一样的,文件名、拥有着、所属组、以及他们对应的权限;对于getfacl获取文件的权限没有什么可说的,这里详细说一下对文件权限的设置:
首先是参数:
#!bash
setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
-b:删除所有的acl参数
-k:删除预设的acl参数
-n:不重新判断是否有效
-d:设置预设的acl参数(只针对目录,在目录中的新建文件同样使用此acl)
-R: 递归设置后面的acl参数
-x:删除后面指定的acl参数
-m:设置后面指定的acl参数
针对acl参数:
#!bash
[u/g/o]:[username/groupname/空]:[rwx] filename
命令记录功能
在Linux系统中,有一个很重要的命令可以帮助我们曾经使用过的命令记录,但是也许有的时候我们并不需要这个功能,或者某些用户需要某些用户不需要,这个时候我们可以都配置文件进行配置:
配置文件:/etc/bashrc
在里面加入这4行
#!bash
HISTFILESIZE=1000 #保存命令的记录总数
HISTSIZE=1000 #history命令输出的命令总数
HISTTIMEFORMAT='%F %T' #定义时间显示格式
export HISTTIMEFORMAT #载入

HISTFILE=/root/test #里面命令保存目录
export HISTFILE #载入,重新登陆用户生效
export HISTCONTROL #忽略重复的命令
export HISTIGNORE="[ ]*:&:bg:fg:exit" #忽略冒号分割这些命令
我们如果不想使用保存命令将记录总数设置为0就可以了;
若需要“高性能构建Linux服务器”中提到的一个使用history记录用户的操作,在/etc/profile文件中添加如下代码:
</pre>
<div>
<div>#!bash</div>
<div>#history</div>
<div>USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'` #这句话就是先获取用户及IP信息,将标准错误输出到黑洞当中,然后使用awk命令获取最后一组参数,再通过sed将()替换掉;</div>
<div>HISTDIR=/usr/share/.history</div>
<div>#判断IP</div>
<div>if [ -z $USER_IP ]</div>
<div>then</div>
<div>USER_IP=`hostname`</div>
<div>fi</div>
<div>#判断是否存在日志目录</div>
<div>if [ ! -d $HISTDIR ]</div>
<div>then</div>
<div>mkdir -p $HISTDIR</div>
<div>chmod 777 $HISTDIR</div>
<div>fi</div>
<div>#生成日志日文件</div>
<div>if [ ! -d $HISTDIR/${LOGNAME} ]</div>
<div>then</div>
<div>mkdir -p $HISTDIR/${LOGNAME}</div>
<div>chmod 300 $HISTDIR/${LOGNAME}</div>
<div>fi</div>
<div>export HISTSIZE=4000</div>
<div>DT=`date +%Y%m%d_%H%M%S`</div>
<div>export HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.history.$DT"</div>
<div>export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S]"</div>
<div>chmod 600 $HISTDIR/${LOGNAME}/*.history* 2>/dev/null</div>
</div>
<pre>
rootobogonDesktop]
p]#who-uami2-/dev/null
3063(192.168.174.1)
2016-01-1020:55
root
pts/日
rootcoogonDesktopjho
(192.168.174.1
uamiz/dev/null/awklprintFsede's/to
192.168,174.1
[rootcoogonDesktop]#
image.png

如果我们是想给不同的用户设置history配置,我们就可以在相对应的账户家目录中的.bash_profile文件中进行编辑,然后重新登录系统就修改成功


相关文章

Docker 容器技术:简化 MySQL 主从复制部署与优化

前言    在现代数据库管理中,MySQL 主从复制是一种关键技术,用于提高数据的可用性和性能。随着 Docker 容器技术的普及,利用 Docker 搭建 MySQL 主从复制环境已成为一种趋势,它...

RBAC

RBAC

API 对象在学习 RBAC 之前,我们还需要再去理解下 Kubernetes 集群中的对象,我们知道,在 Kubernetes 集群中,Kubernetes 对象是我们持久化的实体,就是最终存入 e...

GTID 模式 - 通过跳过事务解决主从故障

一、前言很多场景下我们需要跳过一个事务来修复主从关系,例如主从事务不一致,或者对无主键表更新,导致较大延迟,操作过程在此记录。二、操作流程1. 获取最后一个 GTID 操作在 GTID 模式下,如果需...

MySQL运维实战之ProxySQL(9.6)SQL黑名单

利用mysql_query_rules表中的error_msg字段,可以实现SQL黑名单的功能。如果规则设置了error_msg,当SQL语句匹配这条规则时,proxysql会直接将error_msg...

 MySQL性能优化(十)in参数列表过长导致的性能问题

MySQL性能优化(十)in参数列表过长导致的性能问题

有时候可能有人会问:where条件中使用in和or有什么区别,哪种写法性能更好?in参数个数有没有限制?下面就是一个由于in参数列表过长导致的性能问题。一个例子当时使用的是mysql 5.6版本SEL...

数仓主流架构简介之一

数仓主流架构简介之一

一、Lambda架构Apache Storm的创建者Nathan Marz于 2011 年开发,旨在解决大规模实时数据处理的挑战。Lambda数据架构提供了一个可扩展、容错且灵活的系统来处理大量数据。...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。