CentOS教程之CentOS特别权限位之setuid、setgid和sticky
欢迎大家来到仓酷云论坛!我们上岸到体系以后,创立一个通俗文件或许目次的时刻,会有一个默许的权限。通俗文件是644,目次文件是755,想必人人都晓得这个是由umask这个值决议的。我们可以直接履行umask敕令检查,linux体系默许的umask值是0022。想转变创立文件默许的权限,我们直接修正umask就能够,然则普通的权限都是经由过程777-022获得的默许权限位。022后面的这个0是甚么呢?第一个0就是特别权限位,下边我们就来跟人人说一下setuid、setgid和sticky这个三个特别权限位。1.suid,setuid:在一个法式或敕令上添加setuid今后(u+s),如许属主有了s权限,意味着任何用户在履行此法式时,其过程的属主不再是提议者自己,而是这个法式的属主。最典范的一个例子就是passwd这个敕令;
通俗用户运履行passwd敕令来修正本身的暗码,其实终究更改的是/etc/passwd这个文件。
我们晓得/etc/passwd文件是用户治理的设置装备摆设文件,只要root权限的用户能力更改。
#ls-l/etc/passwd-rw-r--r--.1rootroot981Oct2501:00/etc/passwd依照惯例的逻辑思想,通俗用户是修正不了/etc/passwd此文件的,然则在passwd这个敕令上添加了setuid这个特别权限位,通俗账号暂时酿成root,就可以直接修正本身账号的暗码了。
#ls-l/usr/bin/passwd(s就是suid位)-rwsr-xr-x.1rootroot30768Feb222012/usr/bin/passwd设置setuid的办法:(其实前边提到过了参数是u+s)
chmodu(+|-)s/path/somefilechmod4664/path/somefile留意:s:表现属主本来有履行权限S:表现属主本来没有履行权限实例演示:
添加一个名字为taokey的通俗用户
#useraddtaokey把/etc/fsatb文件拷贝到/tmp目次下一份
#cp/etc/fstab/tmp/#cd/tmp/检查/tmp目次下fstab文件的属性
#llfstab-rw-r--r--.1rootroot899Oct2500:16fstab把其他用户的读权限给去失落
#chmodo-rfstab#llfstab-rw-r-----.1rootroot899Oct2500:16fstab切换到通俗用户taokey
#su-taokey履行cat敕令,看下能否可以检查fstab文件
$cat/tmp/fstabcat:/tmp/fstab:Permissiondenied因为other去失落了r权限,一切提醒cat被谢绝
为了保存原始情况,把cat敕令拷贝到/tmp目次一份
#cp/bin/cat/tmp/$ls-lfstabcat-rwxr-xr-x.1rootroot45224Oct2500:21cat-rw-r-----.1rootroot899Oct2500:16fstab$./catfstab./cat:fstab:Permissiondenied$exitlogout特换到root用户,添加setuid权限
#ls-l/usr/bin/passwd(s就是suid位)-rwsr-xr-x.1rootroot30768Feb222012/usr/bin/passwd0#ls-l/usr/bin/passwd(s就是suid位)-rwsr-xr-x.1rootroot30768Feb222012/usr/bin/passwd1
#ls-l/usr/bin/passwd(s就是suid位)-rwsr-xr-x.1rootroot30768Feb222012/usr/bin/passwd2
切换到通俗用户以后,可以胜利履行cat敕令,检查/tmp/fstab文件,就是由于tmp目次下cat这个敕令上添加了s权限位。
1
2
$llcat
-rwsr-xr-x.1rootroot45224Oct2500:21cat
留意:设置suid这个特别权限很风险,不到万不得已,做好照样不要应用。
2.Sgid,Setid,属组有s权限,意思就是履行此法式时,此过程的属组不再是运转者自己所属的根本组,而是此法式文件的属组。
任务中常常会碰到如许一个成绩?
运维和开辟同属于技巧部,用户同属于一个组,文件在一个目次中,运维人员和开辟人员可以互相之间拜访本身的文件,如果一个一个修正属组就有点费事,这时候候用sgid就会很便利的处理这个成绩。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
例子:
#usermod-a-Gmygrpxen
#usermod-a-Gmygrpkvm
#mkdir/tmp/test
#ls-ld/tmp/test/
drwxr-xr-x.2rootroot4096Oct2500:48/tmp/test/
#chmodg+w/tmp/test
#ls-ld/tmp/test/
drwxrwxr-x.2rootroot4096Oct2500:48/tmp/test/
#chown:mygrp/tmp/test
#ls-ld/tmp/test
drwxrwxr-x.2rootmygrp4096Oct2500:48/tmp/test
#su-xen
$cd/tmp/test
$toucha.xen
$ls-l
total0
-rw-rw-r--.1xenxen0Oct2500:50a.xen
#su-kvm
$cd/tmp/test
$toucha.kvm
$ls-l
total0
-rw-rw-r--.1kvmkvm0Oct2500:51a.kvm
-rw-rw-r--.1xenxen0Oct2500:50a.xen
kvm用户想往xen创立的文件a.xen中写器械,然则被谢绝了。
1
2
$echo"hello">>a.xen
-bash:a.xen:Permissiondenied
我们在用root,给/tmp/test文件添加一个sgid权限位,然后再测试下。
1
2
3
#chmodg+s/tmp/test
#ls-ld/tmp/test
drwxrwsr-x.2rootmygrp4096Oct2500:51/tmp/test
切换到xen通俗用户
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#su-xen
$touchb.xen
$llb.xen
-rw-rw-r--.1xenmygrp0Oct2501:01b.xen
#su-kvm
$echo"hello">>b.xen
$catb.xen
hello
$touchb.kvm
#su-xen
$cd/tmp/test/
$echo"Mynameistaoyake.">>b.kvm
$catb.kvm
Mynameistaoyake.
可以胜利写出来,这个就是由于在/tmp/test文件设置了sgid权限位
然则这个不只可以能胜利写出来,还可以删除文件,我们只能本身删除本身的文件,不想让其他用户删除我们的文件,这时候候怎样办呢?
1
2
3
4
5
6
7
例如:
$rmb.kvm
$ll
total0
-rw-rw-r--.1kvmkvm0Oct2500:51a.kvm
-rw-rw-r--.1xenxen0Oct2500:50a.xen
-rw-rw-r--.1xenmygrp0Oct2501:01b.xen
3.这时候候就用到了粘滞位,t,sticky,附加other的权限上,表示为t。
chmodo+|-t/path/somefile
1
2
3
4
5
6
7
8
9
10
11
12
实例操作:
#ls-ld/tmp/test
drwxrwsr-t.2rootmygrp4096Oct2501:10/tmp/test
$ls
a.kvma.xenb.xenc.kvm
$echo"beyond">>c.kvm
$catc.kvm
beyond
$echo"">c.kvm
$catc.kvm
$rm-rfc.kvm
rm:cannotremove`c.kvm:Operationnotpermitted
可以添加和随意率性修正其他用户的文件,就是不克不及删除其他用户的文件,本身可以删除本身创立的文件。
1
2
3
4
5
6
7
8
9
10
11
$touchc.kvm
$ls
a.kvma.xenb.xenc.kvm
$rmc.kvm
$ls
a.kvma.xenb.xen
$ll
total0
-rw-rw-r--.1kvmkvm0Oct2500:51a.kvm
-rw-rw-r--.1xenxen0Oct2500:50a.xen
-rw-rw-r--.1xenmygrp0Oct2501:01b.xen
本文出自“岁月在流逝,辉煌仍然在”博客,请务必保存此出处http://taokey.blog.51cto.com/4633273/1329992
欢迎大家来到仓酷云论坛!
CentOS教程之CentOS特别权限位之setuid、setgid和sticky
了解Linux的网络安全,系统的安全,用户的安全等。安全对于每位用户,管理员来说是非常重要的。 安装一个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手安装,这样遇到问题就知道为什么。如果Linux说明文档不看,结果出了问题再去论坛来找答案反而浪费时间。 感谢老师和同学们在学习上对我的帮助。 发问的时候一定要注意到某些礼节。因为Linux社区是一个松散的组织、也不承担回复每个帖子的义务。它不是技术支持。 老实说,第一个程序是在C中编译好的,调试好了才在Linux下运行,感觉用vi比较麻烦,因为有错了不能调试,只是提示错误。 工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。目前国内关于Linux的书籍有很多不过精品的不多。
页:
[1]