Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1355514
  • 博文数量: 185
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2664
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-01 13:46
个人简介

鸟在笼中,恨关羽不能张飞;Survival of the fittest

文章分类

全部博文(185)

分类: LINUX

2012-05-15 21:51:12

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://blog.chinaunix.net/uid-10915175-id-3209209.html

 这次我们主要说一下特殊的属性

 
 
ls -l /usr/bin/passwd
 
看到了/usr/bin/passwd 文件的前面属性了吗?怎么会有s 的属性在原本的x位置?
那个就是所谓的SUID 了!如果是-r-xr-s--x时,那么s 就成为所谓的SGID 了!
当一个文件具有SUID 的时候,同时other 的群组具有可执行的权限,那么当others群组
执行该程序的时候, other 将拥有该文件的owner 的权限
 
ls -l /usr/bin/passwd /etc/shadow
我们以账号的密码文件来说明好了!可以看到的是, /etc/shadow 的权限是只有root才能存取
那么为什么一般用户可以自己修改密码?修改密码一定跟/etc/shadow 这个文件有关,那么怎么
回事?使用者是如何修改/etc/shadow 这个文件的呢?就是使用SUID的功能!上面的例子说明了
/usr/bin/passwd 这个文件具有SUID 的属性,那么当使用者使用/usr/bin/passwd这个执行文件时
在执行pass word 修改的期间就具有/usr/bin/passwd 这个文件的拥有者root 的所属权限 !
所以当一般使用者执行passwd 的时候,将具有root 的权限,所以他们也可以更改/etc/shadow的内容
那么由此也可以知道,由于这个Set UID ( SUID ) 的主要功能是在某个文件执行的期间具有
文件拥有者的权限,因此s就是替代上面提到的x 这个可执行的位置 !
万一该文件并没有x 的属性 那么该文件的属性就会将小写的s(t) 变成大写的S(T)
文件拥有者都无法执行了,哪里来的权限给其它人使用?当然就是空的
可以看到,user1是可以改自己的密码的
这就是S属性的作用
 
 
 
4 为SUID  看,属性里多了一个S
2 为SGID
1 为t
chmod X755 test
 
具有t属性的该”目录”下的文件,其文件或目录只有文件拥有者及root 才有权力删除!
我们来看一下t属性的作用root1这个文件夹没有t属性,我们来看看效果
这样一来,所有人对root1这个文件夹都有完全的rwx权限了
看,root创建的a文件,user1可以给删了
 
 
我们再来看一下有t属性的test文件夹
我们给它也是所有人都可以rwx
看,这个文件夹是所有人都可以rwx,就是因为多了一个t属性,所以是删不了的
要删只有是root和拥有者
去做下实验吧
 
 
 
 
 
 
 
 
 
接下来看
 
  chattr   这个是改变属性
语法:
chattr [+-=][ASacdistu] [文件或目录名称]
参数说明:
+-= :分别为[+ 增加] [- 减少] [= 设定] 属性的意思
A  :当设定了A 这个属性时,这个文件(或目录)的存取时间atime (access) 将不可被修改,
   可避免例如手提式计算机容易有磁盘I/O 错误的情况发生!
S  :这个功能有点类似sync 的功能!就是会将数据同步写入磁盘当中!可以有效的避免数据流失!
a  :当设定a 之后,这个文件将只能增加数据,而不能删除,只有root 才能设定这个属性。
c  :这个属性设定之后,将会自动的将此文件 压缩』,在读取的时候将会自动解压缩出来!
   但是在储存的时候,将会先进行压缩之后再储存(看来对于大文件似乎很有用的!)
d  :当dump (备份)程序被执行的时候,设定d 属性将可使该文件(或目录)具有dump 功效!
i  :这个i 可就很厉害了!他可以让一个文件 不能被删除、改名、设定连结也无法写入或新增数据
   对于系统安全性有相当大的帮助!
j  :当使用ext3 这个文件系统格式时,设定j 属性将会使文件在写入时先记录在journal 中!
   但是当filesystem 设定参数为data=journalled 时,由于已经设定了日志了,所以这个属性无效
s  :当文件设定了s 参数时,他将会被完全的移除出这个硬盘空间。
u  :与s 相反的,当使用u 来设定文件时,则数据内容其实还存在磁盘中,可以使用来undeletion.
范例:
chattr +i /etc/shadow<== 如此则无法更动这个文件 !
chattr -i /etc/shadow <==解除该属性!
说明:
这这个指令是重要的,尤其是在系统的安全性上面!由于这些属性是隐藏的性质,所以需要以lsattr 
才能看到该属性 !其中,个人认为最重要的当属+i 这个属性了,因为他可以让一个文件无法被更动,
对于需要强烈的系统安全的人来说,真是相当的重要的!里头还有相当多的属性是需要root 才能设定
的呢!此外,如果是log file 这种的登录文件,就更需要+a 这个可以增加,但不会被杀掉的参数了!
 
看,原来是可以加用户的,加了这个属性后,root都不可以写文件了
因为多了一个i属性
 
 
 
  lsattr  这个是显示属性
语法:
lsattr [-aR]
参数说明:
-a :将隐藏文件的属性也秀出来;
-R :连同子目录的数据也一并列出来!
范例:
chattr +i .bash_logout
lsattr -a
-------------- ./.
-------------- ./..
---i---------- ./.bash_logout
-------------- ./.bash_profile
-------------- ./.bashrc
-------------- ./.emacs
-------------- ./.screenrc
 
参数不细说,自己看一下
 
 
 
现在我们知道如何建立或者是改变一个目录或文件的属性了,不过,当你建立一个新的文件或目录时
预设属性会是什么吗?那就与umask 有关了!那么umask 是在干什么的?基本上, umask 就是指定
目前使用者在建立文件或目录时候的属性默认值,那么如何得知或设定umask?他的指定条件以底下
的方式来指定umask 002 <==后面接3 个数字!
 
 
 
那么umask 指定的是 默认值需要减掉的权限 因为r、w、x 别是4、2、1 ,当要拿掉能写的权限
就是输入2 ;而如果要拿掉能读的权限,也就是4 ,那么要拿掉读与写的权限,也就是6 ,而要
拿掉执行与写入的权限,也就是3 ,5 是什么?就是读与执行的权限 
只要使用touch test 然后看看这个test 的文件属性,就可以知道了!
如何看你这个使用者目前的umask?直接打umask即可
 umask
 touch test1
 mkdir test2
 ls -l
-rw-rw-r-- 1   test1
drwxrwxr-x 2   test2
test1 的属性为 644 !正确!
test2 这个目录是 775 !正确!
下面我们改变一下
 umask 003
 touch test3
 mkdir test4
 ll
-rw-rw-r-- 1  test3
drwxrwxr-- 2  test4
为什么属性又跟刚刚的不一样 !test3  应该是-rw-rw--wx 才对 怎么会是上面的属性!
这里就要特别的给他强调!尽量不要以数字相加减 容易造成类似上面的问题!
你应该要这样想(-rw-rw-rw-) - (--------wx)=-rw-rw-r--这样就对 用rwx 来算
 
 
这个umask 可以在/etc/bashrc 里面进行修改!预设的情况之下, root 的umask 为022 而一般
使用者则为002 ,因为可写的权限很严重的因此预设都会去掉这个权限!此外,因为root 比较重要
所以为了安全的需求,其同群组的写入属性就被去掉
 
 
 
这样,特殊的属性就介绍完了,对于系统安全就要多多注意这方面了
 
 
 
成功!!!!!!!!
 

本文出自 “单身贵族” 博客,请务必保留此出处http://blog.chinaunix.net/uid-10915175-id-3209209.html

附件下载:

 特殊属性.part1.rar   

 特殊属性.part2.rar   

阅读(2064) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~