一、adduser与useradd的区别


在Centos系统中,adduser只是useradd的一个连接形式,两者使用形式相同,在Centos系统中使用命令man adduser,进入的帮助手册为useradd。


[root@localhost ~]# ls -la /sbin/adduser 
lrwxrwxrwx. 1 root root 7 11月  7 19:20 /sbin/adduser -> useradd

所以在用法上两者没有区别。



在ubuntu系统上,useradd和adduser的用法差别较大,后续总结。以下操作不特别强调,均为Centos系统中操作。



二、创建用户(默认设置)


  • useradd UserName 创建用户,/etc/passwd中保存用户信息,/etc/shadow 文件中保存加密的密码信息


[root@localhost ~]# useradd dayun   #创建用户名为dayun的用户


[root@localhost ~]# ls /home/       #默认创建在/home下创建了名为dayun的家目录
cluster  dayun  zhang


[root@localhost ~]# tail -1 /etc/passwd  #用户信息保存在/etc/passwd 文件中
dayun:x:1002:1002::/home/dayun:/bin/bash

[root@localhost ~]# tail -1 /etc/shadow  #第二个字段中的!!,表示该用户被锁定。
dayun:!!:17177:0:99999:7:::               #由于此时没有设定密码


#另外用户组相关的文件:/etc/group, /etc/gshdow,增加与用户名同名的用户组信息



  • 与useradd创建用户相关的文件,通过man useradd


       /etc/passwd
           User account information.

       /etc/shadow
           Secure user account information.

       /etc/group
           Group account information.

       /etc/gshadow
           Secure group account information.

       /etc/default/useradd
           Default values for account creation.

       /etc/skel/
           Directory containing default files.

       /etc/login.defs
           Shadow password suite configuration.


  •  /etc/passwd 文件中的格式


每条记录由六个冒号分割成的7个字段组成,看一下我的系统上用户名为cluster的信息


[root@localhost ~]# cat /etc/passwd |grep cluster
cluster:x:1000:1000:cluster:/home/cluster:/bin/bash

 

 第一个字段cluster:表示用户名为cluster

 第二个字段x:表示密码占位符,密码信息保存在/etc/shadow 文件中

 第三个字段1000:表示UID,用户ID,若不手动指定,默认从上一个用户的UID自动+1

 第四个字段1000:表示GID,基本组ID,若不手动指定,默认从上一个用户的GID自动+1

 第五个字段cluster:表示备注信息(comment),比如用户的电话,邮箱等信息,这里cluster用户没               有添加其他信息

 第六个字段/home/cluster:表示这个用户的家目录

 第七个字段/bin/bash: 表示这个用户的默认shell


  • /etc/shadow 文件格式


[root@localhost ~]# tail -1 /etc/shadow
dayun:!!:17178:0:99999:7:::

[root@localhost ~]# cat /etc/shadow |grep cluster
cluster:$6$1P/OQypq$VhuzyGZRsjuSQkRcUslKArUn6iBBQ7QgQS6YHNdD.SuVwMzRkRlujKdUQ29A8g74LfKxVB
1S.JUIHxgTvjK.N/:17178:12:40:7:::


/etc/shadow文件中,以8个“;”分割,共九个字段。


  1. 账号名称,密码是要跟账号对应的,不然.....

  2. 这个字段的才是真正的密码,跟上边passwd中的第二个字段x对应,而且还是经过加密的密码,如果不加密,能看到这个文件就能知道其他账号的密码,那样搞个破坏太容易了,这个加密算法,什么DES,MD5,SHA128等等好多,得再开一篇了,就不展开说了。新建的账号dayun中是两个"!!"表示还没有设置密码,账号被锁定,不能登入。

  3. 最近更改密码的日期,17178是时间戳,距离1970年1月1日有17178天,(换算一下,应该是2017/01/12,就是把17178换算成秒,然后网上搜时间戳转换)

  4. 密码不可被改动的天数(和第3个字段相比较),如果是12,意思就是根据第三个字段可知,我最近一次修改密码是2017/01/12,根据第3,4,两个字段,2017/01/12修改密码的这一天开始算(为起点),12天之内不能再修改密码了,数了数手指头,到2017/01/24才能修改密码。

  5. 密码需要重新更改的天数(与第3个字段相比)为安全考虑,密码需要经常更换,这个字段就是强制你更换密码的,该字段为99999,两百多年,表示没有强制设置更换密码的期限。如果这个字段值为40,日期为(17189+40)*24*3600时间格式转换日期为2017/3/4即:2017/01/24到2017/3/4之间可以修改密码

  6. 密码需要更改期限前的警告天数(与第5个字段比较),例子中为7,表示距离2017/3/4还有7天是发出警告,告诉用户密码快要到期了,及时修改密码。

  7. 密码过期后的账号宽限天数(与第5个字段相比)

  8. 账号失效日期,不管过期还是不过期,到这个时间后,

  9. 保留


  • /etc/group 文件格式

[root@localhost ~]# tail -2 /etc/group
dayun:x:1001:xiaoliu
xiaoliu:x:1002:


第一个字段:组名

第二个字段:组密码占位符,存放位置/etc/gshadow文件中

第三个字段:GID,即用户组ID

第四个字段:以该组为附加组的用户,多个用户时,用逗号隔开。


  • /etc/gshadow 文件格式


(组也需要密码,临时切换组的时候,需要组密码,但是现在应用较少)

[root@localhost ~]# tail -2 /etc/gshadow
dayun:!::xiaoliu
xiaoliu:!::


第一个字段:用户组名

第二个字段:密码,!表示没有密码

第三个字段:用户组管理员的账号

第五个字段:该用户组的所属账号


  • /etc/default/useradd 


创建用户时(例如:useradd dayun)设置默认创建信息的文件,来看看这个配置文件。


[root@localhost ~]# cat /etc/default/useradd 
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=  
SHELL=/bin/bash         
SKEL=/etc/skel          
CREATE_MAIL_SPOOL=yes


GROUP=100 注:指的是初始用户组使用的GID,但是在centos系统中不生效。centos中默认用户组和账户名相同,UID等于GID。不必深究

HOME=/home 注:用户的家目录在/home/目录下创建

INACTIVE=-1 注:密码失效日,在/etc/shadow文件中的第七列,-1代表密码永远不会失效,30,30天后失效

EXPIRE=   注:账号失效日,shadow中第八列。

SHELL=/bin/bash 注:默认shell

SKEL=/etc/skel 注:家目录下的文件,默认从/etc/skel/目录下复制

CREATE_MAIL_SPOOL=yes 注:是否创建邮件缓冲池,若yes,则在/var/mail/目录下创建邮件缓冲池



  • /etc/skel/,新创建的主目录下的隐藏文件是从/etc/skel/目录下复制过来的。skeleton的简写(骨骼,框架)是用户骨架搭建的有个目录。这些隐藏文件保存用户登入系统时,默认的环境变量。


[root@localhost home]# ls -a dayun/
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla
[root@localhost home]# ls -a /etc/skel/
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla


  • /etc/login.defs


主要定义/etc/shadow文件中的一些默认设置的,以后总结


三、创建用户[选项]


useradd

    -u 注: 指定用户的UID,UID唯一,不能重复

    -g 注: 指定GID,即指定用户的基本组,但是GID要事先存在

    -G 注: 指定用户的额外组的GID,但是这个GID必须存在。

    -d 注: 指定创建家目录的路径。这个目录不能事先存在。如果存在会报错。

    -c 注: 备注信息

    -s 注: 指定默认shell

    -m 注: 创建用户时,强制创建家目录

    -M 注: 创建用户时,不创建家目录

    -D 注: 为useradd命令创建新的默认值

    -r 注: 创建一个系统账户。目的是为了后台进程的安全。

            系统的用户的特性:

             UID:一般为1-499

             不给用户创建家目录,默认shell为/sbin/nologin


groupadd

    -g 注: 创建组并为其指定GID

    

四、用户类别


管理员 UID 0


普通用户 UID 1-65535

    

    系统用户 1-499

    可登入用户 500+


现在linux系统UID为2的32次方。可支持的更多了。



管理员组

普通组


以用户的视角分类:


基本组: 显示在/etc/passwd中GID字段所代表的组为用户的基本组


额外组:又称为附加组,/etc/group


五、查看用户信息的命令


id UserName 查看用户的UID,GID,

[root@localhost ~]# id xiaoliu
uid=1002(xiaoliu) gid=1002(xiaoliu) groups=1002(xiaoliu),1001(dayun)

#第一个字段为UID,第二个字段为基本组ID,带三个字段为该用户所属的所有组


echo $SHELL 查看当前系统上的默认shell


查看当前系统的可用shell,文件/etc/shells 中所列的shell,称为当前系统上安全的shell列表。用其他shell,很可能拒绝登入系统。


[root@localhost ~]# cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh


未完,待续