zoukankan      html  css  js  c++  java
  • shell学习笔记1-文件安全与权限

    1,创建文件的用户和他所属的组拥有该文件,文件的属主可以设定谁具有读、写、执行该文件的权限,根用户可以改变任何普通用户的设置。

    2,一个文件一经创建,就具有三种访问权限:读(可以显示该文件的内容)、写(可以编辑或删除它),执行(如果该文件是一个shell脚本或程序)

    3,按照针对的用户,文件的权限分为三类:文件属主(创建该文件的用户)、同组用户(拥有该文件的用户组中的任何用户)、其他用户(不属于拥有该文件的用户组的某一用户)

    4,解析文件描述

    total 4232:该目录中所有文件所占空间

    -rwxr-xr-x:说明文件权限。除去前面横杠,一共9个字符,对应9个权限,分为3组

      rwx:文件属主权限(前三位)

      r-x:同组其他用户权限(中间三位)

      r-x:其他用户权限(后三位)

    出现在rwx位置上的横杠表示相应的访问权限被禁止

    1:该文件硬链接的数目

    root:文件的属主

    root:文件的属主所在的缺省组

    3578:用字节来表示文件的长度

    Oct 14 04:44 文件的更新时间

    demsg:文件名

    5,-rwxrwxrwx 前面的横杠表示的是文件的类型。

      d(目录)、l(符号链接)、s(套接字文件)、b(块设备文件)、c(字符设备文件)、p(命令管道文件)-(普通文件,确切的说是不属于以上几种类型的文件)

    6,系统在创建文件的时候,出于加强系统安全的考虑,系统不会自动设置执行权限位,必须手动修改。chmod命令可以改变文件权限位的设置。

      chmod [who] operator [permission] filename

      who:u(文件属主权限)、g(同组用户权限)、o(其他用户权限)、a(所有用户:文件属主、同组用户、其他用户)

      operator:+(增加权限)、-(取消权限)、=(设定权限)

      permission:r(读权限)、w(写权限)、x(执行权限)、s(文件属主和组set-ID)、t(粘性位*)、l(给文件加锁、使其他用户无法访问)、u,g,o(针对文件属主、同组用户以及其他用户的操作)

      *:在列文件或目录时,有时会遇到‘t’位。‘t’位代表了粘性位。如果一个目录上出现了t位,表示该目录中的文件只有属主才能删除,即使某个同组用户具有和属主同等权限。

      如果在文件列表时,看到t,表示该脚本或程序被执行时,会被放在交换区(虚存)。

      chmod a-x filename   收回所有用户的执行权限

      chmod og+w filename  赋予同组用户和其他用户写权限

      chmod u+x o-w filename   赋予属主执行权限,取消其他用户写权限

    7,chmod命令绝对模式

      chmod [mode] file  mode是一个八进制数,每一个权限位用一个八进制数来表示

      0400(属主可读)、0200(属主可写)、0100(属主可执行)

      0040(同组可读)、0020(同组可写)、0010(同组可执行)

      0004(其他可读)、0002(其他可写)、0001(其他可执行)

      在设定权限时,只需要找到相应数字,相加即可。最大权限位7

      例如:-rw-r--r--表示的权限为644,即0400+0200属主可读写,0040同组可读,0004其他可读

      r+w+x = 4+2+1

      chmod 444 file  赋予所有用户读权限

      chmod 644 *   一次设置目录下所有文件的权限,文件属主具有读写权限,同组用户和其他用户只要读权限

      chmod -R 664 /usr/local/home/dave/*   一次性将dave目录下的所有文件连同各个子目录下的文件的权限,全部设置为文件属主和同组用户可读可写,其他用户只读(只有在改变目录树下全部文件权限时,才可以使用-R)

    8,读指列出文件目录的权限,写指在该目录中创建或删除文件的权限,执行指搜索或进入该目录的权限

    9,目录的权限级别大于目录中文件的权限级别

      

    10,suid意味着如果某个用户对属于自己的shell脚本设置了这种权限,那么其他用户在执行这一脚本时,也会具有其属主的相应权限。于是,如果根用户的某一脚本设置了这样的权限,那么其普通用户在执行它的期间,也同样有根用户的权限。同样的原则也适用于guid,执行相应脚本的用户将具有该文件所属用户组中用户的权限。

      想找出设置了suid和guid的命令,可以进入/bin或/sbin目录执行下面的命令

      

      如果希望设置suid,那么就将相应权限位之前的那一位设置为4,如果希望设置guid,那么就将相应权限位之前的那一位设置为2,如果希望同时设置,那么相应权限位之前的那一位设置为4+2。

      一旦设置了这一位,一个s将出现在x的位置上。在设置suid或guid的同时,相应的执行权限位必须要被设置。

      

     

    rwS rw-rw-表示该文件没有设置执行位,这是一种没有任何用处的suid设置

    chmod不进行必要的完整性检查

    11,只有文件的属主和系统管理员可以改变文件的所有权,一旦将文件的所有权交给另外一个用户,将无法再重新收回它的所有权,如果真的要收回,就只能求助于系统管理员。

      chown命令的一般形式:chown -R -h owner file

      -R表示对所有子目录下的文件也进行同样的操作。-h表示在改变符合链接文件的属主时,不影响该链接所指向的目标文件。

    12,

    13,找出自己所属的用户组

    14,找出其他用户的组

    15,当我们登录系统后创建文件时,总有一个默认权限,这就是umask干的事情,umask设置了用户创建文件的默认权限。与chmod相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。一般来说umask是在/etc/profile文件中设置的,每个用户登录时都会引用这个文件。如果希望永久性的设置自己的umask,就将它放在自己$HOME目录下的.profile或.bash_frofile文件中。

      对于文本文件来说,umask的最大值是6,对于目录来说,umask最大是7。因为系统不允许在创建一个文本文件时就赋予它执行权限,必须在创建后使用chmod增加,目录则允许设置执行权限。

      umask命令形式:umask nnn  nnn范围是000-777

      umask的计算是从权限中拿走相应的位即可。例如umask是002,则对于文件的缺省权限是664,针对目录的权限是775

      

      如果想知道umask的值,可以使用umask命令

      

    16,符号链接:存在两种不同类型的链接,软链接和硬链接。

      软链接实际就是一个指向文件的指针。比如,有很多子目录,进入很浪费时间,那就可以在方便的位置针对这个很深的子目录创建一个链接。链接的名字可以和源文件不同。

      命令模式:ln [-s] source_path target_path  其中的路径可以是目录页可以是文件,若target不存在,系统会自动创建

      链接一旦创建,链接目录将具有权限777(对原有文件的权限不会产生改变),所以不要忘记在原有目录设置执行权限

  • 相关阅读:
    高版本Visual Studio和低版本ArcGIS共存 工具箱没有控件的解决方法
    Geodesic 什么是“测地线的”?
    向QGIS项目组提交了一份建议
    QGIS 3.4 3.6 另存栅格图层到GeoPackage出现覆盖问题 解决方案
    Dijkstra.NET 库体验报告
    QGIS练手
    GeoPackage
    QGIS练手
    postgresql 修改字段名称
    django signal
  • 原文地址:https://www.cnblogs.com/javadongx/p/shell_chmod_chown_group_umask_ln.html
Copyright © 2011-2022 走看看