用户和组管理
  要想对用户和组的管理有更深入的了解,应该先了解相应的概念,然后对相应的命令进行记忆和操作,记住要多加练习。
一、相关知识
UNIX操作系统:是通过多用户、多任务环境实现的          
 密码:验证用户身份的凭证;
权限:界定不同的使用者本身所能够操作的资源的范围的
SAM数据库:用来验证用户密码、存储密码和用户,是强加密文件
linux用户密码存放实现加密:
 MD5:Message Degist 信息摘要,数据的指纹,数据特征码;唯一标识一段数据的;
① 单项加密:只能根据特征码取得数据,不能通过特征码还原数据;
特征:1、雪崩效应:避免防暴力破解;
2、 输入数据是任意大小,输出数据是定长的
           ② 采用单项加密技术
  例:MD5(输出数据128bit) ----linux当中用户是通过MD5加密
SHA1(输出数据160bit)---------安全哈希算法
SHA256(输出数据256bit)
长度越长,安全性越好,计算时间越长,效率越低
二、用户与组
1、用户
用户:是获取特定资源的集合,权限集合的映射,是权限的集合,是获取资源的凭证
uid(user identification):是用户的标识符,是用来识别用户        
用户名:可公开,是用户的外部表示;
用户:管理员-----------root   ID=0
      系统用户--------ID=1-499; 让后台进程运行所给的用户
      普通用户--------ID>=500
用户信息存放在文件/etc/passwd中,可用命令id来查询用户标志。
2、组
组:group ,是具有某种联系或关系的用户集合,需要密码
组名:是组的外部表示
GID :是组的标识符
组:由多个用户组成,用于实现权限的分类;组是权限的容器  
组:两种分类方式:1.私有组,系统组,公共组
                  2. 基本组,额外组(附加组)   
用户组信息存放在文件/etc/group中,可用命令id来查询用户组标志。
     
安全上下文:发起的命令由进程运行,以发起者的身份运行;

3、权限
权限:界定不同的使用者本身所能够操作的资源的范围的
文件权限:r------读          w------写          x:-------执行
目录权限:r-------查看ls  w-----建立或删除文件    x---cd换至此目录,或者ls -l 文件     
二进制表示:---  000  0
            --x  001  1
            -w-  010  2
            -wx  011  3
            r--  100   4
            r-x  101   5
            rw-  110   6
            rwx  111   7

用户:/etc/passwd    644
密码:/etc/shadow    400   
组:  /etc/group
组密码:/etc/gshadow

/etc/passwd -----系统用户数据库文件,包括系统内所有已经注册用户的信息;格式:
username:[password]:uid:pid: CECOS:[comment]:dir:[shell]
username------用户名,以字符开头,不使用大写字母
password-----密码;在redhat系统中设置为“x”
uid----用户标识号
pid-----用户组标识号
CECOS:补充信息
comment-----说明域,包括用户详细信息说明;不能包含冒号,可以为空
dir------用户家目录$HOME,即用户登录成功后的工作目录或当前目录
shell------shell程序,默认是/bin/bash

/etc/shadow----影子密码文件,启动时,用于存放系统内用户的加密后的密码和用户登录控制信息;密码最短使用时间:不做限制(尽可能的指定密码):密码过期的警告时间:密码过期之后必禁用:明确密码禁用:目前尚未使用

 username:password:lastchanged:minimum:maximum::::
username------与passwd内容对应的用户名
password-------加密后的密码;为空,表示无密码;当开头的两个字符为“!!”,标识用户被上锁没加密,不允许登录;一般情况下,新创建的用户是被上锁的
lastchanged-----从某天(19700101)到上次修改密码时间的间隔天数
minimum-----必须修改密码的天数间隔,密码最短使用期限;默认为0
maximum-----新密码的最长有效天数;不做限制(尽可能的指定密码)
warndays-------密码过期的警告时间
密码过期之后必禁用
明确密码禁用
目前尚未使用

/etc/group----组定义文件,格式:
groupname:password:gid:userlist
groupname---组名
password-----组密码;为空,则不需要密码;在redhat系统中设置为“x”,可用gpasswd设置密码,并有newgrp等命令使用
gid------组标志号
userlist------组成员元,为以逗号分隔的用户;附加组

#cat /etc/shells----用户的合法shell
     /sbin/nologin-------禁止用户登录

用户管理命令:
useradd-------添加用户
用法:#useradd USERNAME
      选项: -u  UID-----指定UID
           -g  GID------指定GID,组事先存在;如果组不存在,会报错
           -c   "string" --------- 注释,说明;不含“:”,和回车的长度<512的字符串
           -d   PATH ----------- 指定家目录,创建家目录在/home目录下;家目录不存在
           -s   SHELL---------指定shell   /etc/shells
           -G  grp1,grp2,…-----------指定附加组
           -M   ----------不创建家目录
           -m   ----------创建家目录
           -D   -----------设置默认值
                -b  HOMEPATH --------家目录,默认指定
                -s   SHELL---------默认指定
 /etc/group   以此附加组用户列表
添加用户,背后做的工作:
添加一行:/etc/passwd  | /etc/shadow  | /etc/group  /home/USERNAME---环境配置文件 
添加用户的默认值的位置--------- /ect/defult/useradd 
 
用户设置密码: passwd  USERNAME 
用法:passwd   USERNAME 
        选项:-l-------锁定指定用户账号
              -u-------解锁用户账号的锁定
              --stdin  实现在管道中传递的,实现密码和用户使用同一个名
                   eg: echo redhat | passwd –stdin gentoo
-n-----密码最短使用期限
添加密码时用户属性的默认值的位置---------/etc/login.defs添加密码时
#cd /etc/skel----  用户的环境变量
$1$:1代表UID5

bc-----------计算器
scale=2  精度的多少
pwck------检测文件密码是否仍然在有效期内
       #less/etc/login.defs:UID\GID的最大值和最小值
 


 
用户帐号管理;修改相关信息:
chfn   USERNAME----------改变finger信息
chsh   USERNAME-----------改变shell
usermod------------用户修改的相关信息
     -u  UID
     -g  GID
     -G   附加组存在会覆盖    -a -G       追加附加的组
     -c----------注释
     -d  家目录 -------家目录不存在    -m –d--------
     -s  SHELL
     -l   NEWLOGNAME-------改变用户名,登录名
     -L   锁定用户账号
     -U   解锁用户账号
     -o   两个用户可以使用同一个账号
     -e   用户帐号的锁定时间,失效时间
chage --------- 改变用户密码的失效时间
        -m  最短使用时间
userdel -----------删除用户
       -r   删除用户和家目录
 
finger  USERNAME--------显示用户的名称,是否登录

id  -----------显示用户的标识信息
用法:id      USERNAME
选项:-u ----------显示uid
 -g-----------显示gid
 -G--------显示groups
      -n -------- 显示名字
关于组的相关信息:
groupadd
        -g  GID
        -r  把此组添加为系统组
groupmod   修改组信息
        -g   修改GID
        -n   修改组名
       
groupdel---------删除组
gpasswd   GRPNAME----------添加组密码
newgrp-------登入另一个组