[Redhat笔记]权限管理,以及如何使用隐藏属性。

================================================
文件权限管理的扩展:
文件管理权限的模型
文件:属主,属组
每一类用户都有权限。读写执行 rwx,组合起来就是9位
在这些权限中有一个比较特殊的权限
作为一个普通用户来讲,修改密码,则要修改/etc/shadow,但是shadow文件权限 400 ,属主属组都是root,他是如何实现保存密码的呢?

s:SUID: Set UID :如果一个文件具有s执行权限的话,当一个普通用户来执行这个文件的时候,不是以用户的身份来执行,而是按照文件的属主的身份来运行。临时切换,只有当运行那个命令才具有的效果。

SUID可以让某些用户在执行某个命令的时候具有管理员的权限。但这个功能是把双刃剑。
SGID:Set GID : 一个用户执行命令的时候,不是以用户本身的组的身份,而是以文件属组的身份来运行。

假设场景:公司里有一个开发团队。大家都属于一个组,要开发一个程序,程序都在/project/,当将其他人都加入那个组都能访问之后。如果其中一个用户在里面创建了一个文件,则这个新文件的属组是创建文件的那个用户,则其他人就都进不来这个文件了。为了解决这样的情况。

如果给一个目录设置了SGID位:通常意味着,如果一个用户所属目录所在的组的话,则在这个目录下,用户创立的文件的属组不在是基本组,而是目录所属的属组。

-----------------------------------------------------
如何能让文件具有s位呢?
chmod u+s /etc/aaa.sh
则可以将/etc/aaa.sh变为具有SUID属性的文件。
----------------------------
原有用户具有执行权限则是 S
原有用户没有执行权限则是 s
----------------------------
如何让目录具有s位呢?
chmod g+s /project/
则可以将/project/这个目录设置成具有SGID的权限。
----------------------------------------------------


STICKY:
t 位:sticky粘滞位。对于一个大家都可以写的公共场所,每一个用户都可以写,删除权限的前提下,我们限定,大家只能删除自己的。这样的功能,就是 t位 。/tmp 就是有特殊属性 t 的目录。
t位是放在 o 上的, 其他人上的。

chmod o+t /project/


-----------------------------------------------------
SUID , SGID , STICKY
他们也用3位2进制来表示
  4 2   1                


000 0
001
010 2
011 3
100 4
101 5
110 6
111 7


所以权限设置变成了4位:
chmod 7755 /a.txt
则第一位就表示 S 的各种设置
后三位表示 属主 属组 其他人
----------------------------------------------------
系统的安全机制:umask (过滤码)
使用 umask 命令可以查看当前用户的值
对于普通用户来讲  umask:0002
对于管理员来讲  umask : 0022


所以当
管理员创建文件夹的时候是 777-umask = 755
对于管理员创建文件的时候 666-umask = 644
所以:
管理员建立文件默认是  644 权限
管理员建立文件夹默认是 755 权限
用户建立文件默认是 664  权限
用户建立文件夹默认是 775 权限
------------------------------------------------------------
umask是可以改变的
umask N:
比如:umask 027

假设,我们让用户设置754权限则: 777-754= 023 所以,umask =023
而创建文件的时候,666-023 = 643。但是文件的默认权限是不具有x权限的,所以643会自动将其变成642

umask的设置是不具有持久性的。重登陆之后则失效
使用umask命令设置的命令是只对当前用户的当期shell有效。
----------------------------------------------------------------------
如果想让他永远有效:则需要将umask定义在启动配置文件中
全局:/etc/profile  ,/etc/profile.d/*  /etc/bashre
用户:~/.bash_profile , ~/.bashrc
profile类,应用于交互式登录shell
bashrc类,非交互式登录。

交互式登录:读取次序:(越靠后优先级越高)
      /etc/profile --> /etc/profile.d/* --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
非交互式shell  :当一个脚本系统能开机自动运行的shell 运行次序
      ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*
------------------------------------------------------------------------
所以,想让修改umask则,编辑/etc/bashrc里
如果想单独修改用户,则只需要定义那个用户的 ~/.bashrc
-------------------------------------------------------------------------
gentoo自己建立的文件,如何让centos具有写权限?
为了完成这样的任务:
ACL:Access Control List :访问控制列表,应运而生!
文件系统的acl, 扩展权限信息。除了定义属主属组,还可以定义acl来看谁能访问,谁不能访问。
这都是扩展属性(隐藏属性):
lsattr : 命令
查看文件的扩展属性。
------------------------------------------------------------
getfacl:查看访问控制列表
getfacl + 文件名:查看这个文件的隐藏信息
属主:权限
属组:权限
其他人:权限
------------------------------------------------------------
setfacl:定义控制列表,比如设置acl 删除acl等。。。
setfacl [options] id:operand

-m:设置权限
setfacl -m u:UID:PERM FILENAME 设置某用户的特殊权限
setfacl -m g:GID:PERM FILENAME 设置组的权限
setfacl -m u:redhat:rw 1.txt
则设置1.txt的特殊acl为 用户 redhat 具有 写权限
setfacl -m g:devgrp:rw- 1.txt
则设置组名为devgrp的组在1.txt的文件权限具有rw-的权限
设置后,在ll的权限最后会有一个“ +”证明,这具有隐藏权限。

d:用于设定默认权限位(只能设置在目录上,让目录里的所有文件都继承目录的这种隐藏权限)
setfacl -m d:u:redhat:r-- /mydata/

u表示给用户设定
g表示给组设定
m表示给正向掩码设定(正向权限的△有效位△)
setfacl -m m::r-- 1.txt
则设定了mask定义的正向权限是r--,所以,不管其他用户的权限是什么,都将只能是r--
o表示给其他用户设定


-x:撤销其中一个用户/组/其他人的权限
setfacl -x u:redhat 1.txt
则设置用户为redhat的用户对1.txt的特殊权限消失。
-b:移除一个文件所有的acl权限
-k:删除默认访问控制列表
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值