linux中的权限—linux

文件的普通权限


在linux中,每个文件都有归属的所有者和所属组

普通文件的权限:可读(r),可写(w),可执行(x)

目录文件的权限:

可读(r):能够读取目录内的文件列表(ls)

可写(w):能够在目录中新增,删除,重命名文件(touch)

可执行(x):能够进入该目录(cd)



修改权限常用命令


两个命令的共性:针对目录进行操作的时候需要加上大写的参数-R来表示递归操作,即对目录内所有的文件进行整体操作。

chmod

用于设置文件的一般权限及特殊权限。

这是一个与文件权限的日常设置强相关的命令。

u:拥有者

g:同组者

o:其他人

a:以上三者都

+/-:增加/减少权限

-R:对当前目录下的所有子文件(普通文件+目录)进行相同的拥有者变更。

数字:777表示三者同时拥有rwx权限,可自行设置。

chmod -R a+r rootdir//给所有人rootdir目录以及目录下所有子文件的访问权限


chown

用于设置文件的所有者和所有组,此命令普通的用户是没有权限使用的,需切换到root管理员后才能使用

su root
chown -R root:root kevindir//将kevindir目录以及目录下的所有文件的所有者和所有组改成了root


同时修改普通权限和特殊权限

SUID、SGID与SBIT也有对应的数字表示法,分别为4、2、1。也就是说777还不是最大权限,最大权限应该是7777,其中第1个数字代表的是特殊权限位。既然知道了数字表示法是由“特殊权限+一般权限”构成的.

举个例子:rwsrwSr–的数字表示法是6764.




文件的特殊权限


SUID

SUID是一种对二进制程序进行设置的特殊权限,能够让二进制程序的执行者临时拥有所有者的权限。如果在执行此程序的时候加上了SUID权限,就会发现查看这个程序命令的属性的所有者权限由rwx变成了rws。(其中的x改变成了s就意味着文件被赋予了SUID权限,如果原先的权限是rw-,那么就会变成rwS)

注意:不要将SUID权限设置到vim,cat,rm等命令上(凡是正在执行被SUID的人都可以拥有最高权限,注意维护安全)


SGID

SGID特殊权限有两种应用场景。

1,对二进制程序进行设置的时候,能够让执行者临时获取文件所属组的权限

2,对目录进行设置的时候,让目录中新创建的文件自动继承该目录原有用户组的名称(解释:有一个目录的所有组是root且该目录设置了SGID权限,那么用户a在该目录中创建了新的文件,该文件所属的组并不是a,而应该是root)

如果在查看属性的时候发现所有组的权限由rwx变成了rws,就说明了使用了SGID权限。

举个例子:在开始的时候用root身份创建了rootdir的目录,属性中显示此目录的所有者和所有组都是root,然后使用chmod -R 777 rootdir这个命令,将这个目录的权限打开(为了让kevin可以创建新的目录)。切换用户到kevin,这个时候在rootdir中创建一个新的目录rootkevindir发现它的所有者和所有组是kevin。这个时候使用chmod -R g+s rootdir这个命令(将这个目录加上SGID这个权限),然后再切换到kevin用户,在rootdir中创建新的目录rootkevin2这个目录,发现这个目录的所有者是kevin,但是所有组就是root了。可以得出结论文件自动继承该目录原有用户组的名称。img


SBIT

SBIT权限可以确保用户只能删除自己的文件,而不能删除其他用户的文件。

去前面的SUID和SGID的权限显示方法不同,当目录被设置为了SBIT特殊权限以后,文件的其他用户o的x执行全权限就会被替换成t或者T(原先有x则变成t,没有则变成T)

chmod o+t kevindir//这样就增加了kevindir目录的特殊权限SBIT



文件的隐藏权限


隐藏起来的权限,默认情况下不能直接被用户发觉,这种“奇怪”的文件权限也保障了Linux系统的安全性。


chattr命令

chattr命令用于设置文件的隐藏权限()

如果想把某个隐藏功能添加到文件上,需要+参数

如果想把某个隐藏功能从文件中移除,需要-参数

chattr命令中可供选择的隐藏权限非常丰富

img

举个例子:

chattr +a test,在输入完这个命令以后test这个文件就只能被覆盖而不能被删除。



lsattr命令

lsattr命令用于查看文件的隐藏权限。

举个例子

lsattr test



文件访问控制列表


前文中讲到的一般权限,特殊权限,隐藏权限有一个共性就是能够同时对很多人生效。如果想针对某个指定的用户那么就需要用到文件的访问控制列表(ACL)。基于文件或目录设置ACL的意思也就是对设置操作权限

注意:如果针对目录设置了ACL,那么目录中的文件会继承其ACL特权;如果针对文件设置了ACL,那么文件就不再继承其所在目录的ACL特权。


setfacl

setfacl命令用于管理文件的ACL权限规则。

ACL权限提供的是在所有者、所属组、其他人的读/写/执行权限之外的特殊权限控制。使用setfacl命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制(也就是针对某个东西设置的特殊权限).其中,针对目录文件需要使用-R递归参数;针对普通文件则使用-m参数;如果想要删除某个文件的ACL,则可以使用-b参数

img

setfacl -参数 用户权限 文件

让某一个用户对某一个文件具有某种权限

举个例子:

[newuser1@localhost kevindir]$ cd /root 
bash: cd: /root: Permission denied//这里看出是会报错的
//进行更改
[root@localhost kevin]# setfacl -m u:newuser1:rwx /root
[root@localhost kevin]# su newuser1
[newuser1@localhost kevin]$ cd /root
[newuser1@localhost root]$ 

再举个例子:

在kevin用户中创建了文件test,内容是try.需求是用户newuser1对test能够拥有rwx权限.

[root@localhost kevindir]# setfacl -m u:newuser1:rwx test
[root@localhost kevindir]# su newuser1
[newuser1@localhost kevindir]$ cat test
try

如果针对的是某一组的权限,那么把u改成g即可.

权限:-rw-rwxr–+,发现后面有个+,这就说明了此文件已经设置了ACL.

删除某个acl权限:

[root@localhost kevindir]# setfacl -x u:newuser1 test//删除newuser1上关于test权限的acl权限.


getfacl命令

getfacl命令用于查看文件的ACL权限.

[newuser1@localhost kevindir]$ getfacl test
# file: test
# owner: root
# group: kevin
user::rw-
user:newuser1:rwx//可以看出这一句就是加的ACL权限
group::r--
mask::rwx
other::r--
  • 33
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 36
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是小明同学啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值