- 特殊权限管理
- 特殊权限:
SUID
:表示程序在运行时,相应进程的属主 是程序文件自身的属主,而不是启动者属主;
chmod u+s FILE
,或者chmod u-s FILE
:赋予文件SUID
权限,如果文件本身具有执行权限,则SUID
显示为s
,否则为S
,SUID
权限的危险性很大,很容易导致安全问题,对于文件/usr/bin/passwd
:就是一个很明显的使用SUID
权限的例子;
SGID
:运行相应进程时,相应进程的属组,是程序文件自身的属组,而不是启动者的属组,通过chmod g+ | - s FILE
;Sticky
:在公共目录里面,每个人都可以创建自己的文件,删除自己的文件,但是不能够删除别人的文件,这个权限主要是对于目录来说的,chmod o+t DIR
,chmod o-t DIR
,通过sticky
权限来防止恶意删除别人的文件;- 上面提到的三种特殊权限也可以使用数字来进行表示
SUID: 4, SGID: 2,Sticky: 1
; - 对于
umask
来说,四位含义本身表示的含义包括:1
位特殊权限,以及三位普通权限;
- 特殊权限:
- 关于权限的一种情况:
- 用户
hadoop
在运行一个命令时,假设是一个可执行文件/bin/ls
,这个可执行文件的属主和属组都是root
:
- 首先应该判断期望执行这个可执行文件的用户是否为这个文件的属主或者属组;
- 其次判断是否对于这个文件具有希望的权限;
- 接下来判断是否具有特殊位的权限,使该用户执行这个文件;
- 当上述任意条件满足时,就可以执行这个可执行文件,并且创建对应的进程,进程的属主和属组是发起执行这个可执行文件的属主和属组,并不是 这个文件的属主和属组;
- 当这个进程在访问某些文件时,权限判断的标准,不再是进程对应的可执行文件的属主和属组,而是进程发起者的属组和属组;
- 用户
- 文件系统访问控制列表
- 对于
Linux
来说需要实现实现让tom
访问jerry
的文件时,同时tom
不属于jerry
,的基本组,那么只能够修改tom
其他用户的访问权限,这样相当于将权限扩展给了一类用户,而不是期望的一个用户,会导致安全风险会增大; - 所以引入了文件系统访问控制列表:
FACL:Filesystem Access Control List
:利用文件扩展属性,保存额外的访问控制权限,可以通过明确的指定jerr
y用户对于tom
的文件具有某个权限,这样可以将权限尽可能具体的进行限定,避免了上述风险; setfacl
:
-m
:可以用于设定在组上面或者是用户上面;
u:UID:perm
:用于设定某个用户具有perm
权限;g:GID:perm
:用于设定某个组具有perm
权限;d:u:UID:perm
:用于设定某个用户具有perm
权限,用于给某个目录设置默认的访问控制列表;d:g:GID:perm
:用于设定某个组具有perm
权限,用于给某写个目录设置默认的访问控制列表;
-x
:取消设定的访问控制列表
u:UID
:用于取消用户权限;g:GID
:用于取消组权限;
- 关于
facl
的mask
值: - 表示的含义是无论用户使用
setfacl
指定的权限是什么,都不可已超过这里指定的mask
的值,如果超出,超出的就会被截断,通常这么mask
需要手动指定,否则,这个mask
值是会改变的; - 需要注意的一点是:文件在进行归档或者复制时,文件的扩展属性是不会被复制过去的;
getfacl
:
- 用于获取文件的访问控制列表;
- 文件权限的匹配过程:
- 用户访问文件时,启动的进程是属主是用户,属组是用户的基本组;
- 1.进程的属主和文件的属主是否一致,一致应用属主进行权限访问;
- 2.否则,检查用户是否属于文件的属组,如果属于就应用于属组的权限进行访问;
- 3.否则,应用于
other
访问权限;
- 用户访问文件时,启动的进程是属主是用户,属组是用户的基本组;
- 当出现访问控制列表时,过程就会更改:
- 1.进程的属主和文件的属主是否一致,一致应用属主进行权限访问;
- 2.否则检查
fac
l里面的user
权限是否存在; - 3.否则,检查用户是否属于文件的属组,如果属于就应用于属组的权限进行访问;
- 4.否则,检查
facl
里面权限是否存在定义; - 5.否则就应用于
other
权限进行定义;
- 关于系统安全的几个命令
whoami
:
- 用于显示当权登录系统的有效用户;
who
:
- 显示当前登录到系统的用户以及用户登录的终端,时间;
-r
:用于显示当前运行级别的;-w
:显示登录信息更加详细;
last
:
- 用于显示登录日志;
- 实际上查看的内容是
/var/log/wtmp
文件的内容,用于显示登录历史信息 -n
:表示只显示最近几次的登录内容;
lastb
:
- 显示
/var/log/btmp
文件,显示用户错误的登录尝试; -n
:显示最近几次;
- 显示
lastlog
:
- 显示当前系统每一个用户上一次的登录时间
-u
:可以用于指定用户名;
hostname
:
- 用于显示当前主机的主机名;
hostname NEWNAME
:用于修改当前主机的主机名,echo $HOSTNAME
:用于显示主机名的环境变量;
- 终端类型:
- 控制台:
console
:表示直接联系到主机上面的物理设备,鼠标,显示器; - 物理终端
pty
:表示设备已经被识别出来,但是此时仍然和用户没有关联; - 虚拟控制台
tty
:登录用户的界面,通常是附加在某个物理界面上并且结合软件的方式虚拟实现的; - 伪终端
pts/#
:表示模拟出来的终端,图形界面的登录,ssh
的连接
- 控制台:
Linux 杂记
最新推荐文章于 2021-11-13 09:06:28 发布