• 理解Linux文件权限


      任何完整的系统都应该具备有某种形式的安全性。必须用过某种机制来保护文件不被未授权的用户查看或修改;Linux系统遵循了Unix的文件权限的方法,来根据用户与用户组授权,实现文件安全访问。

    1、Linux安全性

      Linux系统的安全核心是用户账户。访问Linux系统的每个人都拥有自己的分配的、唯一的账户。基于账户来进行安全处理。使用用户ID(UID)来跟踪用户权限。

      1.1、/etc/passwd文件

        存放用户名的文件--/etc/passwd;

        首先看到的是根用户,它的UID始终未0。它被称为系统账户。通常情况下,每个用户都是通过普通用户登录到Linux操作系统,普通用户不能直接获取对整个系统的访问权限。这样就保证了系统的安全性;

        500以下的UID保留作为系统账户。一些服务甚至特定的UID才能使用这些UID号。普通用户的UID一般为500开始往后。

        /etc/passwd的内容如下:

          1、登录用户名

          2、用户的密码【x表示密码替代符,真正的密码存放于/etc/shadow中】

          3、用户账户的ID号

          4、用户账户的数值用户组ID

          5、用户账户的文本描述(注释字段)

          6、用户的HOME目录位置

          7、用户的默认shell

        需要添加删除用户的话,可以直接在该文件下面进行操作;

      1.2、/etc/shadow文件

        /etc/shadow文件是提供了密码存放的地方。只有根用户才能访问这个文件。这比/etc/passwd文件更加安全;

     

        与/etc/shadow文件记录中有9个字段:

          1、与/etc/passwd文件中的登录名对应的登录名;

          2、经过加密的密码

          3、密码上次修改时间距离1970年1月1日的天数;

          4、距能够修改密码时的最少天数

          5、距必须修改密码是的天数

          6、距离密码逾期并警告用户修改密码的天数

          7、从密码逾期开始到账户被禁用的天数

          8、用户账户已被禁用的天数(存储为自1970年1月1日开始的天数)

          9、保留供未来使用的字段

      1.3、添加新的用户

        useradd用来添加用户。

        useradd -D  #查看Linux系统使用的系统默认值

          INACTIVE=-1  #密码逾期不被停用

          SKEL=/etc/skel  #系统会将/etc/skel目录中的内容复制到用户的HOME目录

          CREATE_MAIL_SPOOL=yes  #系统将在邮件目录中的内容复制到用户的HOME目录中;

        useradd常用参数:

          -c  #添加注释

          -d  #指定家目录名称

          -e  #指定账户逾期的日期,格式为YYYY-MM-DD

          -f  #表示账户逾期后,账户被禁用需要的天数。值0表示密码逾期时立即禁止账户;值为-1表示禁止此功能

          -g  #指定用户登录组的用户组名称或GID

          -G  #指定用户属于的一个或过个补充的用户组

          -k  #将/etc/skel目录的内容复制到用户HOME目录

          -m  #创建用户的HOME目录,与-k一起使用

          -M  #不创建家目录

          -n  #使用与用户登录名相同名称的创建一个新的用户组

          -r  #创建一个系统账户

          -p  #为用户指定一个默认密码

          -s  #指定默认登录shell

          -u  #指定账户的唯一的UID

        useradd还可以更改默认参数值

          -b  #修改默认的HOME目录被创建的位置

          -e  #修改新账户逾期的时间

          -f  #修改从密码逾期到账户被禁用的天数

          -g  #修改默认使用的用户组名称或GID

          -s  #修改默认登录的shell

          例如:useradd -D -s /bin/tsch

      1.4、删除用户

        userdel命令,用来删除用户。

        例如:userdel -r test  #-r带着默认家目录一块删

      1.5、修改用户

        常用的修改工具:

        usermod  编辑用户的账户字段,以及制定主要和次要的用户组成员

          -l  #用于修改用户账户的登录名

          -L  #用于锁定账户,使用户无法登录

          -p  #用于修改账户的密码

          -U  #用于接触账户锁定,使用户能够登录

        passwd  修改已有的用户密码

          passwd修改自身密码,passwd test修改test用户密码;

          -e   #选项用于前置用户下次登录时修改密码;

        chpasswd  读取登录名和密码对文件,并更新密码

          用于大量修改用户密码,从标准输入读取登录名和密码对应的列表(由冒号分开) 

        chage  修改密码的逾期时间

        chfn    修改账户的注释信息

          将信息存储于/etc/passwd的注释字段中。

          finger 命令可以查找关于Linux系统上的用户信息;

        chsh    修改用户账户的默认shell

          chsh -s /bin/csh test  #test用户的shell程序改为/bin/csh

    2、使用Linux用户组

      在个人账户控制上,当个用户可以满足,在资源共享方面则有所欠缺。为此我们使用用户组的概念来实现; 

      每个用户组都有一个唯一的GID。与UDI类似是系统上独一无二的数值。

      2.1、/etc/group文件

        /etc/group文件用来存放系统中用户组的信息;

        与UID类似,500一下的GID为系统用户的用户组信息,而500以及500以上的才是普通用户的用户组信息;

          1、用户组名称

          2、用户组密码

          3、GID

          4、属于用户组的用户账户列表

        usermod 命令可以帮助我们将用户添加到特定的用户组中;

      2.2、创建新的用户组

        例如:groupadd shared

              tail -1 /etc/group

        这时候是没有用户属于这个组的,我们需要使用usermod命令来将用户添加到该组;

             usermod -G shared rich

             usermod -G shared test

             tail -1 /etc/group  #此时,用户rich和test用户就添加到了shared组中;

      2.3、修改用户组

        groupmod 命令可用来修改组的相关信息;

        例如:groupmod -n sharing shared  #-n将shared名字改为sharing;

          -g  #可以修改用户组的GID

    3、解码文件权限

      了解 ll 查看到的文件权限

      3.1、使用文件权限符号

        rwx-读写执行,同时可以用8进制数来表示

      3.2、默认文件权限

        遮罩码--umask,定义了文件的默认权限;

        文件权限可以使用代码来表示,如下图:

        文件的完整权限是666,而目录的完整权限是777;因此在实例中,文件初始权限在去掉umask后为644,而目录的为755;

        通过umask命令可以修改默认遮罩码,但是不建议这么做;

    4、修改安全设置

      4.1、修改权限

        chmod用来修改文件权限,格式如下:

        chmod options mode file

        例如:chmod 760 newfile

        也可以使用符号的模式指定文件的权限:

        [ugoa...] [+-=] [rwxXstugo...]

          u  表示用户

          g  表示用户组

          o  表示其他

          a  表示上述所有

          +  添加对应权限

          -  去掉对应权限

          =  为权限赋值

          x  用于指定执行权限

          s  用于设置正在执行的UID或者GID

          t  用于保存程序文本

          u  用于将权限设置为所有者的权限

          g  用于将权限设置为用户组的权限

          o  用于将权限设置为其他人的权限

        例如:

      4.2、修改所有者

        chown可以方便的修改文件所有者;

        chown options owner [.group] file

        例如:chown dan newfile

             chown .dan newfile

             chown dan. newfile

           chown dan.dan newfile

        也可以使用 chgrp 直接来修改用户组即可;

        例如:chgrp shared newfile  #只修改用户组,类似与chown .dan newfile

    5、共享文件

      有时候,我们需要将文件共享给所有的用户,我们需要临时调用文件所有者权限,这时候,Linux系统为我们提供了三个额外的信息为,它们分别是:

      1、set user id (SUID)  当文件由用户执行时,程序将在文件所有者的权限下运行

      2、set group id (SGID)  对于文件,程序将在文件用户组的权限下运行,对于目录,目录中创建的所有新文件使用目录用户组作为默认用户组

      3、粘着位  进程结束后,文件仍然保留(粘着)在内存中

      chmod命令可以修改设置这三位的信息,权限如下图:

  • 相关阅读:
    google的开源项目总结
    Google Breakpad 完全解析(二) —— Windows前台实现篇
    Google Breakpad 完全解析(一) —— Windows入门篇
    PVS-Studio静态通用分析规则
    C,C++开源项目中的100个Bugs
    一日一点RakNet(3)--介绍
    C++开源跨平台类库集
    如何实现数组的随机排序?
    JavaScript原型,原型链 ? 有什么特点?
    js的基本数据类型
  • 原文地址:https://www.cnblogs.com/BurnovBlog/p/10779446.html
Copyright © 2020-2023  润新知