一、安全上下文

进程,就是程序的副本,不同用户执行相同程序所拥有的权限是不相同的。

进程的权限是根据程序的发起者来运行的。当这个进程程序去执行文件时就是以发起进程的那个用户的权限来对文件进行操作的。

简单说,进程对文件的权限取决于发起进程的用户权限。


下面来说说用户和组的类别,

    简单来说用户和组就是组一个是家,而用户就是家里的人。

用户:获取资源或服务的凭证

     组:标识符

注意:GID和UID在centos 6和 7 里面不相同。

组类别:

          centos 6                     centos7

管理员组        GID:0              GID:0      

普通组            GID:1~65535          GID:1~65535

     系统组       GID:1~499          GID:1~999

     用户组       GID:500+ GID:1000+

用户类别:

                   centos 6                  centos7

     管理员                     UID:0                UID:0      

     普通用户                 UID:1~65535        UID:1~65535

        系统用户       UID:1~499    UID:1~999

        普通用户       UID:500+            UID:1000+

 


我们在创建用都说基本组,附加组,私有组,下面就来说说:

私有组:当我们创建用户时并为给用户指定组,但系统会自动创建一个与用户名相同的组作为用户的私有组

基本组:用户的主要组 ,每个用户都必须有一个基本组

附加组:主要组以外的其他组,用户可有可没有。


关于用户和组的配置文件:

用户主要信息配置文件

/etc/passwd   

用户密码配置文件

/etc/shadow

组主要信息配置文件

/etc/group

组密码配置文件

/etc/gshadow



各文件内各字段代表含义:

      /etc/passwd:

# root:x:0:0:root:/root:/bin/bash

每个字段之间用冒号“ :” 隔开,分别依次对应代表含义为:

     用户名:密码:UID:GID:注释信息:家目录:默认shell

其中,密码为(X)只是为了好看协调,因为密码已经不存放在此,而是在/etc/shadow文件中。


      /etc/shadow:

root:$6$/YISXbdX$bmagEsImORq8.PIMspOvRQFAPPXG1QrQwptJiwpzNEpphSh7fMpj8H5bwj30.8DrAZHsGFbC55pQzgQrGri740:17008:0:99999:7:::

每个字段之间用冒号“ :” 隔开,分别依次对应代表含义为:

     用户名:加密后的密码:密码最近一次更改时间:密码最短使用期限:密码最长使用期限:密码过期前几天提醒日期:密码过期后几天活锁定:密码从unix元年(1970.1.1)算起多少天后失效

其中加密密码centos7一般是用sha512加密算法;密码最短使用期限为0表示密码随时可以更改,不受时间限制;99999则表示永久生效;锁定时间默认为1周7天



      /etc/group:

# root:x:0:

每个字段之间用冒号“ :” 隔开,分别依次对应代表含义为:

     组名:组密码:GID:以此组为附加组的用户列表(多个用户用逗号“ ,”隔开)

其中,组密码一般用在用户使用 `newgrp`切换(临时切换)用户基本组时需要输入密码,但密码也不存放在此,而是在/etc/gshadow文件中。


      /etc/gshadow:

# root:::

每个字段之间用冒号“ :” 隔开,分别依次对应代表含义为:

     组名:组密码:组管理员或列表:以此组为附加组的用户列表(多个用户用逗号“ ,”隔开)

其中,组密码为” !“表示不可用。


   注意:组密码一般不设定,因为用newgrp切换的时候需要询问用户要密码,组如果没有设定密码,用户无论怎样都切换不进去,但是如果设有密码如果被非法用户猜中即为不安全的操作。(特定环境除外)




实用小李子:

     1.查看某用户的详细信息。

           # getent  [passwd/shadow/group/gshadow] username

//即可查看四个文件中的关于指定用户的配置信息


       2.不让用户的密码放在shadow中,让他默认回到passwd中,即用户口令不转换。

#pwunconv   //(passwd un convert) 在命令行执行此命令,密码将不会放在shadow中,那如果想让他恢复原样即可使用`pwconv`





 1)、用户创建、更改、删除

     (1)useradd:创建用户

用法:useradd [options]  LOGINname

  选项options:

-u:创建用户并指定其UID

#useradd -u 1001 user1

//如果不指定UID系统会默认给用户指定一个已有的普通用户UID最大的然后+1,赋给user1


-g:创建用户并指定其基本组(基本组只能指定一个)

#useradd -g group1 user1

//注意:基本组必须事先存在,才能指定用户的基本组


-s:创建用户并指定其shell

#useradd -s /bin/bash  user1

//shell必须为当前系统上可用的shell,查看/etc/shells即可看到系统当前可用shell


-c:创建用户并指定其注释信息

#useradd -c  “this is new user ” user1

//注释信息用finger +username 即可查看用户的基本信息

-d:创建用户并指定其家目录

#useradd -d /home/users user1

//如果没有手动指定家目录系统会自动在/home/中创建与用户名相同目录作为家目录。 系统默认给用户创建家目录实则是在/etc/skel/中复制家目录的模板给用户。


-r:创建系统用户

#useradd -r system1

//创建之后此用户的UID即为1~499或者1~999之间,这取决与你是centos6还是7版本。系统用户一般是不用来登录的,只是用在系统自行用系统用户来运行某些进程所使用。

-G:创建用户并指定其附加组(附加组可以多个)

#useradd -G gruop1,group2

//注意:指定用户附加组时其必须事先存在,才能完成指定。指定多个附加组时用逗号 “ ,”隔开



若我们什么选项都没有指定,直接使用useradd username创建一个用户,系统会默认指定上述所有选项的信息。那么他们是依照什么来创建的呢?请往下看。

- D:显示创建用户是的默认配置

用此选项可以修改,但这并不是配置文件,不能更改其默认值,让我来告诉你配置文件在哪儿!

当我们创建用户是的默认配置的配置文件有两个:

第一:/etc/default/useradd

//此为创建用户是的默认配置信息文件,更改此文件的配置信息在创建是就依据这个配置文件来指定默认配置,但最终还是并未保存到这里,下面一个配置文件才是真正的存放地。

第二:/etc/login.defs

//此文件为大多数用户创建时的默认配置文件都存放于此。



(2)usermod:更改用户信息

用法:usermod [options] LOGINname

常用选项:

    -u:更改用户UID

#usermod -u 1001 user1


    -g:更改用户基本组(基本组只能指定一个)

#usermod -g group1 user1

//注意:基本组必须事先存在,才能指定用户的基本组


    -s:更改用户其shell

#usermod -s /bin/bash  user1

//shell必须为当前系统上可用的shell,查看/etc/shells即可看到系统当前可用shell


    -c:更改用户注释信息

#usermod -c  “this is new user ” user1

//注释信息用finger +username 即可查看用户的基本信息

    -d:创建用户其家目录

#usermod -d /home/users user1

//用户原有的文件不会被转移至新位置


    -m:用于将用户原有的家目录移至新的家目录,只能配合-d使用

#usermod -dm user2

    -G:更改用户其附加组(附加组可以多个,用逗号 “ ,”隔开)

#usermod -G group1,group2

//注意:用户原有的附加组将会被替换

    - l:更改用户名

#usermod -l "newname"  user1

//将user1用户名更改为双引号“ newname” 内的内容 


     -L:(lock)锁定用户密码

#usermod -L  user1

//锁定之后就不能登录,当然,有锁就有钥匙。

     -U:(unlock)解锁

#usermod -U user1


(3)userdel:删除用户

用法:userdel [options] LOGIN

常用选项:

    -r:删除用户时也删除其家目录

#userdel -r user1   //其家目录也被删除掉

如果不加任何选线直接删除用户默认是不删除家目录的。




2)组的创建、更改、删除

(1)groupadd:创建组

         用法:groupadd [options] groupname

         常用选项:

-g:GID,创建组时指定GID,如果不指定则默认是上一个组GID+1

    groupadd  -g  1001 group1

-r:创建系统组


(2)groupmod:更改组信息

         用法:groupmod [options] groupname

         常用选项:

-g:GID,更改组GID

    groupmod  -g  1002 group1

-n NEW_NAME:更改组名

                # groupmod -n "group100" group1 

     //将group1更改名字为group100


 (3)groupdel:删除组

         用法:groupdel  groupname

#这个就.....自己去删吧。


3)更改用户密码之passwd

用法:passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]

(1)不加任何选项即为修改当前用户密码

(2)加选项并指定用户名更改密码

常用选项:

      -l /U: 解锁或锁定用户

#passwd -l user1   //锁定用户之后不能登录

#passwd -U user1   //解锁用户

      -d:清除用户密码串

#passwd -d  user1    //运行之后用户就没有密码


       -e  DATE:用户密码过期期限日期,快速让用户密码过期,但用户可以在下次登录前重设密码

#passwd -e user1  //让用户密码立即过期,只有在下次登录时重设

        -i DAYS:非活动期限:

#passwd -i 99999 user1  //指定用户的非活动期限 直接写天数。

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

#passwd -n 0 user1   //指定user1的密码最短使用期限为0,意为密码最少能用多少天,0为不限

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

#passwd -x 99999 user1  //指定user1的密码最长使用期为99999,意为密码最多能使用多少天,99999为不限时间

       -w DAYS:密码离过期几天前提醒天数

#passwd -w 7 user1 //指定user1的密码过期7天前开始提醒用户更改密码


        --stdin:从标准输入中读取密码来给用户设定密码  //这个常用

#echo "centos" | passwd --stdin user1

    //将user1用户的密码设定为centos ,其中使用了管道重定向,是将前一个命令的输出当做后一个命令的输入



4)组管理之gpasswd命令

组管理相关配置文件: /etc/group、/etc/gpasswd

用法: gpasswd [option] group

常用选项:

     -a username:向组中添加用户

[root@localhost ~]# gpasswd -a user1 magedu    //把user1添加到magedu组中

Adding user user1 to group magedu//提示信息添加完成

     -d username:从组中移除用户

[root@localhost ~]# gpasswd -d user1 magedu    //把user1从magedu组中移除

Removing user user1 from group magedu //提示信息完成移除



5)组切换之newgrp命令

newgrp:临时切换指定的组为基本组,如果组设定有密码需输入密码才能完成切换,但如果组没有密码无论如何都切换不进去。因为切换组必须得有密码才能完成切换。

用法:newgrp [-] [group]

 其中:“ - ”表示如果使用之后会模拟用户登录的程序,以便初始化工作环境



6)用户切换之su命令

su :(switch user)切换用户

在终端中切换用户,分为完全切换和半切换

     完全切换:即为读取用户的配置文件来初始化环境

有两种方式:(1)su - username

             (2) su -L username     (1)和(2)是等价的

     半切换:即为不读取用户的配置文件

  直接su username


我们在终端里也可以不用切换用户而用其他用户的权限来执行命令:

例:在普通用户中使用root用户来执行查看/etc/passwd 文件

    [magedu@localhost ~]$ su - root -c "cat /etc/passwd"   

          详解  进程_用户及组的创建、更改、删除 附小李子_执行文件

//执行完命令之后再来查看我们是否切换到root用户,发现依然为magedu用户,这里我们只是用root用户执行了一个命令,并没有切换过去。

 详解  进程_用户及组的创建、更改、删除 附小李子_执行文件_02



root用户可以切换至每一个普通用户,并且不需要密码;而普通用户切换root用户需输入密码。