linux权限归属以及su和sudo相关总结(8/20)

linux赋予权限的对象主要划分为三个部分,所属着,所属组,其他。使用ll命令可以很好的查看到。

其权限的种类主要是读取,写入(即修改),执行

针对这三种权限的种类,作用在文件和目录上也是不同的。

若是作用在文件上,其实这三种权限也是比较直观:读取即可以直接文件的内容,写入就是可以对文件内容进行修改,执行即可以执行该文件。

而目录则有些不同,读取对于目录来说就是可以展开目录的结构,包括子目录和文件列表。等于说相当于ntfs的可列出文件目录的权限选项,修改则是可以修改目录的结构,就是删除文件,增加文件,删除增加目录。执行对于目来说就是可以进入该目录或者退出该目录

权限赋予命令(chmod)

chmod的权限授予方式比较多样

可以针对某个对象去赋予权限,这样的对象总共有四个,分别是a(all代表所有的对象),u(代表的是所属者,g代表的是所属组,o代表的是其他other)

比如:chmod u+rxw file 这样就为文件赋予了权限,chmod u-rxw file这样就为文件减去了权限

上例中的权限赋予也可以使用==号将某个目录或者文件的权限进行一步到位的修改。

如有一个文件的权限是所有人都是完全控制的权限,那么我可以使用chmod a==--- file,这样就可以使得文件的权限全部删去。但是总的来说和上述的大同小异。

还可以使用421三个数字代表rwx三个权限。

这样我们赋予权限的时候就可以这样赋予:chmod 777 file ,这样的话我们就可以快速的针对某些对象赋予上想要的权限。

 linux的目录与文件权限都有一个默认值,与ntfs的继承不同。无论是文件还是目录创建出来都会赋予一个默认的权限。

我们来看一个例子:假设有两个用户,用户1和用户2,用户1创建了一个目录并限制了用户2的对于此目录的全部权限。那么此刻用户2无疑是不能对这个目录做任何相关的操作。

假设此时用户1释放了用户2 对于该目录的执行权限,也就是进入目录的权限,那么用户2将会被允许进入该目录,但是且不能列出该目录的内容。如果此时用户1再次释放了关于用户2的读取权限,那么用户2将可以列出该目录的内容。当用户1释放w的权限之后,用户2就可以在当前目录上做全部的操作。

但是要注意,这些权限仅仅限于这一层目录,若下一层目录的权限对用户2的权限做了限制,同样用户2依然无法对限制的目录进行操作。

我们来看一下这样的情况,假设有一个目录A,它有子目录B,而子目录B又有子目录C

A目录对于用户2 的权限是r-x,可见用户2是不能修改A目录的结构。但是子目录B对于用户2的权限是rwx,而目录B的子目录C对于用户2的权限是rwx,那么最终用户2最终还是不能删除目录B,但是却可以删除目录C。

因为对于目录A来说目录B是A所属的范围,若删除了B则改变了目录A的结构,而目录C所属的范围是在目录B中,而目录B是允许用户2改变目录结构的。所以最终我们是可以删除目录C的。

所以我们应该注意linux的目录权限的作用范围仅仅在本层目录生效!!!!!。

chown(改变所有者和所属组)

chown newonwer:newgroup  文件或目录 :改变所有者和所属组

chown newonwer:    文件或目录 :改变所有者

chown :newgroup  文件或目录 :改变所属组

文件ACL

setfacl -m  u:username:rwx  /files :为某个用户设置特殊的权限,可以理解为额外的权限,因为有的时候传统的三大类拥有者,所属组,其他这样的权限分布,不足以满足一些个别用户的权限需求,这样就需要使用文件ACL给这些用户开后门,满足它们的需求。facl的主要针对对象是个别用户和个别组,所以可以使用u或者g进行指定。

getfacl files :获取某个目录或者文件的所有权限,当然包括在此设置的facl权限

setfacl -x u:username:rwx /files :删除某个目录或者文件上关于某用户的facl

setfacl -b  /files :删除某个目录或者文件上所有的facl

若一个某个目录或者文件上设置了关于某个用户的facl,那么该用户关于该目录或者文件的权限就仅仅是facl所赋予的权限,基本,传统的权限将不再生效。

facl的细节

drwxrwxrwx+ 4 first first 24 8月  20 14:30 first

如上述的一条信息所示,如果我们对first目录设置了facl,那么上述信息中原本显示所属组权限的那一块信息,就变为显示该目录上所有facl权限的总和。

尽可能先使用chmod和chown结合着使用去满足一些权限的需求,若遇到一些极端的,特殊的权限需求再用facl去进行配置。

set位权限

一般针对可执行或者目录进行。对文件设置称作SUID,针对目录则成为SGID

SUID(对应的值为4)

chmod u+s files

SUID设置在文件上,使得执行该文件的用户临时具有文件所有者的权限。当使用ll对权限信息进行查看的时候,会看到所有者的x位会被s给代替。

就比如passwd命令,它的二进制文件的权限就具有SUID的权限。普通用户通常都可以使用passwd去修改密码,而修改密码的权限的本质就是去修改shadow文件,但是shadow文件的权限是000,那么就意味着普通用户是不可能修改这个文件的,但是我们如果通过passwd的SUID权限,间接的去修改这个文件,那么就可以起到修改密码的作用。

一般来说只有具有可执行权限的文件配置这个SUID才具有意义。

SGID(对应的值为2)

chmod g+s files

当某个目录配置了SGID,则该目录的子目录的所属组,将于配置了SGID的目录的所属组相同。

假设有一个目录需要共享出去给不同的组,那么就可以对这个目录设置GUID,若不设置GUID,则不同用户在该目录创建文件或者目录的时候其权限都是默认权限,其所有者和所属者也是不尽相同。这就导致了尽管目录共享出去了,但是目录内部的内容却达不到共享的效果。若配置了SGID,则所有的文件的所属组都与设置了GUID的目录相同。假设设置了GUID的目录的所属组是users,那么其目录的子目录的所属组都是users,我们只要将不同的组成员的都加入到这个users组当中,并合理配置共享目录关于users的权限,那么就可以使得不同的组在共享目录中共享互相创建,分享的文件。

SBIT(对应的值为1)

chmod o+t files

当我们设置一个目录是不仅仅是所有者和所属组可以修改目录结构的时候,这就导致该目录的目录结构能够被所有人修改。如果不做管控的话,将会出现严重的后果。所以在这种所有人都可以修改目录结构的目录上设置粘滞位,这就使得每个人只能删除自己创建的目录或者文件,将目录或者文件的权限局限于个人,即粘滞的意思。但是在粘滞位下,目录的拥有者是不受粘滞位的限制的

/tmp和/var/temp都是设置了粘滞位权限的目录。

设置umask值

umask xxxx

直接输入umask可以显示默认的umask值

目录的最大默认权限为777,文件为666

umask的值代表着创建时想要去掉的权限,比如0002 ,这就代表其他用户把w权限去掉,而所有者和所属组则保留rwx的权限。

我们可以在用户的家目录的.bashrc文件中设置umask 的默认值,这样在登录该用户之后,其创建的文件,就有预先设置的umask默认值。

find 根据所属和权限去查找

-user user  :根据用户名去查找文件

-group group :根据组名去查找文件

-uid number :根据uid去查找文件

-gid number :根据gid去查找文件

-nouser :查找没有所有者的文件

-nogroup :查找没有所属组的文件

-perm xxx :根据精确的权限去查找

-perm -xxx :根据与运算匹配查找。

该查找模式将权限按位展开000 000 000,那么与模式下,对应权限位为0的位置将会被忽略,权限位为1的地方将会被考虑,且考虑的方式是与运算,比如查找的权限是755权限,而且是与模式匹配,那么只有权限是755的才会被找到

-perm /xxx :根据或运算匹配查找

该查找模式将权限按位展开000 000 000,那么或模式下,对应权限位为0的位置将会被忽略,权限位为1的地方将会被考虑,且考虑的方式是或运算,比如查找的权限是720,展开是111 010 000,那么只要被查找文件或者目录上的权限在拥有者权限有1,在所属组权限上有1,那么它就会被找到

chattr命令

chattr +i files :设置文件或者目录只读,连root也被限制

若我们使用这个命令将passwd命令对于的二进制文件进行权限的限制,那么即使是root用户也无法去修改密码,因为该命令的二进制文件被设置为可读。

chattr -i files :解除文件或者目录仅可读

lsattr files :查看文件或者目录chattr的属性

chattr -a files :该项设置之后,只能像文件中添加数据,而不能删除

-R :该选项与上述的选项配合使用之后,就可以将该目录及其子目录都进行chattr的配置。

限制用户的切换

将、/etc/pam.d/su中的

这一行配置项启用,这样设置之后,只有wheel组的用户才能切换用户。否则用户在切换时都将拒绝。

sudo命令相关配置

如果我们想要允许某个用户临时提升自己的权限的话,就必须在/etc/sudoers的配置文件中进行设置。

默认情况下普通用户时不能临时提升权限的。若想要进行提权的配置则应在sudoers文件尾部输入如下的信息:

username ALL=二进制命令文件路径1,二进制命令文件路径2........

如果想要允许一个组内的成员进行提权的操作则应输入

%groupname ALL=二进制命令文件路径1,二进制命令文件路径2...............

如果我们想要禁止某些提权行为,则需要则可在二进制命令文件前面加上!

如:username ALL=!/bin/passwd root ,这样就限制了用户为root用户修改密码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mllllk

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

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

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

打赏作者

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

抵扣说明:

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

余额充值