• 基础命令及用户管理


     linux系统登录流程介绍

        用户名、密码登录 --> 权限的管理 --> 审计(日志)
        查看登录日志:/var/log/secure

     Linux基础命令

        分为:内建命令和外部命令
        (1)内建命令是shell的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行shell时就被加载并驻留在系统内存中,其执行速度比外部命令要快,因为解析内部命令shell不需要创建子进程。
        比如:exit、history、echo、cd
        (2)外部命令是linux系统中的实用程序,因为实用程序功能比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调用到内存执行。
        比如:ls、vim

        type命令可以分辨内部命令和外部命令,执行type命令会有三种显示形式:
            file: 表示外部命令
            alias:表示该指令为命令别名所设定的名称;
            builtin:表示该指令为bash内部命令

        操作系统基础命令:
        
            关机命令:

                Halt
                Poweroff -f
                Init 0

               
            重启命令:

                Reboot
                Init 6
                Shutdown -r
    
            Whoami 显示当前登录用户名
            Who 显示当前在线所有用户
            W 显示当前所有登录的用户在做什么

            时间操作命令:

                date
                Date -s 修改时间
                Cal 查看日历
                Ctrl + c 强制中断
                Ctrl + d 正常中断

            新建、移动、复制、删除文件
        

                touch
                mv
                cp
                rm
                tree

            查看历史命令:

            history
                HISTCONTROL=ignoredups        # 默认,忽视重复且相同的命令
                HISTFILE=/root/.bash_history        历史命令保存文件位置
                HISTFILESIZE=1000        历史命令文件行数
                HISTSIZE=1000        历史命令在shell中展示的行数
            
            -c:清空所有历史命令
            n:显示第n行命令
            
            history知识扩展:
                !: 上一个指令
                !!: 执行上一个指令

     用户和组

    在linux中,用户可以分为三大类:
        超级用户:root
        虚拟用户:在linux中,满足文件和程序的运行所需而创建的,不能登录,不能使用。
        普通用户:管理员root创建的用户
    组:具有相同特征用户的集合,一个组可以包含多个用户,每个用户也可以属于不同的组,组是为了管理员对用户的集中管理,用户组分为两类:
        系统组和用户组
    用户和组的关系:
        一对一:一个用户存在一个组
        一对多:一个用户属于多个组,只有一个主组,其余为附加组
        多对一:多个用户共存一个组
        多对多:多个用户可以存在多个组

    用户及用户组配置文件介绍:
        /etc/passwd
        
        第一列:用户名
        第二列:密码位
        第三列:UID号 用户
        第四列:GID号 组
        第五列:用户名注释
        第六列:用户的家目录
        第七列:用户默认的shell类型
        
        /etc/group:组及其属性
        
        第一列:组名
        第二列:组密码
        第三列:GID
        第四列:以该组为附加组的用户列表
        
        /etc/shadow 用户密码及其相关属性
        
        第一列:用户名
        第二列:密码位
            为空表示登录不用密码
            $:为加密存放
            *:为账户被锁定
            !!:表示密码过期
        第三列:最后一次修改时间(天数)
        第四列:最小时间间隔:指的是两次修改口令之间所需的最小天数
        第五列:最大时间间隔:指的是两次口令保持有效的最大天数
        第六列:告警时间:从系统开始告警用户到用户密码失效之间的天数
        第七列:不活动时间:表示用户没有登录活动但帐号有效的最大天数
        第八列:失效天数:给出的绝对天数
        
        /etc/gshadow 组密码及其相关属性
        
        第一列:组名
        第二列:组密码第三列:管理员列表,可以更改组密码和成员
        第四列:将该组作为辅助组的成员列表

     用户和组管理命令

        用户管理命令:

            Useradd
            -u: uid 创建用户时指定的uid
            -g:gid 指明创建用户所属组
            -c:用户的注释信息
            -M:不创建家目录
            -s:指定用户的默认shell
            -e:用户过期时间
            -G:为用户指明附加组,组必须提前存在
        
        
        创建用户时默认值设定存放与/etc/default/useradd
        GROUP=100
        HOME=/home            把用户的家目录创建在/home下
        INACTIVE=-1            是否启用帐号过期停权,-1为不启用
        EXPIRE=            帐号终止日期,不设置为不启用
        SHELL=/bin/bash            默认shell
        SKEL=/etc/skel            配置新用户家目录的默认存放位置
        CREATE_MAIL_SPOOL=yes        创建mail文件
    
        /etc/login.defs
        
        Usermod
        
            -u: 新UID
            -g:新主组
            -G:新附加组
            -s:新的默认shell
            -c:新的注释
            -d:HOME 新的家目录;若要创建新的家目录并移动原家目录数据,使用-m选项
            -L:lock指定用户,在/etc/shadow密码增加!
            
            
        Userdel
            
            -r:删除用户时,连通家目录,mail一同删除
    
        Id
            -u:显示UID
            -g:显示GID
            -G:显示用户所属组的id
            -n:显示名称


        Su 切换用户或以其他用户身份执行命令
            (1)su 非登录式切换,不会读取目标用户的部分配置文件,不改变工作目录
            (2)su - 登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换
            (3)root使用su切换至其他用户无须密码,其他用户之间切换或者切换到root需要密码
            
            
        passwd:修改指定用户密码,仅root用户使用
            -e:强制用户下次登录修改密码
            --stdin:从标准输入接收用户密码

    组帐号管理:
        Groupadd
            -g:创建指定gid组
            -r:创建系统组
            
        Groupmod
            -n:修改组名
            -g:修改gid
            
        Groupdel
            删除组
            
        Groups
            查看用户所属组列表
            
            
    文件权限:
        普通文件
        
        r: 可以读取文件内容
        w: 可以追加或者覆盖文件内容
        x: 可以执行文件,需要和r配合

        目录文件
        
        r:可以查看目录下有那些文件,不能查看文件的详细信息
        w:可以在目录中创建删除文件,需要x配合
        x:可以cd进入该目录

     Linux特殊权限

    Setuid
        
    当s这个标志出现在文件所有者的x权限上时,例如文件权限 "-rwSr--r--"  说明此文件具有suid特殊权限,SUID功能和限制:
        (1)SUID权限仅对二进制程序有效,首先该二进制需有执行权限
        (2)执行者对于该程序需要具有x的可执行权限;
        (3)本权限仅在执行该程序的过程中有效;
        (4)执行者将具有该程序所有者的权限
        (5)s为小写时,拥有者有x权限,S为大写时,拥有者没有x权限

    常见命令,例如:/usr/bin/passwd

    密码文件通常只有root有强制写功能,也就是说只有root才可以修改密码,但是为什么普通用户也可以修改自己的密码呢?

    因为在/usr/bin/passwd 命令具有SUID权限,在执行时,执行者将具有所有者的权限,所有者是root,所以普通用户也可以修改密码。
    举例:netstat

     SGID

    当s标志出现在文件所有者的x权限时称为SUID,那么s出现在用户组的x权限时称为SGID。(U表示user,G表示group)。SGID有如下功能:
        (1)SGID对二进制和目录都有用
        (2)程序执行者对该程序具备x权限(3)执行者在执行过程中会获得该程序用户组的支持

    举个例子,/usr/bin/locate这个程序可以去查询/var/lib/mlocate/mlocate.db这个文件的内容,mlocate.db的权限如下:

    -rwx--s--x root  slocate /usr/bin/locate
    -rw-r-----   root slocate /var/lib/mlocate/mlocate.db


    若使用vbird这个账号执行locate时,vbird就会获得用户组slocate支持,又由于用户组slocate对mlocate.db具有r权限,所以vbird就可以读取mlocate.db了。

    除了二进制程序外,SGID也可以用在目录上。当一个目录设置了SGID权限后,它具有以下功能:
        (1)用户若对此目录具有r和x权限,该用户能够进入该目录
        (2)用户在此目录下的有效用户组将变成该目录的用户组
        (3)若用户在此目录下拥有w权限,则用户所创建的新文件的用户组与该目录的用户组相同

     SBIT

        sbit目前只对目录有效
        sbit对目录的作用是:
            (1)当用户对此目录具有w和x权限时,即具有写入权限时;
            (2)当用户在该目录下创建新文件或目录时,仅有自己和root才有权限删除

    SUID/SGID/SBIT权限设置

    先将其转换为数字:
        SUID: 4
        SGID: 2
        SBIT: 1

     Linux ACL权限划分

        ACL:access control list 主要是提供传统 读写执行权限以外的具体权限设置,ACL可以针对单一用户、单一文件或者目录进行,对于需要特殊权限的使用状况有一定的帮助。如:某一个文件,不让单一的某个用户访问
        
    ACL使用两个命令来对其进行控制:
        getfacl:获取某个文件、目录的ACL设置项目
        setfacl:设置某个文件、目录的ACL设置项目

     setfacl 参数
      -m:设置后续acl参数
      -x:删除后续acl参数
      -b:删除全部的acl参数
      -k:删除默认的acl参数
      -R:递归设置acl,包括子目录
      -d:设置默认acl

    例:创建一文件test,将其权限修改为777,并查看其默认ACL权限配置

        [root@ localhost ~]# touch /test
        [root@ localhost ~]# chmod 777 /test
        [root@ localhost~]# getfacl /test            //获得文件的ACL权限
        getfacl: Removing leading '/' from absolute path names
        # file: test                                //文件名
        # owner: root                            //文件所属者
        # group: root                            //文件所属组
        user::rwx                                //文件所属者权限
        group::rwx                              //同组用户权限
        other::rwx                              //其它者权限

    可以看到其它者的权限也是可读可写可执行,可以自行测试,现在我们修改其ACL策略,使用用户test只有读取的权限

    [root@zabbix tmp]# setfacl -m u:test:r test
    [root@zabbix tmp]# getfacl test
    # file: test
    # owner: root
    # group: root
    user::rwx
    user:test:r--        # 可以看到 test 单独的权限为 r--
    group::rwx
    mask::rwx
    other::rwx

    注:test权限并不是只根据ACL配置来决定的,它是由test用户基本权限和ACL权限的交集决定的。

    other:rwx
    acl: r--

    所以 test用户只具有 r 权限

    [test@zabbix tmp]$ echo 'abc' > test
    -bash: test: Permission denied
    [test@zabbix tmp]$ rm -rf test
    rm: cannot remove ‘test’: Operation not permitted
    
    [root@zabbix tmp]# ll
    -rwxrwxrwx+ 1 root root 0 Jan 18 07:10 test        # 可以看见,如果文件具有ACL权限后面会多一个加号
    
    取消ACL
    
    [root@zabbix tmp]# setfacl -x u:test test        # 取消test用户acl权限
    [root@zabbix tmp]# setfacl -x m test        # 恢复有效权限
    [root@zabbix tmp]# ll
    total 0
    -rwxrwxrwx 1 root root 0 Jan 18 07:10 test

     linxu隐藏权限

    chattr (配置文件隐藏属性)

    选项与参数:
        + :添加某一个特殊参数,其他原本存在参数则不动.
        - :移除某一个特殊参数,其他原本存在参数则不动.
        = :配置一定,且仅有后面接的参数
        
        A :当配置了 A 这个属性时,若你有存取此文件(或目录)时,他的存取时间 atime将不会被修改,可避免I/O较慢的机器过度的存取磁碟.这对速度较慢的计算机有帮助
        S :一般文件是非同步写入磁碟的(原理请参考第五章sync的说明),如果加上 S 这个属性时,当你进行任何文件的修改,该更动会『同步』写入磁碟中.
        a :当配置 a 之后,这个文件将只能添加数据,而不能删除也不能修改数据,只有root 才能配置这个属性.
        c :这个属性配置之后,将会自动的将此文件『压缩』,在读取的时候将会自动解压缩,但是在储存的时候,将会先进行压缩后再储存(看来对於大文件似乎蛮有用的!)
        d :当 dump 程序被运行的时候,配置 d 属性将可使该文件(或目录)不会被 dump 备份
        i :这个 i 可就很厉害了!他可以让一个文件『不能被删除、改名、配置连结也无法写入或新增数据!』对於系统安全性有相当大的助益!只有 root 能配置此属性
        s :当文件配置了 s 属性时,如果这个文件被删除,他将会被完全的移除出这个硬盘空间,所以如果误删了,完全无法救回来了喔!
        u :与 s 相反的,当使用 u 来配置文件时,如果该文件被删除了,则数据内容其实还存在磁碟中,可以使用来救援该文件喔!
        注意:属性配置常见的是 a 与 i 的配置值,而且很多配置值必须要身为 root 才能配置

    例:

    [root@localhost ~]# cd /tmp/
    [root@localhost tmp]# touch test
    [root@localhost tmp]# lsattr test 
    ---------------- test
    [root@localhost tmp]# chattr +i test 
    [root@localhost tmp]# lsattr test 
    ----i----------- test
    [root@localhost tmp]# rm -rf test 
    rm: cannot remove ‘test’: Operation not permitted
    [root@localhost tmp]# echo 'hello test' > test 
    -bash: test: Permission denied

    -i选项很重要,在系统数据安全方面,由于是隐藏属性,只能lsattr才能查看。

    lsattr (显示文件隐藏属性)
    
        [root@www ~]# lsattr [-adR] 文件或目录
        
        选项与参数:
        -a :将隐藏档的属性也秀出来;
        -d :如果接的是目录,仅列出目录本身的属性而非目录内的档名;
        -R :连同子目录的数据也一并列出来!
  • 相关阅读:
    Java实现OPC通信
    OPCServer:使用KEPServer
    OPCServer:使用Matrikon OPC Server Simulation
    OPC和DCOM配置
    jquery中attr和prop的区别
    jquery 操作checkbox是否选中的正确方法
    GPRS RTU设备OPC Server接口C# 实现
    Raspberry Pi 中安装Mono
    C#中DllImport用法汇总
    HTML <form> 标签的 method 属性
  • 原文地址:https://www.cnblogs.com/hukey/p/8308967.html
Copyright © 2020-2023  润新知