随笔 - 56, 文章 - 0, 评论 - 0, 引用 - 0
数据加载中……

《LInux与Unix Shell编程指南》笔记之文件安全与权限

                                一、文件安全与权限
                        点击此处打开《Linux与Unix Shell编程指南》本章pdf文档
1.1 文件
    当你创建一个文件的时候,系统保存了有关该文件的全部信息,包括:
    a、文件的位置;    b、文件类型;    c、文件长度;    
    d、哪位用户拥有该文件,哪些用户可以访问该文件。
    e、i结点;    f、文件的修改时间;    g、文件的权限位。
   
1.2 文件类型
    d    目录
    l    符号连接(指向另一个文件)
    s    套接字文件
    b    块设备文件
    c    字符设备文件
    p    命名管道文件
    -    普通文件,即不属于以上几种类型的文件。
   
1.3 权限
    当新创建一个文件时系统并没有赋于属主执行权限,这是出于加强系统安全的考虑,必须手工修改这一权限位。
   
1.4 修改权限位
    a、符号模式
    chmod [who]operator[permission] filename
    who的含义
    u    文件属主权限
    g    同组用户权限
    o    其他用户权限
    a    所有用户权限
    operator的含义:
    +    增加权限
    -    取消权限
    =    设定权限
    permission的含义
    r    读权限
    w    写权限
    x    执行权限
    s    文件属主和组set-ID
    t    粘性位*
    l    给文件枷锁,使其他用户无法访问。
   
    如果在一个文件列表看到“t“,那么意味这该脚本或程序在执行时会被放在虚存中。
    如果在一个目录上出现“t“,意味这该目录中的文件只有其属主才可以删除,其他用户不能。
    例如:
    设置一个用户的权限:    chmod u+x myfile
    设置两个用户的权限:    chomd u+x o-w myfile
   
    b、绝对模式
    chmod [mode] file
    其中mode是一个八进制数。
    八进制数        含义
    0400        文件属主可读
    0200            文件属主可写
    0100            文件属主可执行
    0040        同组用户可读
    0020            同组用户可写
    0010            同组用户可执行
    0004        其他用户可读
    0002            其他用户可写
    0001            其他用户可执行
   
    由此可知,文件属主、同组用户和其他用户分别能够具有的最大权限值为7,即4+2+1=7,指可读、可写、可执行。
    例如:
    如果希望一次设置目录下所有文件的权限,可以用:
    chmod 644 *
    这将使文件属主具有读和写的权限,同组用户和其他用户只有读的权限。
   
    还可以通过使用-R选项连同子目录下的文件一起设置:
    chmod -R 664 /usr/local/home/dave/*
   
    以上强调的是文件的权限,下面说明目录权限
    r    可以列出该目录中的文件
    w    可以在该目录中创建或删除文件
    x    可以搜索或进入该目录
   
    设置方法同设置文件权限方法一样,有以下两点注意:
    a、如果把同组用户或其他用户针对某一目录的权限设置为--x,那么他们将无法列出该目录中的文件。如果该目录中有一个执行位置位的脚本或程序,只要用户知道它的路径和文件名,仍然可以执行它。
    b、目录的权限将会覆盖该目录中的文件的权限。例如,目录docs具有权限:
    drwxr--r--    1    louise    admin    2390    Jul 23    09:44 docs
    而该目录下的文件pay的权限为:
    -rwxrwxrwx 1    louise    admin    5567    Oct 3    05:40 pay
    那么admin组的用户将无法编辑该文件,因为它所属的目录不具有这样的权限。
   
1.7 chown和chgrp
    chown用来更改文件的属主,chgrp用来更改文件属主所在的组。只有文件的属主和系统管理员可以改变文件的所有权,一旦将文件的所有权交给另外一个用户,就无法再重新收回它的所有权。只有求助于系统管理员。更改用户或用户组时相应的suid也将被清除。
    格式:chmod -R -h owner file
    owner可以是合法的用户名或者用户ID。
    -R意味着对所有子目录下的文件也都进行同样的操作。
    -h意味着在改变链接文件的属主时不影响该链接所指向 的目标文件。
   
    注意:
    通过groups或id命令找出自己属于哪些用户组。
    通过groups [user_name]查出user_name所在用户组。
   
1.8 umask
    作用:
    当最初登录到系统中时,umask命令确定了你创建文件的缺省模式,这一命令实际上和chmod命令正好相反。
    注意:
    1、设置了umask值后,相应的改变直到退出该shell或使用另外的umask命令之前一直有效。
    2、对于文件来说,系统不允许你在创建一个文本文件时就赋于它执行权限,所以创建一个文本时的3个x位都为"-",必须在创建后用chmod修改,所以umask值最大为6。
    3、对于目录来说,允许设置执行权限,所以umask值最大为7。
   
    命令umask用来查看当前umask值。
    命令umsak number用来设置umask值。
    umask值与权限:
    umask    文件    目录
    0        6        7
    1        6        6
    2        4        5
    3        4        4
    4        2        3
    5        2        2
    6        0        1
    7        0        0
    记忆方法:
    假如当前umask值为021:
    新创建文件的默认最大权限            rw-rw-rw-    666
    新创建目录的默认最大权限            rwxrwxrwx    777
    修改umask后新创建文件的最大权限    rw-r--rw-    646
    修改umask后新创建目录的最大权限    rwxr-xrw-    756

posted on 2011-02-17 10:49 八路 阅读(342) 评论(0)  编辑 收藏 引用 所属分类: 嵌入式linux笔记


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理