美文网首页devops
Linux上的文件管理及用户权限管理

Linux上的文件管理及用户权限管理

作者: Pu2zL3he4d | 来源:发表于2018-11-26 16:43 被阅读0次

    1.bash的基础特性:

    bash的基础特性:命令的执行状态结果

        命令执行的状态结果:
            bash通过状态返回值来输出此结果:
                成功:0
                失败:1-255
    
            命令执行完成之后,其状态返回值保存于bash的特殊变量$?中;
    
        命令正常执行时,有的还回有命令返回值:
            根据命令及其功能不同,结果各不相同;
    
        引用命令的执行结果:
            $(COMMAND)
            或`COMMAND`
    
    bash的基于特性:引用
        强引用:''
        弱引用:""
        命令引用:``
    
    bash基础特性:快捷键
        Ctrl+a:跳转至命令行行首
        Ctrl+e:跳转至命令行行尾
    
        Ctrl+u:删除行首至光标所在处之间的所有字符;
        Ctrl+k:删除光标所在处至行尾的所有字符;
    
        Ctrl+l:清屏,相当于clear
    
    bash的基础特性之:命令行展开
        ~:自动展开为用户的家目录,或指定的用户的家目录;           
        {}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;
            例如:/tmp/{a,b} 相当于 /tmp/a /tmp/b
    
    globbing:文件名通配(整体文件名匹配,而非部分)
    
        匹配模式:元字符
            *:匹配任意长度的任意字符
                pa*, *pa*, *pa, *p*a*
                    pa, paa, passwd
            ?:匹配任意单个字符
                pa?, ??pa, p?a, p?a?
                    pa, paa, passwd
            []:匹配指定范围内的任意单个字符
                有几种特殊格式:
                    [a-z], [A-Z], [0-9], [a-z0-9]
                    [[:upper:]]:所有大写字母
                    [[:lower:]]:所有小写字母
                    [[:alpha:]]:所有字母
                    [[:digit:]]:所有数字
                    [[:alnum:]]:所有的字母和数字
                    [[:space:]]:所有空白字符
                    [[:punct:]]:所有标点符号
    
                    pa[0-9][0-9], 2[0-9][0-9]
            [^]:匹配指定范围外的任意单个字符
                [^[:upper:]]
                [^0-9]
                [^[:alnum:]]
    

    2.IO重定向及管道

        程序:指令+数据
            程序:IO
    
            可用于输入的设备:文件
                键盘设备、文件系统上的常规文件、网卡等;
            可用于输出的设备:文件
                显示器、文件系统上的常规文件、网卡等;
    
            程序的数据流有三种:
                输入的数据流;<-- 标准输入(stdin),键盘;
                输出的数据流:--> 标准输出(stdout),显示器;
                错误输出流:  --> 错误输出(stderr),显示器;
    
            fd: file descriptor,文件描述符
                标准输入:0
                标准输出:1
                错误输出:2
    
        IO重定向:
    
            输出重定向:>
                特性:覆盖输出
            输出重定向:>>
                特性:追加输出
    
            # set -C
                禁止覆盖输出重定向至已存在的文件;
                此时可使用强制覆盖输出:>|
            # set +C
                关闭上述特性
    
            错误输出流重定向:2>, 2>>
    
            合并正常输出流和错误输出流:
                (1) &>, &>>
                (2) COMMAND > /path/to/somefile 2>&1
                    COMMAND >> /path/to/somefile 2>&1
    
                特殊设备:/dev/null
    
            输入重定向:<
    
            tr命令:
                tr [OPTION]... SET1 [SET2]
                    把输入的数据当中的字符,凡是在SET1定义范围内出现的,通通对位转换为SET2出现的字符
    
                用法1:
                    tr SET1 SET2 < /PATH/FROM/SOMEFILE
                用法2:
                    tr -d SET1 < /PATH/FROM/SOMEFILE
    
                注意:不修改原文件
    
            Here Document:<<
    
                cat << EOF
                cat > /PATH/TO/SOMEFILE << EOF
    
            管道:连接程序,实现将前一个命令的输出直接定向后一个程序当作输入数据流
                COMMAND1 | COMMAND2 | COMMAND3 | ...
    
                tee命令:
                    COMMAND | tee /PATH/TO/SOMEFILE
    
            练习1:把/etc/passwd文件的前6行的信息转换为大写字符后输出;
                head -n 6 /etc/passwd | tr 'a-z' 'A-Z'
    
        命令总结:tr, tee
    

    3.目录管理类的命令:mkdir, rmdir

        mkdir, rmdir
    
        mkdir:make directories
    
            mkdir [OPTION]... DIRECTORY...
                -p: 自动按需创建父目录;
                -v: verbose,显示详细过程;
                -m MODE:直接给定权限;
    
                注意:路径基名方为命令的作用对象;基名之前的路径必须得存在;
    
        rmdir:remove empty directories
    
            rmdir [OPTION]... DIRECTORY...
    
                -p:删除某目录后,如果其父目录为空,则一并删除之;
                -v: 显示过程;
    tree命令:
        tree [options] [directory]
            -L level:指定要显示的层级;
    

    Q:使用命令行展开功能,创建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b,在/tmp目录下创建目录:x_y, x_z, q_y, q_z

    image.png image.png image.png
    image.png

    4.文件查看类命令:cat, tac, head, tail, more, less, stat, touch

        分屏查看命令:more和less
    
        more命令:
            more FILE
                特点:翻屏至文件尾部后自动退出;
    
        less命令:
            less FILE
    
        head命令:
            查看文件的前n行;
                head [options] FILE
                    -n #
                    -#
    
        tail命令:
            查看文件的后n行;
                tail [options] FILE
                    -n #
                    -#
                    -f:查看文件尾部内容结束后不退出,跟随显示新增的行;
    
        stat命令:
            stat - display file or file system status
    
            stat FILE...
    
            文件:两类数据
                元数据:metadata
                数据: data
    
            时间戳:
                access time:2015-12-10 16:12:22.776423693 +0800
                modify time:2015-12-10 16:12:22.776423693 +0800
                change time:2015-12-10 16:12:22.776423693 +0800
    
        touch命令:
            touch - change file timestamps
    
            touch [OPTION]... FILE...
                -c: 指定的文件路径不存在时不予创建;
                -a: 仅修改access time;
                -m:仅修改modify time;
                -t STAMP
                    [[CC]YY]MMDDhhmm[.ss]
    

    Q:在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22

    image.png
    image.png
    image.png

    Q:文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息?

    • 文件的数据分为两类:一类为数据,即文件的实际内容;另一类为元数据,用来描述文件属性的数据。
    • 元数据信息包含:
      File:文件名
      Size:文件大小(单位:B)
      Blocks:文件所占块个数
      IO Block:每个数据块的大小(单位:B)
      regular file:普通文件(此处显示文件的类型)
      Inode:文件的Inode号,文件的索引节点号
      Links:硬链接次数
      Access:权限
      Uid:(属主id/属主名)
      Gid:(属组id/属组名)
      Context:文件所在的环境
      Access:最近访问时间access time (atime)
      Modify:数据改动时间modification time (mtime)
      Change:元数据改动时间status time (ctime)
      Creat:文件创建时间
    image.png image.png

    5.文件管理工具:cp, mv, rm

        cp命令:copy
            源文件;目标文件;
    
           单源复制:cp [OPTION]... [-T] SOURCE DEST
           多源复制:cp [OPTION]... SOURCE... DIRECTORY
                     cp [OPTION]... -t DIRECTORY SOURCE...
    
            单源复制:cp [OPTION]... [-T] SOURCE DEST
                如果DEST不存在:则事先创建此文件,并复制源文件的数据流至DEST中;
                如果DEST存在:
                    如果DEST是非目录文件:则覆盖目标文件;
                    如果DEST是目录文件:则先在DEST目录下创建一个与源文件同名的文件,并复制其数据流;
    
            多源复制:cp [OPTION]... SOURCE... DIRECTORY
                      cp [OPTION]... -t DIRECTORY SOURCE...
    
                如果DEST不存在:错误;
                如果DEST存在:
                    如果DEST是非目录文件:错误;
                    如果DEST是目录文件:分别复制每个文件至目标目录中,并保持原名;
    
            常用选项:
                -i:交互式复制,即覆盖之前提醒用户确认;
                -f:强制覆盖目标文件;
                -r, -R:递归复制目录;
                -d:复制符号链接文件本身,而非其指向的源文件;
                -a:-dR --preserve=all, archive,用于实现归档;
                --preserv=
                    mode:权限
                    ownership:属主和属组
                    timestamps: 时间戳
                    context:安全标签
                    xattr:扩展属性
                    links:符号链接
                    all:上述所有属性
    
        mv命令:move
           mv [OPTION]... [-T] SOURCE DEST
           mv [OPTION]... SOURCE... DIRECTORY
           mv [OPTION]... -t DIRECTORY SOURCE..         
    
           常用选项:
                -i:交互式;
                -f:force
    
        rm命令:remove
            rm [OPTION]... FILE...
    
            常用选项:
                -i:interactive
                -f:force
                -r: recursive
    
                删除目录:rm -rf /PATH/TO/DIR
                    危险操作:rm -rf /*
    
            注意:所有不用的文件建议不要直接删除,而是移动至某个专用目录;(模拟回收站)
    

    Q:复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。

    image.png image.png

    5.用户、组和权限管理

        Multi-tasks, Multi-Users
    
        每个使用者:
            用户标识、密码;
                Authentication
                Authorization
                Audition
    
            组:用户组,用户容器
    
        用户类别:
            管理员
            普通用户
                系统用户
                登录用户
    
            用户标识:UserID, UID
                16bits二进制数字:0-65535
                    管理员:0
                    普通用户:1-65635
                        系统用户:1-499(CentOS6), 1-999(CentOS7)
                        登录用户:500-60000(CentOS6), 1000-60000(CentOS7)
    
                名称解析:名称转换
                    Username <--> UID
    
                    根据名称解析库进行:/etc/passwd
    
        组:
            组类别1:
                管理员组
                普通用户组
                    系统组
                    登录组
    
            组标识:GroupID, GID
                管理员组:0
                    普通用户组:1-65635
                        系统用户组:1-499(CentOS6), 1-999(CentOS7)
                        登录用户组:500-60000(CentOS6), 1000-60000(CentOS7)   
    
            名称解析:groupname <--> gid
                解析库:/etc/group  
    
            组类别2:
                用户的基本组
                用户的附加组
    
            组类别3:
                私有组:组名同用户名,且只包含一个用户;
                公共组:组内包含了多个用户;
    
        认证信息:
            通过比对事先存储的,与登录时提供的信息是否一致;
            password:
                /etc/shadow
                /etc/gshadow
    
            密码的使用策略:
                1、使用随机密码;
                2、最短长度不要低于8位;
                3、应该使用大写字母、小写字母、数字和标点符号四类字符中至少三类;
                4、定期更换;
    
            加密算法:
                对称加密:加密和解密使用同一个密码;
                非对称加密:加密和解密使用的一对儿密钥;
                    密钥对儿:
                        公钥:public key
                        私钥: private key
                单向加密:只能加密,不能解密;提取数据特征码;
                    定长输出
                    雪崩效应
    
                    算法:
                        md5: message digest, 128bits
                        sha:secure hash algorithm, 160bits
                        sha224
                        sha256
                        sha384
                        sha512
    
                    在计算之时加salt,添加的随机数;
    
        /etc/passwd:用户的信息库
            name:password:UID:GID:GECOS:directory:shell
    
            name: 用户名
            password:可以是加密的密码,也可是占位符x;
            UID:
            GID:用户所属的主组的ID号;
            GECOS:注释信息
            directory:用户的家目录;
            shell:用户的默认shell,登录时默认shell程序;
    
        /etc/shadow:用户密码
            用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:过期期限:保留字段
    
        /etc/group:组的信息库
            group_name:password:GID:user_list
    
                user_list:该组的用户成员;以此组为附加组的用户的用户列表;
    
    相关命令:useradd, userdel, usermod, passwd, groupadd, groupdel, groupmod, gpasswd, chage, chsh, id, su
    
    
    用户管理基础概念:
        用户类别:
            管理员、普通用户(系统用户和登录用户)
        组类别:
            管理员组、普通用户组
            基本组和附加组
            私有组、公共组
        数据库文件:
            /etc/passwd
                login:password:uid:gid:comment:home:shell
            /etc/shadow
                login:encrpted_password:...
            /etc/group
                group:password:gid:user_list
    
            密码存储格式:单向加密,并借助于salt完成
                1: md5
                sha1
                sha224
                sha256
                sha384
                6: sha512
    
    Linux用户和组管理
    
    安装上下文:
        进程以其发起者的身份运行;
            进程对文件的访问权限,取决于发起此进程的用户的权限;
    
    系统用户:为了能够让那后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户;这类用户从不用登录系统;
    
    
    groupadd命令:添加组
    
        groupadd [选项] group_name
    
            -g GID:指定GID;默认是上一个组的GID+1;
            -r: 创建系统组;
    
    groupmod命令:修改组属性
    
        groupmod [选项] GROUP
            -g GID:修改GID;
            -n new_name:修改组名;
    
    groupdel命令:删除组
    
        groupdel [选项] GROUP
    
    useradd命令:创建用户
    
        useradd [选项] 登录名
            -u, --uid UID:指定UID;
            -g, --gid GROUP:指定基本组ID,此组得事先存在;
            -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用户所属的附加组,多个组之间用逗号分隔;
            -c, --comment COMMENT:指明注释信息;
            -d, --home HOME_DIR:以指定的路径为用户的家目录;通过复制/etc/skel此目录并重命名实现;指定的家目录路径如果事先存在,则不会为用户复制环境配置文件;
            -s, --shell SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中;
            -r, --system:创建系统用户;
    
        注意:创建用户时的诸多默认设定配置文件为/etc/login.defs     
    
        useradd -D:显示创建用户的默认配置;
        useradd -D 选项: 修改默认选项的值;
    
            修改的结果保存于/etc/default/useradd文件中;
    
    usermod命令:修改用户属性
    
        usermod [选项] 登录
            -u, --uid UID:修改用户的ID为此处指定的新UID;
            -g, --gid GROUP:修改用户所属的基本组;
            -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户所属的附加组;原来的附加组会被覆盖;
            -a, --append:与-G一同使用,用于为用户追加新的附加组;
            -c, --comment COMMENT:修改注释信息;
            -d, --home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置;
            -m, --move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录;
            -l, --login NEW_LOGIN:修改用户名;
            -s, --shell SHELL:修改用户的默认shell;
    
            -L, --lock:锁定用户密码;即在用户原来的密码字符串之前添加一个"!";
            -U, --unlock:解锁用户的密码;
    
    userdel命令:删除用户
    
        userdel [选项] 登录
            -r:删除用户时一并删除其家目录;
    
    练习1:创建用户gentoo,UID为4001,基本组为gentoo,附加组为distro(GID为5000)和peguin(GID为5001);
    练习2:创建用户fedora,其注释信息为"Fedora Core",默认shell为/bin/tcsh;
    
    练习3:修改gentoo用户的家目录为/var/tmp/gentoo;要求其原有文件仍能被用户访问;
    练习4:为gentoo新增附加组netadmin;
    
    passwd命令:
    
        passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
    
        (1) passwd:修改用户自己的密码;
        (2) passwd USERNAME:修改指定用户的密码,但仅root有此权限;
    
            -l, -u:锁定和解锁用户;
            -d:清除用户密码串;
            -e DATE: 过期期限,日期;
            -i DAYS:非活动期限;
            -n DAYS:密码的最短使用期限;
            -x DAYS:密码的最长使用期限;
            -w DAYS:警告期限;
    
            --stdin:
                echo "PASSWORD" | passwd --stdin USERNAME
    
    gpasswd命令:
    
        组密码文件:/etc/gshadow
    
        gpasswd [选项] group
            -a USERNAME:向组中添加用户
            -d USERNAME:从组中移除用户
    
    newgrp命令:临时切换指定的组为基本组;
    
        newgrp [-] [group]
    
            -: 会模拟用户重新登录以实现重新初始化其工作环境;
    
    chage命令:更改用户密码过期信息
    
        chage [选项] 登录名
    
            -d
            -E
            -W
            -m
            -M
    
    id命令:显示用户的真和有效ID; 
    
        id [OPTION]... [USER]
            -u: 仅显示有效的UID;
            -g: 仅显示用户的基本组ID; 
            -G:仅显示用户所属的所有组的ID;
            -n: 显示名字而非ID;
    
    su命令:switch user
    
        登录式切换:会通过读取目标用户的配置文件来重新初始化
            su - USERNAME
            su -l USERNAME
        非登录式切换:不会读取目标用户的配置文件进行初始化
            su USERNAME
    
        注意:管理员可无密码切换至其它任何用户;
    
        -c 'COMMAND':仅以指定用户的身份运行此处指定的命令;
    
    其它几个命令:chsh, chfn, finger, whoami, pwck, grpck
    
    命令总结:groupadd, groupmod, groupdel, useradd, usermod, userdel, passwd, gpasswd, newgrp, id, su, chage
    

    Q:创建用户tom,指定UID为5001,指定家目录为/tmp/tom, 指定shell为/bin/zsh, 指定基本组为tom,附加组为jack

    image.png image.png

    相关文章

      网友评论

        本文标题:Linux上的文件管理及用户权限管理

        本文链接:https://www.haomeiwen.com/subject/bgivqqtx.html