Linux学习笔记:Linux账号管理与ACL权限设定

一、Linux的账号与群组

    使用者标识符UID与GID

        使用者ID(User ID)

        群组ID(Group ID)

    文件利用UID与GID来判别它的拥有者和群组

    使用者账号

         登入主机的流程

       (1)在/etc/passwd中找寻是否有你的账号,如果有的话将账号对应的UID与GID(在/etc/group中)读出来,另外,该账号的家目录与shell设定也一并读出来

       (2)核对密码表,进入/etc/shadow 里面找出对应的账号与UID,然后核对密码是否相符

       (3)进入Shell控管阶段

    /etc/passwd文件结构

        每一行代表一个账号,很多账号是系统正常运行所必需的,系统账号,如:bin、daemon、adm、nobody等

        

        七个部分用:分割

        账户名称:密码:UID:GID:用户信息说明栏:家目录:shell

        注意:UID,0为root,1-999为系统账号(1-200由distributions自行建立的系统账号,201-999若用户有系统账号需求时可以使用的账号UID),1000-很大的数为可登入的账号

    /etc/shadow文件结构

        

        九个字段用:分割

        账号名称:密码:最近更动密码的日期(从1970.1.1开始累加的天数):密码不可被更动的天数:密码需要重新更动的天数:密码需要变更期限钱的警告天数:密码过期后的账号宽限时间:账号失效日期:保留

        忘记密码的解决办法

           一般用户:root使用passwd更改

          root:进入单人维护模式,用passwd修改密码

        查看shadow使用哪种加密机制         

[root@localhost gyy]# authconfig --test | grep hashing

password hashing algorithm is sha512

    关于组群

        /etc/group 文件结构

            

            记录GID与组名的队形,四个字段以:分割

            组名:组群密码:GID:此组群支持的账号名称

            有效组群和初始组群

                groups有效与支持群组的查看

                newgrp有效群组的切换

    /etc/gshodow 文件结构

        

        第二位为密码,如果为!或者为空表示不具有群组管理员

        四个字段,以:分割

        组名:密码:组群管理员账号:有加入该组群支持的所属账号

二、账号管理

    新增和移除使用者

       useradd,相关配置文件,passwd,usermod,userdel

        1、useradd

        使用useradd时系统的默认操作

        

        系统账号主要是用来进行运作系统所服务的权限设定,系统账号默认不会主动建立家目录

        

        useradd的参考档

            

            100位users用户组,但是在CentOS中并不会默认分到users,而是与用户同名的用户组

            私有群组机制(RHEL、Fedora、CentOS)和共有群组机制(SuSE等)

            HOME:用户家目录的基准目录

            SKEL:用户家目录参考基准目录

            

        UID/GID还有密码参数的参考档

           /etc/login.defs

        所以useradd在建立Linux账号时,至少会参考

            /etc/default/useradd

            /etc/login.defs

            /etc/skel/*

        2、passwd

        使用useradd建立账号之后,在预设的情况下,账号是被暂时封锁的,要给它设定密码

        快速设置密码

            echo "密码字符串" | passwd --stdin 用户名

        锁定账号

            

        

       其实就是密码前面加了俩!

       解锁

       

        3、change

        更详细的密码参数显示

       可以设置更加安全的密码,设置过期时间等等

        4、usermod

        进行账号相关数据微调

        5、userdel

        删除用户的相关数据

            用户账号/密码相关参数:/etc/passwd

           使用者用户组相关参数:/etc/group,/etc/gshadow

           用户个人文件数据:家目录,/var/spool/mail/username…

        -r 连同家目录一起删除

       通常要移除一个账号时,可以手动将/etc/passwd/etc/shadow里面的账号取消即可,如果只是暂时不启用,将/etc/shadow中失效日期(第八字段)设定为0,使用userdel通常是不要让该用户在主机上使用任何数据了,如果想要完整移除某用户的所有文件,在userdel之前,先find -user username查出整个系统内属于username的文件,在加以删除

    用户功能

        id 查询用户信息

        finger 查阅用户很多相关信息

            一般不默认安装,手动安装一下

           

        chnf 像是change finger

            可以给用户加一些联系信息

        chsh 像是change shell

    新增和移除用户组

        groupadd 创建用户组

        groupmod 对用户组进行调整

        groupdel 删除用户组

    账号管理示例:

        

        

        myuser3是不可登入系统的账号,因此需要使用/sbin/nologin这个shell来给予,这样该账号就无法登入

        

         

    使用外部身份认证系统

        authconfig-tui指令 用来设定一些数据

三、主机细部权限规划:ACL的使用

    传统的权限设定只有所有者、用户组、其他人三种权限,没发对某一使用者或者某一用户组来设定特定的权限需求,要使用ACL机制

    ACL(Access Control List),在提供传统权限设定外可以针对单一使用者但以文件或目录来进行rxw的权限设定

    可针对几个项目

        使用者:可以针对使用者来设定权限

        用户组:针对用户组为对象来设定权限

    dmesg | grep -i acl可以查看是否支持ACL

    setfacl

        设定ACL的特殊权限

    getfacl

        查阅权限数据

四、使用者身份切换

    需要身份切换的原因:

        平日操作使用一般账号、用较低权限启动系统服务、系统本身的限制

    让一般使用者转变身份为root

         su :需要root密码

         sudo:需要用户输入自己的密码,多人共管同一部主机时sudo比su更好

    su

        直接使用su切换成root的身份,读取的变量设定方式为non-login shell的方式,这种方式很多原本的变量不会改变,因此很多root管用的指令就只能使用绝对路径来执行

        su - 是让使用者的身份变成root 并开始操作系统

        -c 仅一条指令切换身份

        例:su - -c "head -n 3 /etc/shadow"

    sudo

        并非所有人都能执行sudo,而是仅有规范到/etc/sudoers内的用户才能执行sudo这个指令

        -u 后面接欲切换的使用者,若无此项则代表切换身份为root

        

        我们可以使用sudo来切换为系统用户操作,而系统用户不能su

        sudo的执行流程

        

             重点:能否使用sudo必须要看/etc/sudoers的设定值,而可使用sudo者是透过输入用户自己的密码来执行后续的指令串

            /etc/sudoers的内容是有一定的规范的,直接vim是不好的,要使用visudo来修改

    visudo

        单一用户可进行root所有指令

        

        

        sudo的时间间隔问题:当两次执行sudo的间隔在5分钟以内时不需要输入密码

五、用户的特殊shell与PAM模块

    系统账号是不需要登入shell的

    无法登入:无法使用bash或其他shell来登入系统

    无法登入不代表无法使用系统资源

    PAM模块

        是一套应用程序编程接口,提供了一连串的验证机制,只要使用者将验证阶段的需求告知PAM后,PAM就能回报使用者验证的结果(成功或者失败)

        

        执行passwd后呼叫PAM的流程:

        

        PAM模块有关的配置文件位于/etc/pam.d/*/etc/security/*

        /etc/pam.d

        

六、主机上的用户讯息传递

    查询使用者:w,who,last,lastlog

    使用者对谈:write,mesg,wall

    使用者邮件信箱:mail

七、一些账号相关的检查工具

    pwck:检查/etc/passwd 这个文件内的信息与实际的家目录是否存在等信息

    pwconv:将/etc/passwd内的账号与密码移动到/etc/shadow中,使用useradd增加用户不需要,手动设定用户时需要

    chpasswd:读入未加密前的密码,并且经过加密后,将加密后的密码写入/etc/shadow,该命令常被使用在大量建置账号的情况中

猜你喜欢

转载自blog.csdn.net/a568713197/article/details/86698436