首页 > 代码库 > 用户的权限和管理

用户的权限和管理

权限(mode,permission)
权限的判断为:一个用户(非一个程序)对一个文件拥有什么样的权限
权限有三种     r (read)  读    w (write)  写     x (execute)   执行


a表示all  a=u+g+o


    r  读  权限
        针对目录,有r权限,就代表能对此目录有列表的功能   (就是ls列出来的功能)
        针对文件,有r权限,就代表能对此文件有阅读的功能   (就是指cat一类的命令)
    w  写  权限
        针对目录,有w权限,就代表在此目录下创建(删除)文件或者子目录    (touch,mkdir等)
        针对文件,有w权限,就代表能在此文件写入内容或者修改    (>  ,>>, vi 再写等)
    x 执行 权限
        针对目录,有x权限,就代表能进入此目录   (cd)
        针对文件,有x权限,就代表能执行它  (命令,可执行文件等)

权限的修改

# chmod a+x 1.txt
# chmod g+x 1.txt
# chmod a+x 1.txt
# chmod a-r 1.txt
chmod u-w,g+x,o+x 1.txt    --也可以一次性连写


权限用数字来表示  (r,w,x都可以用数字来表示)
r        4
w      2
x       1

rwx 7
rw_ 6
r_x  5
r__  4
_wx 3
_w_ 2
__x  1
___  0

-rw-r--r--    这个以数字表示为644(严谨的说,不能叫它六百四十四,要叫它六四四)
每三位里r代表4,w代表2,x代表1;由三个数组成一个三位数,就是你的权限


特殊权限位(s,t)
s位叫特权位,英文的叫法有setuid,setgid,suid,sgid等


特权位s     
    一个可执行文件拥有s位时,当其它用户来执行这个可执行文件的话,使用的权限是此可执行文件属主或者属组的权限

    只针对前三位,中间三位
    对目录可以加,但是无效,因为目录不是命令,根本不能执行它

什么情况下修改了一个文件才需要强制保存,什么情况下能够成功强制保存?

答案:如果你对一个文件没有写权限,那么修改后,要保存就会出现强制保存的选项;
     虽然你对这个文件没有写权限,但如果你对文件所在的上一级目录有写权限,则可以强制保存成功,并且保存后,把文件的owner和group属性改成了你自己
     如果对上一级目录没有写权限,则不可以强制保存;但也有一个例外,就是如果这个文件的owner就是你,那么你对它没有写权限,对它上级目录也没写权限,也可以强制保存成功
    如果文件有i属性,那么无论什么情况都不能强制保存

介绍几个常见重要的属性:
属性1:  A

# lsattr 1.txt
-------------e- 1.txt

# chattr +A 1.txt        --这个属性让文件的access time访问后也不会变化,节省了IO(IO优化);默认情况下rhel5,访问一次atime就会跟着变一次,rhel6下只有当atime等于或早于mtime和ctime之一时,才会访问跟着变,否则不会变。(原因我们在后面讲mount参数时再补充)

# lsattr 1.txt
-------A-----e- 1.txt    

# stat 1.txt |tail -3        --用cat命令访问这个文件,再用此命令查看access time,会发现不再变化
Access: 2014-07-17 11:12:58.589838878 +0800
Modify: 2014-07-17 11:12:58.589838878 +0800
Change: 2014-07-17 11:13:15.405701371 +0800



属性2: a
一个文件加了a属性,重定向覆盖以前的内容不允许,但追加内容是可以的(可用于比如日志文件的场景)
# lsattr 1.txt
-----a-------e- 1.txt

# echo 456 > 1.txt
bash: 1.txt: Operation not permitted
# echo 456 >> 1.txt        


属性3:  i
# chattr -a 1.txt
# chattr +i 1.txt  --加了i属性,此文件不可被修改,不能重命名,不能删除,不能改变内容


总结:文件的权限(mode,permission)为r,w,x,s,t;文件的属性(attributes)为A,a,i等;以后学的selinux就类似在这些权限和属性的基础上再做扩展

 

 

用户的权限和管理