用户与组:

一  简介

登陆Linux主机,系统识别的不是账号,而是ID,也就是一组数字号码。ID与账号的对应
关系在/etc/passwd中。

每一个用户都具有拥有者和拥有者用户组的属性。所以每个用户登录时至少要取得两个ID,
一个是用户ID(UID),一个是用户组ID(GID)。

每一个文件都会有拥有者ID和拥有用户组ID.由于每个程序都需要取得UID和GID来判断权限
问题,所以/etc/passwd的权限必须要设置为:-rw-r--r--,这样所有的人就可以看到用户密
码了,即使文件内的密码栏是加密的,也有可能有人利用***手段尝试找出密码

用户登录过程:
1 先找寻 /etc/passwd 里面是否有这个帐号,没有则跳出,有的话则将该帐号对应的
UID 与 GID 读出,该帐号的家目录与 shell 设定也一并读出;

2 再来则是核对密码表! Linux 会进入 /etc/shadow 里面找出对应的帐号与 UID,
  然后核对一下你刚刚输入的密码与里头的密码是否相符? 如果一切都 OK 的话,就进入
  Shell 控管的阶段

========================================================================================

二 /etc/passwd文件的构造格式
 
  默认权限是   -rw-r--r--
 
  cat /etc/passwd |sort -t ":" -n -k 3
 如:  root:x:0:0:root:/root:/bin/bash

  用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

1 每一行代表一个账号,很多账号是系统中必须要的,称为系统账号,如:bin,daemon,
  adm,nobody等,这些是系统运行所需要的,不能随便删除

2  每一行使用:号分隔开,共有7部分
 
  7部分详解:
 
 (1)账号名称,与UID对应
 
 (2)密码:一般为x,表示为了安全密码文件已经移植到/etc/shadow中了 
 
 (3)UID:具体的用户识别码。  
 
      UID范围:
      0 代表系统管理员,可以修改为0来把一个账户提升为管理员,不建议有多个0账号
 
      1--499     500以前的UID保留给系统使用。1--99系统默认账号,如named为25
  
      500--65535   给一般用户使用

  (4)GID: 与/etc/group有关,代表用户组
 
  (5)用户信息栏说明:没什么重要用途,只是用来解释这个账号的意义而已

  (6) 家目录:用户的家目录,也就是当用户登陆后第一个进入的目录,可以把此路径
        进行修改以定位到别处

  (7)shell:通常使用/bin/bash来执行命令  /sbin/nologin

----------------------------------------------------------------------------------------

 


三  系统密码文件--/etc/shadow

   权限是默认是-r--------,即只有root可以读写。注意不要更改这个文件的属性

   每一行使用:号分隔开,共有9部分
   如:root:$1$tilydN4J$sejiQoHijURSxth0pJNz31:14469:0:99999:7:::
       wp1:$1$tuCw026B$80plkA56xlirtmYKtIbOW/:14469:0:99999:7:::
      
       shutdown:*:14469:0:99999:7:::
       sshd:!!:14469:0:99999:7:::

名称:密码:密码不可更改天数:密码需要重新修改的天数:密码更改期限前的警告期限:
密码过期后的宽限时间:账号失效日期:保留

1  账号名称

2 密码:真正的密码,经过编译后的密码,如果密码栏第一个字符为*或者!,表示这个
        账号并不会用来登陆,相当于是禁用状态,所以在这里可以用此方法来禁用某
        个账户

3 最近更改密码的日期   以1970年1月1日作为1

4 密码不可更改的天数:代表这个账号的密码需要经过几天才可以更改,如设置为0的话
  表示密码可以随时更改,如设置为20的话,那么代表设置了密码后,20天之内是无法更
  改这个密码的

5 密码需要重新更改的天数:也就是说必须要在这个时间之内更改新的密码,否则这个账
  号将会暂时失效,如果设置为99999的话,那么表示密码不需要重新修改长久有效

6 密码更改期限前的警告期限:当账号的的密码失效期限快到的时候,系统会根据这个字
  段的设置给这个账号发出警告信息,提醒它再过n天,密码就要失效了,请提前重新设置

7 密码过期后的宽限时间:在必须变更密码的期限前,并没有变更你的密码, 那么该组密
  码就称为『失效的密码』, 这里设置当密码失效后,还可以用这个密码在 n 天内进行
  登入的意思。 而如果在这个天数后还是没有变更密码,帐号就失效了!无法登入!

8 账号失效日期:这个帐号在此栏规定的日期之后,将无法再使用。也是1970年以后总日数

9 保留

------------------------------------------------------------------------------------------

 

四 用户组文件-----/etc/group
 
  默认权限是: -rw-r--r--
 
   每一行使用:号分隔开,共有4部分
  
  用户组名:用户组密码:GID:组内包含的用户名(多个用户名用冒号隔开)
 
 
  2 有效用户组与初始用户组:
   GID 就是初始组(initial group)了!当使用者一登入系统,立刻就拥有这个组的相关
   权限的意思。不需要在 /etc/group 的第四个栏位写入该帐号
  
   # grep 'wp1' /etc/passwd /etc/shadow- /etc/group /etc/gshadow
   /etc/passwd:   wp1:$1$tuCw026B$80plkA56xlirtmYKtIbOW/:500:500::/home/wp1:/bin/bash
   /etc/shadow-:  wp1:$1$tuCw026B$80plkA56xlirtmYKtIbOW/:14469:0:99999:7:::
   /etc/group:    wp1:x:500:
   /etc/gshadow:  wp1:!::

   加入组:
   一各用户要属于多个组,那么就要把这个账号加入/etc/group  /etc/gshadow
   两个文件中的其它组中
 
  
   权限:
   一个用户属于多个组,那么就具有这多个组的权限,不过这是针对已经存在的文件而言!
  
   新建的文件或目录的拥有者和所属组,是建立这个文件或目录的用户和这个用户的有效组
  
  
   相关操作:
   查看当前用户有效组:groups    第一个为有效组
  
   切换有效组: newgrp  组名      exit 退出组
  
 ----------------------------------------------------------------------------------
 
  
  
五 用户组密码文件-----/etc/gshadow
 
   默认权限: -r--------
   
    每一行使用:号分隔开,共有4部分
  
  用户组名:用户组密码:用户组管理员账号:组内包含的用户名

    用户组密码往往弃之不用,! 表示无法登陆
   

---------------------------------------------------------------------------------------

六 命令管理:


  1. useradd 添加用户或更新新创建用户的默认信息

    格式: useradd 选项  username
   
   -s 具体shell路径    预设是 /bin/bash ,/sbin/nologin则无法登陆系统
   -c 自定义描述字符串    描述新用户帐号,就是/etc/passwd第5栏的说明内容。
  
   -d home_dir           自定义用户家目录
   -g 初始用户组名称   自定义初始用户组,该组的GID将放在/etc/passwd第4栏
   -G 其它组的名称     还可以支持的其他组,这个参数会修改 /etc/group 内的相关资料
 
   -M                   强制!不要建立使用者家目录
   -m                    强制!要建立使用者家目录!
   -u user_id数字     自定义用户ID。


  
   这个指令至少可能会更动到的地方有∶
   /etc/passwd
   /etc/shadow
   /etc/group
   /etc/gshadow
   /home/username

   grep 'wp1' /etc/passwd /etc/shadow /etc/group /etc/gshadow


  创建用户相关的配置文件:
 
  vi /etc/default/useradd
  HOME=/home      <==预设的家目录所在目录
  SHELL=/bin/bash  <==预设的 shell
  SKEL=/etc/skel  <==使用者家目录的内容资料参考目录,
 
  ll -a /etc/skel  新建用户的内容都由这里复制过去
 
 
  vim /etc/login.defs

  MAIL_DIR        /var/spool/mail <==使用者预设邮件信箱放置目录
  PASS_MAX_DAYS   99999  <==/etc/shadow 内的第 5 栏
  PASS_MIN_DAYS   0  <==/etc/shadow 内的第 4 栏
  PASS_MIN_LEN    5  <==密码最短的字符长度,建议可以改到 6 以上
  PASS_WARN_AGE   7  <==/etc/shadow 内的第 6 栏
  UID_MIN         500 <==使用者最小的 UID,意即小于 500 的 UID 为系统保留
  UID_MAX       60000 <==使用者能够用的最大 UID
  GID_MIN         500 <==使用者自订群组的最小 GID,小于 500 为系统保留
  GID_MAX       60000 <==使用者自订群组的最大 GID
  CREATE_HOME     yes <==在不加 -M 及 -m 时,是否主动建立使用者家目录?


  useradd 建立 帐号时,至少会参考∶
  /etc/default/useradd
  /etc/login.defs
  /etc/skel/*

------------------------------------------------------
 
  2. userdel 删除用户帐号

   语法:userdel [-r] username

 
  -r 删除帐号时连同帐号主目录一起删除。

  注意:删除用户帐号时非用户主目录下的用户文件并不会被删除,管理员必须以find
  命令搜索删除这些文件。下面这条命令删除bugboy用户的所有文件:

  find / -user bugboy -exec rm {} \;
 
---------------------------------------------------
 
  3 passwd   修改用户相关信息
   
    只有root才能修改别的用户的密码!
    passwd  选项  用户名
    passwd  用户名    
   
    passwd    自己修改自己
   
    -l  将 username 这个帐号的密码锁住 (lock),在 /etc/shadow 内的密码栏修改
    -u  将 -l 的 lock 解开!
    -S  显示目前这个 username 的相关信息
   
    -n  后面接天数 (数字) ,最短天数;亦即是 /etc/shadow 内的第四栏;
    -x  后面接天数 (数字) ,最长天数;亦即是 /etc/shadow 内的第五栏;
    -w  后面接天数 (数字) ,警告天数;亦即是 /etc/shadow 内的第六栏;
   
   
 ------------------------------------------------------
 
  4 usermod [-cdegGlsuLU] username       修改用户相关信息
   
    -l  ∶后面接帐号名称。亦即是修改帐号名称, /etc/passwd 的第一栏!
    -s  ∶后面接 Shell 的实际文件,例如 /bin/bash 或 /bin/csh 等等。
    -c  ∶后面接帐号的说明,即 /etc/passwd 第五栏的说明栏
    -L  ∶暂时将使用者的密码冻结,让他无法登入。其实仅改 /etc/shadow 的密码栏。
    -U  ∶将 /etc/shadow 密码栏的 ! 拿掉,解冻
   
    -d  ∶后面接帐号的家目录,即修改 /etc/passwd 的第六栏;
    -e  ∶后面接日期,格式是 YYYY-MM-DD 也就是在 /etc/shadow 内的第八个栏位信息
    -g  ∶后面接 group name,修改 /etc/passwd 的第四个栏位,即是 GID 的栏位!
    -G  ∶后面接 group name,修改这个用户能够支援的群组,修改的是 /etc/group
    -u  ∶后面接 UID 数字,即 /etc/passwd 第三栏的信息
   

------------------------------------------------------

  5 finger   查看登录系统的用户信息
    finger  username   查看用户相关信息
 
----------------------------------------------------

  6 id wp2  查看用户相关 UID/GID

----------------------------------------------------- 
 
  7 groupadd [-g gid]   groupname          创建组

    -g  ∶后面接某个特定的 GID ,用来直接给予某个 GID
   
    组的相关信息
    /etc/group
    /etc/gshadow

    groupadd 新增的帐号,默认都不能使用密码的方式登入
  
-------------------------------------------------------
 
  8 groupmod    修改组相关信息
   groupmod [-g gid] [-n group_name]  组名称

    -n  ∶修改已有的组名称
   
    -g  ∶修改已有的 GID 数字;
   

    groupmod -g 103 -n wpgroupxin  wpgroup
    grep wpgroupxin  /etc/group /etc/gshadow

------------------------------------------------------ 
 
  9 groupdel groupname     删除组
 
----------------------------------------------------- 
 
  10 gpasswd      组管理
  
   系统管理员(root)做的动作∶
     gpasswd groupname
     gpasswd [-A user1,...] [-M user3,user4...] groupname
     gpasswd [-rR] groupname

   参数∶
       ∶若没有任何参数时,表示给予 groupname 一个密码(/etc/gshadow)
         注意:最好不要设置组密码
   -A  ∶自定义一个组的管理员
   -M  ∶将某些帐号加入这个一个指定组当中!
   -r  ∶将 groupname 的密码移除
   -R  ∶让 groupname 的密码栏失效,所以 newgrp 就不能使用了
  
   组管理员(Group administrator)做的动作∶
    $ gpasswd [-ad] user groupname
   参数∶
   -a  ∶将某位用户加入到 groupname 这个组当中
   -d  ∶将某位用户移除出 groupname 这个组当中。


    groupadd testgroup
    gpasswd testgroup
   
    gpasswd -A wp1 -M wp1,wp2,wp3 testgroup
   
    grep testgroup /etc/group /etc/gshadow

-------------------------------------------------

  11 su   切换用户

     su [-l] [username]

     参数∶
     -   ∶如果执行 su - 时,表示该用户想要变换身份成为 root ,且使用 root 的
           环境设定参数档,如 /root/.bash_profile 等等。
     -l  ∶后面可以接用户,如 su -l wp1 ,所有相关环境设定档跟着改变为wp1的。
    
     -c  +  "仅执行一次的完整命令"
    
     [wp1@centos1 wp]$ cat /etc/shadow
     cat: /etc/shadow: Permission denied
     [wp1@centos1 wp]$ su - -c "cat /etc/shadow"
     Password:
     root:$1$B5apNmoX$LE2lVJjDeLfqq55lHUtC2/:14501:0:99999:7:::

    
    
---------------------------------------------------    
    
  12 who am i   查看当前用户是谁

---------------------------------------------------

 
  13 who  查看当前登录的用户
 

---------------------------------------------------
 
  14 last  最近一个月内成功登录系统的用户的记录
     lastb  查看登录失败的用户的记录

----------------------------------------------------
    
  15 lastlog  每个用户最近登录的时间   查看的是/var/log/lastlog
 
----------------------------------------------------
 
  16 w  查看当前登录用户及其进行的操作
 [root@centos1 ~]# w
 
  10:33:07   up 5 min,  2 users,  load average: 0.05, 0.26, 0.15
  USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
  root     pts/1    192.168.0.254    10:29    3:31   0.09s  0.09s -bash
  root     pts/2    192.168.0.254    10:29    0.00s  0.13s  0.02s w

  JCPU :显示与终端相关的所有进程所消耗的时间
  PCPU :表示cpu执行程序所消耗的时间
 
  w root    只显示指定用户的信息
 
-------------------------------------------------------
 
 17 [wp2@wp4 ~]# write username   给指定用户发送消息

------------------------------------------------------
 
  18 [wp1@wp4 ~]$ mesg n/y  禁止接收别人给自己发的消息
 
----------------------------------------------------- 
 
  19 wall "字符串"   对系统上所有登录用户发送消息
 
------------------------------------------------------ 
  20 mail  用户系统内置邮箱
  
     /var/mail/用户名
  
     mail 用户名 -s "邮件标题"
    
     mail -s "邮件标题" 接收邮件的用户名 < /mail.txt
    
     mail  查看当前用户邮件
    
    h 将信件的标题列出来。如要查阅 40 封信件左右处的所有信件标头,可以输入 h 40
    d 删除 删除第10封信,d10,删除 20-40 封信,d20-40,不过,这个动作要生效的话,
      必须要配合 q 这个指令才行
    s 将信件储存成为文件案。举例来说,将第 5 封信件的内容存成 ~/mail.file 的话,
       可以∶  s 5 ~/mail.file
    x 或者输入 exit 都可以。不作任何动作退出,所有刚才执行的动作都失效
    q  q 则会进行两项动作∶ 1. 将刚刚删除的信件移出 mailbox 之外; 2. 将刚刚有
       阅读过的信件存入 ~/mbox ,且移出 mailbox 之外。
 
 --------------------------------------------------   
 
 21 pwck 检查密码文件 
 
    pwck /etc/passwd
    pwck /etc/shadow
   
 ----------------------------------------------
 
 22 vlock ---锁定命令行终端
     
    rpm -ivh vlock-1.3-23.i386.rpm
    vlock   锁定当前终端
   
    vlock  -a  锁定所有终端
   
 ----------------------------------------------
 
 23 chage  查看账号密码有效期
 
   chage -l wp1 
   
    
-----------------------------------------------

24 ac   统计用户总的登录系统的时间

   ac -d   按每一天列出统计结果
  
   ac -p  按每一个用户列出统计结果
 
-----------------------------------------------

25   touch /etc/nologin
   
   只要创建了这个空文件,系统中普通用户就无法登录系统了。一直要等到这个文件被删除才能
    登录系统
   
    对root没有效果!
   
   
    vi /etc/nologin
   
    ni buneng denglu xitong !   文件的内容就是普通用户登录时显示的内容