用户标识符UID和GID

    我们登陆linux系统时,输入的是我们的账号,但是由于计算机只认识0和1,所以linux不会直接认识账号名称,仅会认识我们的ID.每个登陆的用户至少会获得两个ID,一个是用户ID--UID,一个是用户组ID--GID,文件就是通过UID和GID来判断文件的所有者和用户组。当我们要显示文件的属性的时候,OS会依据/etc/passed和/etc/group的内容,找到UID/GID对应的账号和组名再显示出来.

    当登陆linuxOS时,通过login接口输入账号和密码,系统会调用/etc/passwd和/etc/group中的账号,并且将对应的UID和GID读出来,同时,账号的home文件夹和shell设置也一起读出;然后来核对密码表,linuxOS会进入到/etc/shadow中找出对应的UID,然后核对密码是否相符;如果上述都正确,就可以登录系统,进入shell控管阶段了.

    与UID和GID相关的配置文件有四个,分别是

 /etc/passed:存放用户及其属性信息(名称,UID,主组ID等)

 /etc/shadow:存放用户密码及其相关属性

 /etc/group:存放组及其属性信息

 /etc/gshadow:组密码及其属性信息


/etc/passwd文件结构


    存在几行就表示系统中有几个账号,但是不能随便删除,因为有很多账号是系统运行所必须的,这些是系统账号.

    /etc/passwd中存放的是用户的相关信息,结构如下

    1    2  3  4   5    6     7

  UserName: x :UID:GID:GECOS:directory:shell

    其中x为原密码口令位置,由于/etc/passwd所有程序可读,存在安全隐患,所以将密码存放到/etc/shadow中,这里只能看到一个x


   UID,这个是用户标识符,这个id的取值是有一定范围的,0为系统管理员使用,切仅有这一个,centos6中1~499是系统账号的id范围,500~是普通用户的id;centos7中1~999是系统账号id,并且是一般是不能登录的,1000~是普通用户的账号id,可以登录


   GECOS为用户的描述信息,用户全名或者注释

   directory为用户的家目录

   shell为用户的shell类型


/etc/shadow文件结构


     1:2:3:4:5:6:7:8:9

    1  user name

    2  encrypted password  加密后的密码  这个密码是经过加密后显示的,并且经过加密后显示的密文长度对应的编码系统的长度是一定的,所以改变密码的长度后,会使密码暂时失效

    3  date of last password change 最经更新密码的时间,这个时间是从1970年1月1日开始计算的,单位是 S  

     4  minimum password age 密码不可被改动的天数

     5  maxmum password age 密码需要重新更改的天数

    6  password warning period 密码需要更改期限前的警告天数

     7  password inactive period 密码过期后的账号宽限天数(密码失效日)

    8  account expiration date 上号失效日期

     9  保留

    一般用户的密码,可以用root帐号直接更改,重新设定

    查询加密算法authconfig --test | grep hashing


有效与初始用户组:groups,newgrp


    /etc/group文件结构

    group_name:password:GID:user_list

    增加user_list 只需要在后边增加  ,user 即可

    password一般不需要设置,同样密码也移动到/etc/gshadow中去了,这里也显示x

    user_list 此用户组支持的账号名称

    假如我们同时加入多个用户组,那么我们在操作的时候,是以哪个用户组为准呢?


    有效用户组(effective group)和初始用户组(initial group)

    切换用户或以其他用户身份执行命令:  su 

     su [options...] [-] [[user]args...]

    切换用户的方式

       su uesrname  非登录式切换,不会读取用户的配置文件

      su - username 登录式切换,会读取用户的配置文件,完全切换

    groups:有效与支持用户组的查看

     执行命令,第一个显示的就是有效用户组

    newgrp:有效用户组的切换

    想要切换的用户组必须已经支持的用户组

   /etc/gshadow文件结构

    用户组名:密码列:用户组管理员的账号:该用户组的所属账号

    密码列,开头为!表示没有合法的密码,所以无用户组管理员


账号管理

   新增与删除用户:useradd,相关配置文件,passwd,usermod,userdel

 useradd - 创建一个新用户或更新默认新用户信息

     useradd [选项] 登录

     useradd -D

     useradd -D [选项]

选项

     -u UID: [UID_MIN, UID_MAX]定义在/etc/login.defs

     -o 配合-u 选项,不检查UID的唯一性

     -g GID:指明用户所属基本组,可为组名,也可以GID

     -c "COMMENT":用户的注释信息

     -d HOME_DIR:以指定的路径(不存在)为家目录

     -s SHELL: 指明用户的默认shell程序可用列表在/etc/shells文件中

     -G GROUP1[,GROUP2,...]:为用户指明附加组,组必须事先存在

     -N 不创建私用组做主组,使用users组做主组

     -r: 创建系统用户CentOS 6: ID<500,CentOS 7: ID<1000

    -M:强制,不要创建用户主文件夹(系统账号默认值)

     -m:强制,要创建用户主文件夹(一般账号默认)

     -f:后面接shadow的第七字段选项,制定密码是否会失效。0为立刻失效,-1为永远不会失效

   

    在/etc/passwd里面创建一行与账号相关的数据,包括UID/GID/主文件夹等

    在/etc/shadow里将账号的密码相关参数填入,但是尚未有密码

    在/etc/group中加入一个与账号名称一模一样的组名

    在/home下面创建一个与账号名称同名的的目录作为用户主文件夹

notice:由于系统账号主要是用来进行运行系统所需的服务的权限设置,所以系统账号默认都不会主动创建主文件夹的.

练习: 

创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"

   useradd -G bin,root -s /bin/csh -c "Gentoo Distribution" gentoo

    结果linux的账号管理_用户

在我们创建用户的时候,系统为我们规定好了默认的属性和参考文件了,useradd -D 可以查看,linux的账号管理_用户_02  

 

   这个数据其实是由/etc/default/useradd文件调用出来的,可以用文本编辑器去修改需要的内容.

   从上面可以看到系统默认的用户初始GID=100,但是centos上面默认的用户组为与账号相同的用户组.

    

passwd   update user's authentication tokens更新用户的×××令牌

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

   选项

         -l:锁定指定用户

         -u:解锁指定用户

        -S:列出密码相关参数,亦即 shadow 文件内的大部分信息。

         -e:强制用户下次登录修改密码

         -n mindays: 指定最短使用期限

         -x maxdays:最大使用期限

         -w warndays:提前多少天开始警告

         -i inactivedays:非活动期限;

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

    echo "PASSWORD" | passwd--stdinUSERNAME

 与用户相关的账号和密码文件/etc/passwd  /etc/shadow

chage

   用法 chage [-ldEImMW] username

  选项:

    -l 列出账号的详细密码参数

    -d Last_day

    -E --expiredate  过期时间

    -I --inactive 

    -m --mindays

    -M --maxdays

    -W --warndays

下次登录强制重设密码:chage -d 0 username


chfn   change your finger information

        -f  --full-name

        -o  --office addr NUM.

        -p  --office-phone

        -h  --home-phone

        -u  --help

        -v  --version

    当我们新建用户,但是数据设置有错误时,可以使用命令usermod 进行修改

usermod

    usermod [options]... username

   选项:

    -u UID  ,new UID

    -g GID  ,new GID

    -G,group1[,group2]...新附加组,原来的被覆盖;若要保留原来的,需要配合-a(append)使用

    -s  shell  new shell

    -c  "COMMENT",新的注释信息

    -d,home_dir,new home_dir路径不会自动创建,原目录不会移动;如果要创建新目录,并且移动数据,要配合 -m 选项使用

    -l login_name,new name

    -L lock 锁定用户,在/etc/shadow密码项中增加!

    -u unlock 解锁

    -e --expiredate 用户禁用日期 格式YY-MM-DD

    -f   inactive 口令过期,用户被彻底禁用之前的天数

    -m --move-home 将用户主目录移动到新位置  配合-d使用

    -o --non-unique  使用-u时,可以将用户的UID改为非唯一值

    -p --passwd

    -Z --selinux  用户登录的linux账户

id

 print real and effective user and group IDs

    id [options]... user

    -a ,ignore  for compatibility(兼容性) with other versions忽略与其他版本的兼容性

    -Z  context  安全信息

    -g group  print only the effective group ID

    -G  groups print all groups IDs

    -n --name print a name instead of a number 

    -r --real print the real ID instead of the effective ID

    -u  user print only the effective user ID


相关的命令还有 chage chfn