linux初步学习之用户和用户组及权限管理浅谈

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux初步学习之用户和用户组及权限管理浅谈相关的知识,希望对你有一定的参考价值。

  

用户、组:

多用户:多人同时使用系统资源;        AAA:

                                         Authentication身份验证
多任务:同行运行多个进程;               Authorization授权

                                         Account账户

 

用户的类别:

     管理员:root

     普通用户:

         系统用户:仅用于运行服务程序;

         登录用户:系统资源的正常使用者;


     用户标识:UserID, UID 

            16bits二进制数字:0-65535

         管理员:0

         普通用户:

             系统用户:

                     CentOS 5, 6: 1-499

                     CentOS 7: 1-999

             普通用户:

                     CentOS 5,6: 500+

                     CentOS 7: 1000+


      名称解析:名称转换;

           解析库: username <--> UID 

                /etc/passwd:用户名、UID及其它属性信息解析库;

用户组:

    组类别:

          管理员组

          普通用户组:

                  系统组

                  登录组

            组标识:GroupID, GroupID

              管理员组:0

              普通用户组:

                  系统组:

                    CentOS 5,6: 1-499

                    CentOS 7: 1-999


                  登录组:

                    CentOS 5,6: 500+

                    CentOS 7: 1000+


              名称解析:groupname <--> gid 

              解析库:/etc/group


      组类别:以用户为核心

           用户的主组:基本组;

           用户的附加组:额外组;


      组类别:根据组内容纳的用户来划分

           私有组:与用户名相同,且只有一个此用户;

           公共组:组内包含了多个用户;


      认证机制:验正用户的确是他所声称的人;

            通过对比事先存储的,与登录时所提供的信息是否一致;

      存储于何处:

                  用户的认证信息库:/etc/shadow

                  组的认证信息库:/etc/gshadow


          密码:加密存放,使用单向加密机制;

          单向加密:仅能加密,不能解密;提取数据特征码;

          数据相同:加密结果相同;

             定长输出:

             雪崩效应:

         算法:

             md5: message digest, 128bits

             sha1: secure hash algorithm, 160bits

             sha224

             sha256

             sha384

             sha512


       添加salt:取随机数;


    随机数:

    熵池:

    伪随机数:软件模拟产生;


     /dev/random:仅从熵池返回随机数,随机数耗尽时会阻塞进程;

     /dev/urandom:先从熵池返回随机数,熵池耗尽时,则从伪随机数生成器返回随机数;

用户和组的管理:

      主要以命令进行:

     组:groupadd,  groupmod, groupdel

     用户:useradd, usermod, userdel

     认证:passwd


     组解析库文件:/etc/group

      GRPNAME:x:GID:user1, user2, ...

      组名:密码点位符:GID:以此组为附加组的用户列表,以逗号分隔

                  Eg:  nologin:x:2015:

                      storm:x:2016:


     groupadd命令:添加组

     groupadd  [选项]  group

               -g  GID:指明GIDeg:~]# groupadd -g 1005 apple

               -r, --system:系统组;


     groupmod命令:修改组信息

           groupmod [选项] GROUP

                     -g  GID 

                     -n NEW_NAME:修改组名;eg:~]# groupmod -n apple9 apple

     groupdel命令:删除组

     groupdel [选项] GROUP


       用户解析库:/etc/passwd 

           name:password:UID:GID:GECOS:directory:shell

               Eg:storm:x:2016:2016::/home/storm:/bin/bash

     useradd命令:添加用户

     useradd  [选项]  登录名

              -c, --comment COMMENT:注释信息,一般为Full Name

              -d, --home  /PATH/TO/HOME_DIR:家目录路径;目标路径不能事先存在,否则会有警告,不会得利skel相关的文件给用户;

              -g, --gid GROUP:用户的基本组组名或GID

              -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:用户所属的附加组列表,彼此间用逗号隔开,中间没有空格;

              -m, --create-home:强制创建家目录; 

              -M:不创建用户主目录,即使系统在 /etc/login.defs 中的设置 (CREATE_HOME) 为 yes

              -r, --system:创建一个系统账户

              -s, --shell SHELL:用户的登录 shell 名,默认为留空,让系统根据 /etc/default/useradd 中的 SHELL 变量选择默认的登录shell

              -u, --uid UID:用户 ID 的数字值。此值必须为唯一的,除非使用了 -o 选项。此值必须非负,默认使用大于等于UID_MIN,且大于任何其他用户 ID 最小值。


    注意:创建登录用户时,为其自定义的shell程序必须为可登录shell,且要位于/etc/shells文件中;


     useradd -D:显示创建用户时的默认设置;

     useradd -D  选项:设置某默认选项;


                 -e, --expiredate  EXPIRE_DATE:用户账号的过期期限;过期后会被锁定;日期以 YYYY-MM-DD 格式指定

                 -f, --inactive INACTIVE:密码过期后,账户被彻底禁用之前的天数。表示立即禁用,-1 表示禁用这个功能。


          为用户提供默认配置的配置文件:

                                /etc/login.defs, /etc/default/useradd


    影子口令文件:/etc/shadow

             登录名:密码:最近一次的修改时间:密码的最短使用期限:密码最长使用期限:提前警告的天数:非活动期限:账号的禁用日期:保留字段

           Eg:apple:$6$x0jm5KMu$N.gOtGoel2RGUsh2HaboaZr/2dECBuoZRH91MYjMvnS5lZgfXQRuOkvzOcTtNcPAE5kudAa.IBvVFTlrwckiM.:16870:0:99999:7::2019:

           密码:$加密算法$salt$加密的密码字符串


     usermod命令:修改账号信息

        -c, --comment  COMMENT

            -d, --home  HOME_DIR:修改家目录为新的位置,但一般应该同时使用-m选项以保证原家目录中的文件会移动到新目录中;

        -g, --gid GROUP   eg:   ~]# usermod -g 2006 apple

        -G, --groups  GROUP1[,GROUP2,...[,GROUPN]]]:修改时会覆盖原有的附加组;一同使用-a选项,表示为用户添加新的附加组;

        -l, --login  NEW_LOGIN:修改当前用户的用户名;

        -s, --shell  SHELL

        -u, --uid  UID


        -L, --lock:锁定用户的密码。这会在用户加密的密码之前放置一个“!

        -U, --unlock:解锁用户的密码。这将移除加密的密码之前的“!


    userdel命令:删除用户账号

    userdel [选项]  登录名

            -r, --remove:用户主目录中的文件将随用户主目录和用户邮箱一起删除


    passwd命令:密码管理命令

         passwd   [-l]  [-u  [-f]]  [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [--stdin] [username]


        (1) passwd:修改自己的密码;

        (2) passwd  username:修改其它用户的密码,仅root有此权限;

      选项:

        -l:锁定密码

        -u:解锁解密

        -d:清除密码


        --stdin:从标准输入接收密码;

echo "PASSWORD" | passwd  --stdin  USERNAME

Eg:      ~]# echo "apple6892234" | passwd --stdin apple3

      密码复杂度:

       (1) 不能少于8个字符;

       (2) 不能使用与过去的密码太相似的密码;

       (3) 应该使用四类字符中的至少三类;


    

    id命令:查看用户相关的id信息;

     id  [OPTION]...  [USER]

          -u:仅查看uid

          -g:仅查看gid

          -G:查看所属的所有组的ID

          -n:显示名称,而非ID


    su命令:switch user

      切换用户时:

            (1) 不读取目标用户的配置文件(非登录式切换,半切换);

                    su  USERNAME

            (2) 读取目标用户的配置文件(登录式切换,完全切换);

                    su  -l  USERNAME

                    su  -  USERNAME


                    -c command, --command=command:仅以指定的用户的身份运行此处指定的命令,而不执行真正的身份切换操作;


      注意:root切换至任何其它用户无须认证密码;普通用户切换至其它用户,都需要密码;


     gpasswd命令:为组添加密码


             组密码文件:/etc/gshadow


     gpasswd [选项] group

              -a USERNAME:把用户添加至组中;

              -d USERNAME:从此组中移除此用户;


      newgrp命令:登录到一个新组


      chage命令:修改用户账号的各种期限;


安全上下文:

进程:以某个用户的身份运行,进程对资源的操作权限取决于它所代表的用户;

文件:权限模型

属主:owner

属组:group

其它:other


权限模型生效的机制:

进程的运行者:

是否与文件的属主相同,如果是,则以文件属主的身份来访问此文件;否则

是否属于文件的属组,如果是,则以文件属组的身份来访问此文件;否则

以文件的其它用户的身份来访问此文件;

权限管理:


文件系统文件权限:

               三类用户:

                 属主:owner, u

                 属组:group, g

                 其它:other, o


权限:

r: readable,可读

w: writable, 可写

xexcutable, 可执行 


权限管理:


文件:

r:可获取文件的数据;

w:可修改文件的数据;

x:可将此文件运行为进程;


目录:

r:可使用ls命令获取其下的所有文件列表;但不可以使用“ls -l”去获取详细信息,也不可以cd至此目录中;

w:可修改此目录下的文件列表, 即可以在此目录下创建或删除文件;

x:可以使用"ls -l“命令来获取其下的文件的详细属性信息,也可cd至此目录中;


rwxrwxrwx

          owner: rwx 

          group: rwx 

          other: rwx 


    权限组合机制:

        以owner为例:

             ---      000     0

             --x      001     1

             -w-      010     2

             -wx      011     3

             r--      100     4

             r-x      101     5

             rw-      110     6

             rwx      111     7


    练习:

        rwxr-xr-x755

        rw-r--r--: 644


             750: rwxr-x---,  640: rw-r-----


   权限管理:

         ownership: 仅管理员有权限 

          改属主:chown

          改属组:chgrp


    mode(permission):仅属主

chmod


chmod命令:

    作用:change file mode bits

      chmod [OPTION]... MODE[,MODE]... FILE...

      chmod [OPTION]... OCTAL-MODE FILE...

      chmod [OPTION]... --reference=RFILE FILE...


    用户的标识符:u,g,o,a


     (1) chmod [OPTION]... MODE[,MODE]... FILE...


         [[email protected] ~]$ ll /tmp 

              total 0

           drwxr-xr-x. 2 apple apple1 6 Mar 10 08:24 apple

         [[email protected] ~]$ chmod u=rw- /tmp/apple

         [[email protected] ~]$ ll /tmp

          total 0

         drw-r-xr-x. 2 apple apple1 6 Mar 10 08:24 apple

      MODE

          赋权表示法:直接操作一类用户的所有权限位rwx

              u=

              g=

              o=

              a=


        两类用户权限相同:ug=, go=

       不同类的用户权限不同:u=,g=,o=


       授权表示法:操作一类用户一位或多位权限;

           u+, u-

           g+, g-

           o+, o-

           a+, a-


       两类用户权限收授机制相同:ug+, ug-, ...

       不同类的用户权限不同:u+,g+,o+


      (2) chmod [OPTION]... OCTAL-MODE FILE...


      (3) chmod [OPTION]... --reference=RFILE FILE...

                --reference=RFILERFILE表示参考其权限模型;


     常用选项:

               -R, --recursive:递归修改;


     chown命令:

        chown [OPTION]... [OWNER][:[GROUP]] FILE...

        chown [OPTION]... --reference=RFILE  FILE...


     常用选项:

               -R, --recursive:递归修改;


     chgrp命令:

         chgrp [OPTION]... GROUP FILE...

         chgrp [OPTION]... --reference=RFILE FILE...


     umask:显示或设定文件模式掩码

        文件:

        666-umask

        目录:

        777-umask


      说明:之所以文件用666去减,表示文件默认不能有执行权限;如果减得的结果中,u,go有执行权限时,             则需要加1


     显示:

        umask

     设定:

        umask MASK


注意:此设定仅对当前shell进程有效;




以上是关于linux初步学习之用户和用户组及权限管理浅谈的主要内容,如果未能解决你的问题,请参考以下文章

浅谈linux系统下的权限管理和进程及服务的控制

LINUX 用户及权限之我见

学习之路浅谈:bash及其特性,命令历史以及用户管理及权限,shell的类型

Python学习第四天----Linux之用户与用户组权限

Python学习第四天----Linux之用户与用户组权限

Linux学习汇总——Linux用户组管理,文件权限管理,文本处理工具grep及egrep