Linux之用户及文件权限管理


 前言:Linux 是一个多用户的操作系统;Linux哲学思想之一—“一切皆文件”。说明在学习Linux过程中,用户及文件权限的管理是非常重要滴。本文主要是引用了CentOs/RedHat 7.1的命令。


一.用户、组管理

    1).用户、组类型:

        超级用户(管理员):root用户具有一切权限,只有在进行系统维护(如创建用户、分配权限)时用到;由于root用户权限过大,为了避免管理员的误操作导致不可逆的后果,所以在非必要的情况下不用root用户登录。

        普通用户:为了能让使用者能调用系统资源以及使用某些应用程序时建立的,一般情况下都使用普通用户登录系统。

         管理员组:管理的专用组,指root组

         普通用户组:普通用户的组,容器,一个组可包含多个用户,一个用户可对应多个组

           系统组:系统自动创建的组

           私有组:即基本组,在创建用户时未指定用户组的时候自动创建的与用户名的组。

           

           2).用户、组标识:

        UID(UserID):Linux系统不认识用户名,只认识用户ID号;所以每个用户都具有一个ID号。

         UID表示为16bits二进制数字:0-65535

          管理员的ID号:0

          普通用户:1-65535

            系统用户:1-999

            登录用户:1000-60000

          用户与ID号可以在/etc/passwd中查看。

    

       组标识:

        GID(GroupID):每个组对应的ID号。

           管理员组:0

           普通用户组:1-65535

             系统用户组:1-999

             登录用户组:1000-60000

           组和组ID号可以在/etc/group中查看。

          

    3).用户、组配置文件:/etc/passwd、/etc/group

        passwd中每行共有7列,分别是:用户名:密码:UID:GID:说明信息:组目录:用户登录shell。

        group中每行共有4列,分别是:组名:密码:GID:该组用户成员。


    4).用户、组密码文件:/etc/shadow、/etc/gshadow

        shadow中每行共有7列,分别是:用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期限:过期期限:保留时间

        gshadow中每行共有4列,分别是:组名:加密的密码:管理组:该组用户成员


    5).用户、组管理命令总结:

          useradd、usermod、userdel、groupadd、groupmod、groupdel、passwd、gpasswd、chage、chsh、id、su、who、w、whoami

              注:下文只包含以上命令的常用选项说明,若需要具体说明信息请查看man file 

            useradd:创建用户

                useradd [选项] 登录名

                        -u:指定UID

                        -g:指定基本组ID,基本组必须存在

                        -G:指定附加组ID

                        -s:指定用户登录shell

                usermod:修改用户信息

                    usermod [选项] 登录名

                        -u:修改用户UID号

                        -g:修改用户所属基本组

                        -G:覆盖原来所属的附加组

                        -aG:追加附加组

                        -L,-U:锁定与解锁用户密码

                userdel:删除用户

                    userdel [选项] 登录名

                        -r:删除用户及其家目录

                groupadd:添加组

                   groupadd [选项] 组名

                        -g:指定GID

                groupmod:修改组信息

                    groupmod [选项] 组名

                        -g:修改GID

                        -n:修改组名

                groupdel:删除组 

                    groupdel [选项] 组名

               passwd:设置用户密码

                    passwd [选项...] <帐号名称>

                   -d:删除已命名帐号的密码

                        -l:锁定指名帐户的密码

                        -u:解锁指名账户的密码    

                   -e:过期期限,日期

                        -i:非活动期限

                        -n:密码的最短使用期限

                        -x:密码的最长使用期限

                       -w:警告期限

                        --stdin:从标准输入读取密码

                gpasswd:设置组密码

                    gpasswd [选项] 组

                        -a:向组中添加用户

                        -d:从组中移除用户

                chage:更改用户密码过期信息

                    chage [选项] 登录名

        -d:将最近一次密码设置时间设为“最近日期”

        -m:将两次改变密码之间相距的最小天数设为“最小天数”

        -M:将两次改变密码之间相距的最大天数设为“最大天数”

         -W:将过期警告天数设为“警告天数”

                chsh:改变登录shell  

                    chsh [选项] [用户名] 

                       -s:指定登录 shell

                id:显示用户的有效ID

                   id [OPTION]... [USER]

                       -u: 显示有效的UID 

                       -g: 显示用户的基本组ID

                       -G:显示用户所属的所有组的ID

                su:切换用户

                   su [选项] [-] [USER [参数]...]

                        -,-l:登录式切换

                who:显示当前已登录的用户信息

                    who [选项]... [ 文件 | 参数1 参数2 ]

                        -b:上次系统启动时间

        -d:显示已死的进程

        -q:列出所有已登录用户的登录名与用户数量

        -r:显示当前的运行级别

                w:显示登录用户和正在执行的程序

                    w [options]

                whoami:显示与当前的有效用户ID 相关联的用户名

                    whoami [选项]...



二.文件权限管理


        1).Linux文件类型

                             -:常规文件

   d:目录文件

   b:块设备文件,支持以“block”为单位进行随机访问

   c:字符设备文件,支持以“character”为单位进行线性访问

   l:符号链接文件

   p:命名管道

   s:套接字文件

                2).Linux文件属性

                             例:ls -l(以长格式查看当前目录下的文件信息)出现下面内容  

                                     “drwxrwxrwx”

                              含义:

                                      我们把以上的字段切割为4个部分

                                        第一部分:第一个字符d,表示Linux文件类型,上面有说明

                                        第二部分:第一组rwx三个字符,代表用户权限

                                        第三部分:第二组rwx三个字符,代表用户所属组的权限

                                        第四部分:第三组rwx三个字符,代表其它用户的权限

                              权限说明:

                                         r:read 读取权限;w:write 写入权限 x:excutable 执行权限

                                         在8进制中,r、w、x、分别代表:4、2、1;记住就行

                                针对文件:

              r:可获取文件的数据

              w: 可修改文件的数据                                                               

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

                                针对目录:

                r:可使用ls命令获取其下的所有文件列表

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

                x: 可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息    

                3).文件操作命令简述:

                           ls、mkdir、touch、rmdir、rm、mv、cd、cp、more、less、head、tail、                                        cat、tac ......

                         ls:列出文件或目录相关信息          

                                 ls [选项]... [文件]...

                                  -a: 显示所有文件,包括隐藏文件

         -A:显示除.和..之外的所有文件

         -l: --long, 长格式列表,即显示文件的详细属性信息               

           -h, --human-readable:对文件大小单位换算;换算后结果可能会非精确值

         -d:查看目录自身而非其内部的文件列表

         -r: reverse, 逆序显示

                   -R: recursive,递归显示

                                mkdir:创建目录

                  mkdir [选项]... 目录...                                             

                                        -p: 自动按需创建父目录

                              -v:显示详细过程

                            -m:直接给定权限

                                 touch:创建文件

                                    touch [选项]... 文件...

                                        -c: 指定的文件路径不存在时不予创建

                               -a: 修改access time

                               -m:修改modify time

                                  rmdir:删除指定的空目录                

            rmdir [选项]... 目录...             

                                         -p:如果父目录为空,一并删除;

                                -v: 详细执行过程;

                              rm:删除文件或目录

                            rm [选项]... 文件...                

                                        -i:删除前提示

                               -f:强制删除

                                -r: 递归删除

                    -rf:请慎用
                                  mv:移动

                                     mv  [源文件或目录] 目的目录]

                                        -i:交互式

        -f:强制

                                   cd:切换目录

                                      cd 目录]

           cp:复制

                                      cp [选项]...源...目标                                        

                                        -i:交互式复制,即覆盖之前提醒用户确认

             -f:强制覆盖目标文件

              -r, -R:递归复制目录

            more:分页浏览文本文件

                                      more 文件名

            less:分页浏览文本文件

                                      less 文件名

                       head:查看文本首部

                                       head [选项] 文件名

                                          -n:指定行数

                   tail:查看文本尾部

                                        tail [选项] 文件名

                                          -n:指定行数

                                  cat:查看文本内容

                                         cat [选项]... [文件名]...

                                            -n:给显示的文本行编号

                             tac:查看文本内容倒序

                                        tac [选项]... [文件名]...

                                            -n:给显示的文本行编号

                

                4).文件目录权限管理命令:

                                    chmod、chown、chgrp                                   

                  chmod:用于改变文件或目录的访问权限,用它控制文件或目录的访问权限

                                        命令格式三个:

                 1.chmod [选项]...模块[,模块]...文件名...

                      2.chmod [选项]...八进制-模块 文件名...

                      3.chmod [选项]...--reference=参照文件名 目标文件名...

                                                     举例说明:

                                                          1.chmod  [u、g、o、a] [=、+、-] [r、w、x]  文件名

                                                                         u:属主、g:属组、o:其他用户、a:所有

                                                          2.chmod  [777] 文件名

                                                                    777=rwx:上面有说明

                                                   3.chmod --reference=源文件(想要参照的文件路径) 目标文件名

                                                                --reference :参考,引用

          chown:用于改变用户属主、属组                                                                                      1.chown [选项]... [属主][:[属组]] 文件名...

                            2.chown [选项]... --reference=参照文件名 目标文件名...

                           -R:递归修改

                                                        举例说明:

                       1.chown root:root 文件名 
            2.chown --reference= 源文件(想要参照的文件路径) 目标文件名                       

            chgrp:修改文件用户组                                                

                                                          chgrp [选项]... 属组 文件名...

                            chgrp [选项]...--reference=参照文件名 目标文件名...



以上是个人暂时总结出来的命令,如有遗漏请补充;谢谢。