用户和权限管理

一、linux用户和组的分类

用户:

1.  Linux是多用户使用的系统资源,多任务同时运行多个进程。

用户分为管理员(root)和普通用户两大类

2.  普通用户分为系统用户和登陆用户

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

普通用户:系统的资源的正常使用

用户的标识:UID   16bits二进制数字:0-65535

管理员:0

3.  普通用户分为(系统用户、登陆用户)

        

系统用户:centos 5或是 centos6 :1-499

                       Centos7 :1-999

登陆用户:centos 5或是 centos6 :500+

                        Centos7:1000+

4.用户有用户的名称解析库,用于用户名称的转换   解析库: username< - - UID

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

 组:

linux组分为管理员组 和普通用户组

普通用户组(系统组、登陆组)

  1. Linux组的标识:GID

         普通用户组(系统组、登陆组)

        

         系统组:centos 5或是  centos6:1-499

                               Centos7:1-999

         登陆组:centos 5或是  centos6:500+

                               Centos7:1000+

2.用户组有用户组的名称解析库,用于组名称的转换   解析库:groupname < - - > GID

3.用户组类别:以用户为核心

  用户的主组又称基本组    (备注:用户的主组指基本组)

  用户的附加组指的时额外组(备注:用户的附加组指额外的组)

    

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

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

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

二、用户和组的管理

1.主要是用linux命令来进行管理:

 组管理的命令有:groupadd , groupmod  ,groupdel

 用户管理的命令有:useradd, usermod, userdel

 用户和组的的认证机制:passwd

2. 组解析库文件:/etc/group

GRPNAME:x:GID:user1, user2, ...(此内容为组解析库里的内容,从左至右代表的是)

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

   groupadd命令:添加组

   groupadd  [选项]  group

   groupadd   +用户 :范例如下

   [root@localhost home]#groupadd mage

   [root@localhost home]# cat /etc/group | tail -n 1 (此命令是查看一下是否添加成功)

mege:x:1005:

           groupadd   + -g  GID:指明GID;指明组的ID号范例如下

[root@localhost home]#group –g 1009 li  添加登陆用户组为 li  gid 1009

     [root@localhost home]# cat /etc/group |tail -n 1查看一下组解析库里是否添加成功

li:x:1009:

 

           groupadd   + -r, --system:添加系统组;范例如下

     [root@localhost home]# groupadd -r test1   添加系统组为 test1

[root@localhost home]# cat /etc/group | tail -n 1查看一下组解析库里是否添加成功

test1:x:989:

                                              

           groupmod命令:修改组信息

           groupmod [选项] GROUP

           groupmod +  -g  GID  修改组的GID 范例如下

     [root@localhost ~]# groupmod -g 988 test1   (修改组test1GID号为988)

[root@localhost ~]# cat /etc/group | tail -n 1  (查看组test1GID号是否修改成功)

test1:x:988:

           groupmod + -n NEW_NAME:修改组名;范例如下

     [root@localhost ~]# groupmod -n test2test1

[root@localhost ~]# cat /etc/group | tail -n 1

test2:x:988:

                                              

           groupdel命令:删除组

           groupdel [选项] GROUP + 已经有的组可以将其组删除:范例如下

    [root@localhost ~]# groupdel test2   (删除组test2

 [root@localhost ~]# cat /etc/group | tail -n 1(查看一下组解析库里是否已经删除成功)

  li:x:1009:

                                     

3.用户解析库:/etc/passwd

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

    useradd命令:添加用户

           

    useradd + 新的用户名可直接添加之,范例如下

   [root@localhost home]# useradd mage1   添加用户为mage1

 [root@localhost home]# ls  查看mage1用户是否添加成功

  bash  basher  lwm mage1  nologin  testbash

 

   useradd [选项登录名

   useradd +-c选项 --comment COMMENT:添加新用户时,写注释信息,一般为Full Name

  范例     [root@localhost~]# useradd -c "magehao" mage4 (添加用户为mage4 注释信息  为“mamgehao)

           [root@localhost~]# cat /etc/passwd | tail -n 1  (查看一下新用户,和注释信息是    否添加成功)

 mage4:x:1007:1007:magehao:/home/mage4:/bin/bash

  

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

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

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

   [root@localhost ~]useeradd  -G magege  wen (添加wen用户 附加组为 magege)

[root@localhost ~]# id wen

uid=1008(wen) gid=1008(wen) =1008(wen),1011(magege)

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


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

    Useradd  -r, --system:创建一个系统账户,范例如下

    [root@localhost ~]# useradd -r test5

[root@localhost ~]# id test5

 uid=992(test5) gid=989(test5) =989(test5)

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


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


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

                                              

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

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

                                                       

                                     

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


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

 

 

4.usermod命令:修改账号信息一下为参数选项

               Usermod -c, --comment COMMENT

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

                                      -g, --gidGROUP

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

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

                                      -s,--shell  SHELL

                                      -u,--uid  UID

                                     

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

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


5.userdel命令:删除用户账号

Userdel +  -r选项 --remove:用户主目录中的文件将随用户主目录和用户邮箱一起删除。            范例         [root@localhost home]# userdel -r mage4  (将其mage4 删除)

[root@localhost home]# ls   (查看一下是否删除成功)

bash  basher  lwm mage1  mage3  nologin testbash  wen

[root@localhost home]#

 

 6.passwd命令:密码管理命

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

                                              

(1) passwd:修改自己的密码;后面不用加用户名

(2) passwd  username:修改其它用户的密码,仅root有此权限;passwd +要修改的用户名即可,范例如下:

            [root@localhost home]# passwd wen

更改用户 wen 的密码

新的 密码:

无效的密码: 密码少于 8 个字符

重新输入新的 密码:

passwd:所有的身份验证令牌已经成功更新。

                                              

              密码复杂度:

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

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

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

                                              

               Passwd + 选项:

                         -l:锁定密码,用户不能登陆进系统

                         -u:解锁解密,用户可以进行登陆系统

                         -d:清除密码,用户不需要密码即可登陆系统

                                                       

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

                         echo"PASSWORD" | passwd --stdin  USERNAME范例如下:

                         [root@localhost home]#echo "123" | passwd  - -stdin  wen

       更改用户 wen 的密码

       passwd:所有的身份验证令牌已经成功更新。

 

7.id命令:查看用户相关的id

id  [OPTION]... [USER] 

      选项

       -u:仅查看uid

       -g:仅查看gid

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

       -n:显示名称,而非ID

8.gpasswd命令:为组添加密码

   组密码文件:/etc/gshadow

    gpasswd [选项] group

               -a USERNAME:把用户添加至组中,范例如下

                 [root@localhost home]# gpasswd -a wen magege

  正在将用户“wen”加入到“magege”组中

               -d USERNAME:从此组中移除此用户,范例如下

                 [root@localhost ~]# gpasswd -dwen magege

  正在将用户“wen”从“magege”组中删除

                                        

9.newgrp命令:登录到一个新组(这里指的是用户登陆到新组中,会提到要密码)

           [root@localhost ~]# gpasswd magege

  正在修改 magege 组的密码

  新密码:

  请重新输入新密码:


 [root@localhost ~]# su wen

   [wen@localhost root]$ newgrp magege

   密码:123

           chage命令:修改用户账号的各种期限; chage+用户 ,范例如下

           [root@localhost ~]# chage wen

   正在为 wen 修改年龄信息

   请输入新值,或直接敲回车键以使用默认值

 

   最小密码年龄 [0]:

   最大密码年龄[99999]:

           最近一次密码修改时间(YYYY-MM-DD) [2016-03-10]:

   密码过期警告 [7]:

           密码失效 [-1]:

   帐户过期时间(YYYY-MM-DD) [-1]:  

 

  

二、用户和权限管理:

        

1.进程安全上下文:

            进程:运行一个程序文件而产生,通常由一个用户发起;进程则以发起者的身份运行;

            判断进程的发起者是否与文件属主相同,如果是,则以属主的身份来访问,从而应用属主权限;否则判断进程的发起者是否属于文件的属组,如果是,则应用属组权限;否则

应用“其它”权限

文件系统文件权限,以root用户/目录下的目录文件为例进行讲解如下

drwxr-xr-x. 20 root root  3180  3  1016:50  dev

从左到右依次代表的含义解释:

d:指的是目录文件(文件类型)

rwx:属主权限  连接数  所有者   用户组   文件大小  修改日期   文件名

r-x: 属组权限

r-x: 其他用户对此文件目录的权限

20:硬连接数量,表示有多少个文件名连接到此节点(i-node)

R oot:  文件的所有者

Root:文件所有用户组

3180:文件的大小

10 16:50:文件修改的时间

Dev:文件名

 

三类用户:属主: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

                                    

2.权限组合机制:

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

                                              

                                    

3.权限管理:

         ownership:仅管理员有权限

            改属主:chown

            改属组:chgrp

                               Chmod(修改用户的权限)

                                    

         chmod命令:

         作用:changefile 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...

                   MODE

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


                              u=   如下范例:


    [root@localhost/]# ls -ld dev  (列出原有dev目录的权限)

drwxr-xr-x. 20 root root 3180 3  10 16:50 dev

[root@localhost /]# chmod u=r dev (修改dev目录的属主的权限为只读)

[root@localhost /]# ls -ld dev

dr--r-xr-x. 20 root root 3180 3  10 16:50 dev


                              g=    如下范例


    [root@localhost/]# ls -ld dev   (列出原有dev目录的权限)

dr--r-xr-x. 20 root root 3180 3  10 16:50 dev

[root@localhost /]# chmod g=rwx dev (为dev目录属主添加写)

[root@localhost /]# ls -ld dev

dr--rwxr-x. 20 root root 3180 3  10 16:50 dev


                              o=   如下范例


    [root@localhost/]# ls -ld dev   (列出原有dev目录的权限)

dr--rwxr-x. 20 root root 3180 3  10 16:50 dev

[root@localhost /]# chmod o=rwx dev (为dev目录文件添加写权限)

[root@localhost /]# ls -ld dev

dr--rwxrwx. 20 root root 3180 3  10 16:50 dev


                              a=   如下范例


    [root@localhost/]# ls -ld dev   (列出原有dev目录的权限)

dr--rwxrwx. 20 root root 3180 3  10 16:50 dev

[root@localhost /]# chmod a=rwx dev (所有用户都有对dev目录文件的读写执行权限)

[root@localhost /]# ls -ld dev

drwxrwxrwx. 20 root root 3180 3  10 16:50 dev

                                                                

         2)两类用户权限相同:ug=,ugo=     (有两个用户同时拥有可读、可写、或是可执行的权限时候,可以用这种办法)举例如下

                            Ug  属主和属组同时拥有读权限时 范例如下


    [root@localhost/]# ls -ld dev   (列出原有目录的权限)

d---------. 20 root root 3180 3  10 16:50 dev

[root@localhost /]# chmod ug=r dev (给目录文件的属主和属组添加读权限)

[root@localhost /]# ls -ld dev

dr--r-----. 20 root root 3180 3  10 16:50 dev

 

 

                        ugo 属主和属组同时拥有读写执行权限时

[root@localhost ~]# ls -ld /dev   (列出目录文件原有的权限)

d---------. 20 root root 3180 3  10 16:50 /dev

[root@localhost ~]# chmod ugo=rwx /dev (给属主、属组、其它 加上读写执行权限)

[root@localhost ~]# ls -ld /dev

drwxrwxrwx. 20 root root 3180 3  10 16:50 /dev

 

 

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

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

                                u+

    [root@localhost/]# ls -ld dev      (列出目录文件原有的权限)

d---------. 20 root root 3180 3  10 16:50 dev

[root@localhost /]# chmod u+r dev  (给属主添加读权限)

[root@localhost /]# ls -ld dev

dr--------. 20 root root 3180 3  10 16:50 dev

        u-

    [root@localhost/]# ls -ld dev       (列出目录文件原有的权限)

dr--------. 20 root root 3180 3  10 16:50 dev

[root@localhost /]# chmod u-r dev   (给属主去掉读权限)

[root@localhost /]# ls -ld dev

d---------. 20 root root 3180 3  10 16:50 dev

                                 g+

   [root@localhost/]# ls -ld dev        (列出目录文件原有的权限)

d---------. 20 root root 3180 3  10 16:50 dev

[root@localhost /]# chmod g+r dev    (给属组添加读权限) 

[root@localhost /]# ls -ld dev

d---r-----. 20 root root 3180 3  10 16:50 dev

          g-

   [root@localhost/]# ls -ld dev       (列出目录文件原有的权限)

d---r-----. 20 root root 3180 3  10 16:50 dev

[root@localhost /]# chmod g-r dev      (给属组去掉读权限)

[root@localhost /]# ls -ld dev

d---------. 20 root root 3180 3  10 16:50 dev

                                   o+

  [root@localhost/]# ls -ld dev       (列出目录文件原有的权限)

d---------. 20 root root 3180 3  10 16:50 dev

[root@localhost /]# chmod o+rwx dev (给它用户添加读写执行权限)

[root@localhost /]# ls -ld dev

d------rwx. 20 root root 3180 3  10 16:50 dev

 

             o-

 [root@localhost/]# ls -ld dev        (列出目录文件原有的权限)

d------rwx. 20 root root 3180 3  10 16:50 dev

[root@localhost /]# chmod o-rwx dev  (给它用户去掉读写执行权限)

[root@localhost /]# ls -ld dev

d---------. 20 root root 3180 3  10 16:50 dev

 

                                     a+

[root@localhost /]# ls -ld dev          (列出目录文件原有的权限)

d---------. 20 root root 3180 3  10 16:50 dev

[root@localhost /]# chmod a+r dev      (给所有用户添加读权限)

[root@localhost /]# ls -ld dev

dr--r--r--. 20 root root 3180 3  10 16:50 dev

             a-

[root@localhost /]# ls -ld dev          (列出目录文件原有的权限)

dr--r--r--. 20 root root 3180 3  10 16:50 dev

[root@localhost /]# chmod a-r dev      (给所有用户去掉读权限)

[root@localhost /]# ls -ld dev

d---------. 20 root root 3180 3  10 16:50 dev

                                                                

4  两类用户权限授权机制:ug+,ug-, ... (指的时两类用户同时拥有可读可写可执行权限)

                        

                                     ug+ (同时给属主、属组添加权限)范例如下

[root@localhost /]# ls -ld dev          (列出目录文件原有的权限)

d---------. 20 root root 3180 3  10 16:50 dev

[root@localhost /]# chmod ug+r dev     (给属主和属组添加读权限)

[root@localhost /]# ls -ld dev

dr--r-----. 20 root root 3180 3  10 16:50 dev

                                     ug-

[root@localhost /]# ls -ld dev           (列出目录文件原有的权限)

 

dr--r-----. 20 root root 3180 3  10 16:50 dev

[root@localhost /]# chmod ug-r dev       (给属主和属组去掉读权限)

[root@localhost /]# ls -ld dev

d---------. 20 root root 3180 3  10 16:50 dev

        

(5)不同类的用户权限不同:u+,g+,o+  (同时给属主属主其它用户添加读写执行权限)范例如下:

[root@localhost/]# ls -ld dev        (列出目录文件原有的权限)

d---------. 20root root 3180 3  1016:50 dev

[root@localhost/]# chmod u+rwx,g+rwx,o+rwx dev   (给属主,属组、其它用户添加可读可写可执行权限)

[root@localhost/]# ls -ld dev

drwxrwxrwx. 20 root root 3180 3  10 16:50 dev

 

                                      

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

                                    

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

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

范例如下:

[root@localhost/]# ls -l

-rw-rw-r--.   1 root root 541 3  1009:05 fstab

[root@localhost/]#    chmod - -reference=fstab  li

[root@localhost/]# ls -l

-rw-rw-r--.   1 root root 594 3  1009:00  li

                           

chmod常用选项:

-R, --recursive:递归修改;将目录文件和目录文件下的文件都改成700.

[root@localhost/]# chmod -R 700 /tmp

[root@localhost/]# ls -ld /tmp

drwx------. 7 rootroot 4096 3  1021:24 /tmp

[root@localhost/]# ls -l /tmp

总用量 8

-rwx------. 1 rootroot 827 3  1008:29 ks-script-AzR9EI

-rwx------. 1 rootroot  42 3  10 09:46which.out

-rwx------. 1 rootroot   0 3  10 08:17yum.log

 

                                              

chown命令:

chown [OPTION]...[OWNER][:[GROUP]] FILE...  既能更改文件的属主又能更改文件的属组

  1. 更改文件的属主:

 

 

 

 [root@localhosttmp]# ls –l    (列出原有文件的属主或是属组)

-rwx------. 1 wen  wen  42 3  10 09:46 which.out

 [root@localhosttmp]# chown wen:root which.out    (更改文件which.out的属主)

[root@localhost tmp]# ls -l

-rwx------. 1 wen  root 42 3  10 09:46 which.out

 

 

2.chown[OPTION]... --reference=RFILE  FILE...  (根据参考文件进行修改属主属组)

[root@localhost tmp]# ls -l

总用量 8

-rwx------. 1 root root 827 3  10 08:29 ks-script-AzR9EI

-rwx------. 1 wen  root 42 3  10 09:46 which.out

-rwx------. 1 root root   0 3  10 08:17 yum.log

[root@localhost tmp]# chown--reference=ks-script-AzR9EI   which.out (仿照ks-script-AzR9EI文件修改which.out

[root@localhost tmp]# ls -ld which.out

-rwx------. 1 root root 42 3  10 09:46 which.out                 

常用选项:-R, --recursive:递归修改;范例如下

 

3.chgrp命令:

         chgrp[OPTION]... GROUP FILE... (只能更改文件的属组)范例如下

[root@localhost tmp]# ls -l

-rwx------. 1 root root  42 3  10 09:46 which.out

 [root@localhosttmp]# chgrp magege which.out  (修改文件which.out的属组为magege

[root@localhost tmp]# ls -l

-rwx------. 1 root magege  42 3  10 09:46 which.out

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

                                    

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

  1显示当前系统默认的umask

[root@localhost tmp]# umask

0022

 系统默认为:0022表示特殊权限、所有者权限、所有组权限、其他人权限

 

 

(2)更改默认设置位置的地方,配置文件为 /etc/login.defe

# The permission mask is initialized to this value. If not specified,

# the permission mask will be initialized to 022.

UMASK           077

 

文件:

666-umask

目录:

777-umask

 

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

 

设定:umask MASK

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

 

三、以上就是用户和组的管理以及用户和权限管理的管理了,再加再励,希望在马哥的带领下,一路狂奔,让自己的技术有更快的提升。