LINUX 安全运维-文件安全

辰星2年前技术文章792
文件的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文件中进行编辑,然后重新登录系统就修改成功


相关文章

K8s中的Service服务

K8s中的Service服务

为何需要 ServiceKubernetes 中 Pod 是随时可以消亡的(节点故障、容器内应用程序错误等原因)。如果使用 Deployment 运行您的应用程序,Deployment 将会在 Pod...

PG安装部署

一、rpm包安装部署1、安装RPM包# yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_6...

MySQL运维实战(4.5) SQL_MODE之NO_ZERO_DATE和NO_ZERO_IN_DATE

NO_ZERO_DATE:日期中不允许'0000-00-00'NO_ZERO_IN_DATE:日期中年、月或日不允许为0,如不允许'2021-00-01', '...

flink获取taskmanager的pstree信息

flink获取taskmanager的pstree信息

使用pstree –p 进程号 的方式能够获取taskmanager的pstree信息,这个地方提供一个收集脚本。内容如下:#!/bin/bashsearchPID() {   l...

PG的锁(二)

四、死锁PostgreSQL自动检测死锁情况并会自动回滚其中一个事务进行处理,从而其他事务完成。db1=# select * from t1 where id in (1,2,3);  id | i...

MySQL 在线开启 GTID

MySQL 在线开启 GTID

描述生产环境上也会遇到需要开启 GTID ,有什么风险?如何在线开启?本篇 SOP 将介绍。GTID 限制由于基于 GTID 复制依赖于事务,所有开启 GTID 时,有些 MySQL 特性不支持:事务...

发表评论    

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