• shell命令之---Linux文件权限


    本章内容

     理解Linux的安全性
     解读文件权限
     使用Linux组

     

    1、Linux的安全性---/etc/passwd文件

      # cat /etc/passwd
      root:x:0:0:root:/root:/bin/bash
    
      /etc/passwd文件的字段包含了如下信息:
       登录用户名
       用户密码
       用户账户的UID(数字形式)
       用户账户的组ID(GID)(数字形式)
       用户账户的文本描述(称为备注字段)
       用户HOME目录的位置
       用户的默认shell

    2、Linux的安全性---/etc/shadow文件

      /etc/shadow文件为系统上的每个用户账户都保存了一条记录。记录就像下面这样:
      rich:$1$.FfcK0ns$f1UgiyHQ25wrB/hykCn020:11627:0:99999:7:::
      在/etc/shadow文件的每条记录中都有9个字段:
       与/etc/passwd文件中的登录名字段对应的登录名
       加密后的密码
       自上次修改密码后过去的天数密码(自1970年1月1日开始计算)
       多少天后才能更改密码
       多少天后必须更改密码
       密码过期前提前多少天提醒用户更改密码
    
      密码过期后多少天禁用用户账户
       用户账户被禁用的日期(用自1970年1月1日到当天的天数表示)
       预留字段给将来使用

     3、添加新用户

       用来向Linux系统添加新用户的主要工具是useradd。这个命令简单快捷,可以一次性创建新用户账户及设置用户HOME目录结构。 useradd命令使用系统的默认值以及命令行参数来设置用户账户。系统默认值被设置在/etc/default/useradd文件中。可以使用加入了-D选项的useradd命令查看所用Linux系统中的这些默认值。

    # /usr/sbin/useradd -D
    GROUP=100
    HOME=/home
    INACTIVE=-1
    EXPIRE=
    SHELL=/bin/bash
    SKEL=/etc/skel
    CREATE_MAIL_SPOOL=yes
    #

    在创建新用户时,如果你不在命令行中指定具体的值, useradd命令就会使用-D选项所显示的那些默认值。这个例子列出的默认值如下:
     新用户会被添加到GID为100的公共组;
     新用户的HOME目录将会位于/home/loginname;
     新用户账户密码在过期后不会被禁用;
     新用户账户未被设置过期日期;
     新用户账户将bash shell作为默认shell;
     系统会将/etc/skel目录下的内容复制到用户的HOME目录下;
     系统为该用户账户在mail目录下创建一个用于接收邮件的文件。
    倒数第二个值很有意思。 useradd命令允许管理员创建一份默认的HOME目录配置,然后把它作为创建新用户HOME目录的模板。这样就能自动在每个新用户的HOME目录里放置默认的系统文件

      useradd命令行参数 


    参数                              描述


    -c       comment 给新用户添加备注
    -d       home_dir 为主目录指定一个名字(如果不想用登录名作为主目录名的话)
    -e       expire_date 用YYYY-MM-DD格式指定一个账户过期的日期
    -f       inactive_days 指定这个账户密码过期后多少天这个账户被禁用; 0表示密码一过期就立即禁用, 1表示禁用这个功能
    -g        initial_group 指定用户登录组的GID或组名
    -G       group ... 指定用户除登录组之外所属的一个或多个附加组
    -k       必须和-m一起使用,将/etc/skel目录的内容复制到用户的HOME目录
    -m       创建用户的HOME目录
    -M       不创建用户的HOME目录(当默认设置里要求创建时才使用这个选项)
    -n       创建一个与用户登录名同名的新组
    -r       创建系统账户
    -p       passwd 为用户账户指定默认密码
    -s       shell 指定默认的登录shell
    -u       uid 为账户指定唯一的UID


     4、删除用户

      默认情况下, userdel命令会只删除/etc/passwd文件中的用户信息,而不会删除系统中属于该账户的任何文件

      如果加上-r参数, userdel会删除用户的HOME目录以及邮件目录

     

    5、修改用户

       用户账户修改工具


     命令            描述


     usermod       修改用户账户的字段,还可以指定主要组以及附加组的所属关系

    passwd          修改已有用户的密码
    chpasswd        从文件中读取登录名密码对,并更新密码
    chage            修改密码的过期日期
    chfn            修改用户账户的备注信息
    chsh            修改用户账户的默认登录shell


      a.usermod

       usermod命令是用户账户修改工具中最强大的一个。 

         -l修改用户账户的登录名。
         -L锁定账户,使用户无法登录。
         -p修改账户的密码。
         -U解除锁定,使用户能够登录。

      b.passwd和chpasswd

       改变用户密码的一个简便方法就是用passwd命令。 -e选项能强制用户下次登录时修改密码。

      c.创建新组

      groupadd命令可在系统上创建新组。在创建新组时,默认没有用户被分配到该组。 groupadd命令没有提供将用户添加到组中的选项,但可以用usermod命令来弥补这一点。

      d.修改组

       groupmod命令可以修改已有组的GID(加-g选项)或组名(加-n选项)

    6、文件权限

       umask命令用来设置所创建文件和目录的默认权限。

       对文件来说,全权限的值是666(所有用户都有读和写的权限);而对目录来说,则是777(所有用户都有读、写、执行权限)

      # umask 022;touch 8.txt

      # ll

      -rw-r--r-- 1 root root    0 Apr 24 15:41 8.txt

      注:文件一开始的权限是666, 减去umask022之后, 剩下的文件权限就成了644

      # umask 026;mkdir test5

      # ll

      drwxr-x--x 2 root root 4096 Apr 24 15:43 test5

      注: 由于目录的默认权限是777, umask作用后生成的目录权限不同于生成的文件权限。 umask值026会从777中减去,留下来751作为目录权限设置。

    7、改变权限 

      chmod命令用来改变文件和目录的安全性设置。该命令的格式如下:
      chmod options mode file

     8、改变所属关系

        Linux提供了两个命令来实现这个功能: chown命令用来改变文件的属主,chgrp命令用来改变文件的默认属组。

      chown命令的格式如下。
      chown options owner[.group] file

      chown命令采用一些不同的选项参数。 -R选项配合通配符可以递归地改变子目录和文件的所属关系。 -h选项可以改变该文件的所有符号链接文件的所属关系。

    9、文件共享

      创建新文件时, Linux会用你默认的UID和GID给文件分配权限。想让其他人也能访问文件,要么改变其他用户所在安全组的访问权限,要么就给文件分配一个包含其他用户的新默认属组。
      如果你想在大范围环境中创建文档并将文档与人共享,这会很烦琐。幸好有一种简单的方法可以解决这个问题。
        Linux还为每个文件和目录存储了3个额外的信息位。
         设置用户ID( SUID) :当文件被用户使用时,程序会以文件属主的权限运行。
         设置组ID( SGID) :对文件来说,程序会以文件属组的权限运行;对目录来说,目录中创建的新文件会以目录的默认属组作为默认属组。
         粘着位:进程结束后文件还驻留(粘着)在内存中。
      SGID位对文件共享非常重要。启用SGID位后,你可以强制在一个共享目录下创建的新文件都属于该目录的属组,这个组也就成为了每个用户的属组。

      因此,要创建一个共享目录,使目录里的新文件都能沿用目录的属组,只需将该目录的SGID位置位。
        $ mkdir testdir
        $ ls -l
        drwxrwxr-x 2 rich rich 4096 Sep 20 23:12 testdir/
        $ chgrp shared testdir
        $ chmod g+s testdir
        $ ls -l
        drwxrwsr-x 2 rich shared 4096 Sep 20 23:12 testdir/
        $ umask 002
        $ cd testdir
        $ touch testfile
        $ ls -l
        total 0
        -rw-rw-r-- 1 rich shared 0 Sep 20 23:13 testfile

     

     
    不积跬步,无以至千里;不积小流,无以成江海。
  • 相关阅读:
    【Linux】解压分卷压缩的zip文件
    kafka数据清理
    在 Kubernetes 上安装 Gitlab CI Runner Gitlab CI 基本概念以及 Runner 的安装
    APM监控--(三)zipkin部署手册
    K8S使用NodePort类型Service
    kubernetes基本概念 pod, service
    rsyslog配置解析
    日志收集之rsyslog to kafka
    linux auditd审计的简单使用和理解
    Nginx的try_files指令使用实例
  • 原文地址:https://www.cnblogs.com/weidongliu/p/10757330.html
Copyright © 2020-2023  润新知