用户管理目标: 1、用户账号的作用

2、用户增、删、改、查

3、用户账号的相关数据文件

4、用户组的创建、用户的分组

用户账号的作用: 1、标识用户的身份,让每个用户有私有的文件夹(家目录),未授权时,每个人只能访问自己的文件。

2、每个用户远程管理服务器时,所做的操作,root管理员可查到。

Linux系统中的用户分为3类,即普通用户、窗机管理员用户、系统用户(程序用户)。

一、用户账户的相关数据文件: 1、/etc/passwd 保存用户名称、宿主目录、登录shell等信息,每一行对应一个用户 的账号记录。

用户信息的记录格式:
root:x:0:0:root:/root:/bin/bash

格式说明:以“:”作为分隔符,分隔成多个部分。
1)、用户名
2)、密码:x表示此用户需要用密码登录,如果想免密码登录,用vi修改此文件,将x删除即可
3)、用户的uid号
4)、用户的gid号
5)、用户的备注信息,如果在图形化界面时,是界面的显示名称
6)、用户的家目录(宿主目录)
7)、用户登录的shell环境。

注:
uid用来区分不同用户的数字,表示该用户在本服务器中独一无二
gid用于区分不同用户组的数字,表示该用户组在本服务器中独一无二

uid和gid的联系:
在Linux下每个用户都至少属于一个组,也可以同时属于多个组。


**2、/etc/shadow **
保存用户的密码信息,只有root用户能读取。

用户的密码信息的记录格式:
root:$6$sNuBDGdoaIg9XXqq$j8THbca1kORqH85JL4o4qV5Rbbnw8TPZGsubkH9iR8cQZOBJ×××7AqnrZPX.Vk81y5IvOw.hZifvQThQvVX7h1::0:99999:7:::

格式说明:以“:”作为分隔符,分隔成多个部分。
1)、用户名
2)、加密后的密码
3)、最后密码修改的时间
4)、允许修改密码最小间隔时间
5)、允许修改密码最大间隔时间
6)、密码过期警告时间
7)、密码的宽限时间
8)、密码的失效时间,99999代表永不过期
9)、保留,暂时没有具体功能

二、用户账号的增、删、改,以及密码设置。 ** 1、增(add):useradd** 格式:useradd [选项] 用户名 常用选项: -u:指定UID号 -d:指定宿主目录,缺省(默认)为/home/用户名 -e:指定账号失效时间 -g:指定所属的基本组(后面跟组名或GID) -G:指定所属的附加组(后面跟组名或GID) -M:不为用户建立并初始化宿主目录 -s:指定用户的登录shell(默认为/bin/bash,一般不用改,在建立非登录用户的时候可以指定为/sbin/nologin)

注: 注:这些选项都能分开用,不冲突的可以在建立用户的时候连着用。

例子:
添加用户stu01,指定UID为520,宿主目录为/opt/stu04,指定基本组为root(注:系统中本身就存在users这个组GID为100),附加组为tech:

useradd -u 520 -d /opt/stu04 -g users-G root stu01

** 2、删除(del):userdel** 格式:userdel -r 用户名 添加-r选项,宿主目录/用户邮件也一并删除。

**3、改(modify):usermod**
	主要是对已存在的用户的属性进行更改,可以增加用户成员的所属附加组。
	格式:usermod    [选项](选项可以有多个)  用户名 
常用的选项:
	-l :更改用户账号的登录名称
	-L :锁定用户账户(注:用usermod –L锁定一个账户的时候可以用passwd–u直接解锁,但是用passwd –l锁定的账户,用usermod–U解锁的时间,需要解锁两次,因为,passwd –l锁定的账户密码前面有两个!)
	-U :解锁用户账户
	-u、-d、-e、-g、-G、-s :与useradd相同

** 4、密码设置:passwd ** 为用户添加密码 格式:passwd [选项] 用户名 常用选项: -d :清空用户的密码,使之无需密码即可登录 -l :锁定用户账号 -S :查看用户账号的状态(是否被锁定) -u :解锁用户账号 - - stdin:标准输入(比如管道)取密码 注:删除密码用passwd –d 而不能用echo “” | passwd - -stdin 用户名

**5、针对用户的密码进行设定——chage**
格式:chage   [选项]    用户名
常用选项:
-l :列出密码有效信息
-d:设置最近一次修改密码的时间(后面跟的是时间)
-E:设置账号什么时候过期(后面跟的是时间)
-m:设置密码最小使用天数 (后面跟的是天数)
-M:设置密码最大使用天数(后面跟的是天数)
-I:设置密码过期后,再过几天不改密码,到期将失效(后面跟的是天数)
-W:设置过期前几天警告改密码(后面跟的是天数)

三、用户组 用户组分为基本组(私有组)和附加组(公共组)

**1、用户组的相关数据文件——/etc/group**

组信息的记录格式:
bin:x:1:

格式:  组名:组密码:组gid号:组成员

**2、用户组的相关密码信息文件——cat /etc/gshadow**

**3、组的增(add)——groupadd**
格式:groupadd   [选项]   组名

常用选项:
	-g :指定gid号

** 4、组的删(del)——groupdel** 格式:groupdel [选项] 组名

**5、组密码设置——gpasswd**
 可以实现给组设置密码、添加和删除成员、设置组管理员
格式:gpasswd   [选项]   组名

常用的选项:
	-a:向某个组里添加一个用户
	例子:gpasswd  -a  lq  test    #在test组中添加lq用户。
	
	-A:给某个组设置管理员
	例子:gpasswd   -A  lq,li   test   #给test设置2个管理员
	
	-d:从某个组删除用户   
	例子:gpasswd   -d   lq   test   #从test组中删除lq用户
	
	-M:给某个组重新设置成员名单,会替换原名单
	例子:gpasswd  -M  lq,li,zhang    test   # 给root组重新设置成员名单lq、li、zhang,会替换原名单

四、查询用户账号和用户组 1、id 查看该账户的用户名及用户所属组等信息 格式:id 用户名

** 2、groups** 查看用户所属组 格式: groups 用户名

注:“:”左边是基本组,右边是附加组。

** 3、finger**

查看用户的详细信息
格式:finger    用户名

注:默认没有安装finger工具 可以从上图看到root的详细信息。

** 4、w(who) **
查询已登录主机的用户信息。

五、创建用户的文件默认参数。 1、用户和组的策略配置文件——/etc/login.defs 文件内容详解: MAIL_DIR /var/spool/mail 用户邮件的主目录

PASS_MAX_DAYS 99999 密码的最大修改间隔时间

PASS_MIN_DAYS 0 密码的最小修改间隔时间

PASS_MIN_LEN 5 密码的最小长度

PASS_WARN_AGE 7 密码过期的警告时间

UID_MIN 1000 普通用户uid的最小值

UID_MAX 60000 普通用户uid的最大值

SYS_UID_MIN 201 系统用户uid的最小值(用useradd -r 创建的是系统用户)

SYS_UID_MAX 999 系统用户uid的最大值

注:Linux用户账号分为管理员(root)、普通用户(1000~60000)、系统用户(201~999)。而uid从1~200为保留号。

GID_MIN 1000 普通组的gid最小值

GID_MAX 60000 普通组的gid最大值

SYS_GID_MIN 201 系统组的gid最小值

SYS_GID_MAX 999 系统组的gid最大值

CREATE_HOME yes 启用创建用户家目录

UMASK 077 普通用户的权限掩码,实际umask值为022。

USERGROUPS_ENAB yes 允许删除用户的同时删除用户的组,前提是组中没有成员存在

ENCRYPT_METHOD SHA512 指定密码加密算法为SHA512算法。

2、创建新用户的默认设置文件—— /etc/default/useradd #useradd defaults file GROUP=100 //只有当用useradd -N lucy 创建用户时未创建同名的组时,这个新用户才会在100组中HOME=/home 用户家目录的基目录(小区)

INACTIVE=-1 // 密码永远不失效(不禁用)

EXPIRE= //密码的过期时间,默认为空

SHELL=/bin/bash //指定新建用户的shell为/bin/bash

SKEL=/etc/skel //新建用户的宿主目录模板为/etc/skel

CREATE_MAIL_SPOOL=yes //是否创建用户的邮件文件

在新建一个用户的时候,宿主目录里面的内容就是将skel拷贝过去,然后放到/home目录下并改名为新建的用户名

3、全局配置文件~/.bash_profile、~/.bashrc和~/.bash_logout 注:可以在用户的宿主目录下使用ls -a查看。 ~/.bash_profile:每次登录时执行(开机启动,但只有在开机启动时启动一次) ~/.bashrc :每次进入新的Bash环境时执行(开机启动,优先执行,范围更广) ~/.bash_logout:每次退出登录时执行(关机、退出执行) 以上都是只会影响自己。

要想影响所有用户,在以下文件中配置: /etc/profile
/etc/bashrc