用户和组

用户和组

touch /etc/nologin
    系统做维护时不想普通用户登录,就可以创建这个文件,也可以在里面写一些提示。
    维护完之后删除这个文件就可以自动恢复
    
touch /run/nologin
    与上述命令功能相同,但是这个命令只有在CentOS7上可以用。
用户(USER)
根据所具有权限的不同,用户分为两类:
    管理员用户:root,UID为0.(只有管理员用户才能为0)
    普通用户:UID  1-65535
        普通用户又可以分为两类:
        系统用户:保障系统运行的用户,一般不提供密码登录系统,其UID为1-499(CentOS6)、1-1000(CentOS7)之间.
        登录用户:即一般用户,其使用系统的权限受限,其UID为500-60000(CentOS6)、1000-60000(CentOS7)之间.(一般默认使用到60000)
        名称解析:名称转换
            Username<-->UID
                根据名称解析库进行:/etc/passwd
组(group)
Linux组:Groupname /  GID
    与用户一样,组也是分为两类:
        管理员组:root  0 
        普通组:
            系统组:1-499(CentOS6)、1-999(CentOS7)
            普通组:500-60000(centos6)、1000-60000(CentOS7)
组的类别:
    主组:(主要组,基本组):
        用户必须拥有和属于一个主组,主组有且只有一个。
        主组名与用户名相同,且仅包含一个用户:是私有组。
        
    附加组:(辅助组)
        一个用户可以属于零个或一个或多个附加组
            
    名称解析:名称转换
        groupname<--->gid
            解析库:/etc/group
用户和组的配置文件
Linux 用户和组的主要配置文件:   
         /etc/passwd :用户及其属性信息( 名称、UID 、主组ID 等)    
         /etc/group :组及其属性信息    
         /etc/shadow :用户密码及其相关属性    
         /etc/gshadow:组密码及其相关属性
  • passwd文件格式

     login name :登录用名
     passwd :密码
     UID号 :用户身份编号
     GID :用户所属主组的ID号
     GECOS :用户全名或注释
     home directory(家目录) :用户主目录 
     shell :用户默认使用shell
  • shadow文件格式

登录用名:
    用户密码: 一般用sha512 加密
    最近一次修改密码的时间:从1970 年1 月1 日起到密码最近一次被更改的时间         
    最短使用期限:密码再过几天可以被变更(0 表示随时可被变更)
    最长使用期限:密码再过几天必须被变更(99999 表示永不过期)
    警告期段:密码过期前几天系统提醒用户(默认为一周)
    密码过期几天后帐号会被锁定
    从1970 年1 月1 日算起,多少天后帐号失效。
  • group文件格式

    群组名称:就是群组名称
      群组密码:通常不需要设定,密码是被记录在/etc/gshadow
      GID的 :就是群组的 ID
      以当前组为附加组的用户列表(分隔符为逗号)
  • gshadow文件格式

    群组名称:就是群组名称
      群组密码:
      组管理员列表:组管理员的列表,更改组密码和成员
      以当前组为附加组的用户列表:(分隔符为逗号)
  • 密码加密

    加密机制:
          加密:明文-->  密文
          解密:密文-->  明文
      单向加密:哈希算法,原文不同,密文必不同
          相同算法定长输出,获得密文不可逆推出原始数据
          雪崩效应:初始条件的微小改变,引起结果的巨大改变
          md5: message digest, 128bits
          sha1: secure hash algorithm, 160bits
          sha224: 224bits
          sha256: 256bits
          sha384: 384bits
          sha512: 512bits
      更改加密算法 authconfig --passalgo=sha256 -- update
  • 用户和组的管理命令

    用户管理命令
          useradd    增加用户
          usermod    修改用户属性
          userdel    删除用户
      组帐号维护命令
          groupadd    增加组
          groupmod    修改组属性
          groupdel    删除组

用户创建

  • useradd

    useradd [options] login_name
      参数:
    
          -u UID:手动指定用户UID,默认的话是上一个用户的UID+1
              [root@localhost ~]# tail -2 /etc/passwd
              sarah:x:2009:2010::/home/sarah:/sbin/nologin
              haha:x:2010:2011::/home/haha:/bin/bash
              [root@localhost ~]# useradd haha2
              [root@localhost ~]# tail -2 /etc/passwd
              haha:x:2010:2011::/home/haha:/bin/bash
              haha2:x:2011:2012::/home/haha2:/bin/bash
    
    
          -o  配合-u  选项,不检查UID 的唯一性
              [root@localhost ~]# useradd -ou 2011 haha3
              [root@localhost ~]# tail -2 /etc/passwd
              haha2:x:2011:2012::/home/haha2:/bin/bash
              haha3:x:2011:2013::/home/haha3:/bin/bash
    
    
          -g GID :指明用户所属基本组,可为组名,也可以GID
              [root@localhost ~]# useradd -g root haha4
              [root@localhost ~]# id haha4
              uid=2012(haha4) gid=0(root) groups=0(root)
              
          -c  "COMMENT" :用户的注释信息
              [root@localhost ~]# useradd -c "kuailederen haha4" haha5
              [root@localhost ~]# getent passwd haha5
              haha5:x:2013:2014:kuailederen haha4:/home/haha5:/bin/bash
    
    
          -d  HOME_DIR: 以指定的路径( 不存在) 为家目录
              [root@localhost ~]# useradd -d /home/hahatest/ haha6
              [root@localhost ~]# getent passwd haha6
              haha6:x:2014:2015::/home/hahatest/:/bin/bash
    
    
          -s  SHELL :  指明用户的默认shell 程序可用列表在/etc/shells 文件中
              [root@localhost ~]# useradd -s /bin/csh/ haha7
              [root@localhost ~]# getent passwd haha7
              haha7:x:2015:2016::/home/haha7:/bin/csh/
    
          -G  GROUP1[,GROUP2,...] :为用户指明附加组,组必须事先存在
              [root@localhost ~]# usermod -G bin haha6
              [root@localhost ~]# getent passwd haha6
              haha6:x:2014:2015::/home/hahatest/:/bin/bash
              [root@localhost ~]# groups haha6
              haha6 : haha6 bin
       
          -N  不创建私用组做主组,使用users 组做主组
              [root@localhost ~]# useradd -N haha8
              [root@localhost ~]# groups haha8
              haha8 : users
    
          -r:  创建系统用户 CentOS 6: ID<500 ,CentOS 7: ID<1000
              [root@localhost ~]# useradd -r haha9
              [root@localhost ~]# groups haha9
              haha9 : haha9
              [root@localhost ~]# id haha9
              uid=991(haha9) gid=986(haha9) groups=986(haha9)
              [root@localhost ~]# getent passwd haha9
              haha9:x:991:986::/home/haha9:/bin/bash
  • 创建用户是的默认值在文件:

    默认值设定:/etc/default/useradd 文件中
      显示或更改默认设置:
          useradd -D
          useradd –D -s SHELL
  • 新建用户相关的文件和命令

    /etc/default/useradd      /etc/skel/*  
          /etc/login.defs
          newusers passwd 格式文件 批量创建用户
          chpasswd 批量修改用户口令
批量创建用户
newusers file (file 里是要批量创建的用户的配置信息)
file
  (hehe1:x:2000:2000::/home/hehe1:/bin/bash
    hehe2:x:2001:2002::/home/hehe2:/bin/bash
    hehe3:x:2002:2002::/home/hehe3:/bin/bash
    hehe4:x:2003:2003::/home/hehe4:/bin/bash
    hehe5:x:2004:2004::/home/hehe5:/bin/bash
    )
批量修改用户密码
cat file |  chpasswd
file(用户名 :密码)
    (hehe :12345
    hehe2:redhat    hehe3:centos
    )
新创建的家目录里面没有配置文件登录时候会出错,恢复家目录文件的方法是:
   (1) [root@localhost skel]# cp -r /etc/skel/.[^.]* /home/hehe2
    [root@localhost skel]# cd /home/hehe3
    [root@localhost hehe3]# ls -a 
    .  ..
    [root@localhost hehe3]# cd
    [root@localhost ~]# 
    [root@localhost ~]# cd /home/hehe2
    [root@localhost hehe2]# ls -a
    .  ..  .bash_logout  .bash_profile  .bashrc  .mozilla
    
    附加方法:
        (2)cp  -r `ls -A` /home/hehe3/
                此方法只能在进入到skel目录里才行                  
                不能在其他目录下操作此命令
        (3)cp -r /etc/skel/. /home/hehe3/

用户属性修改

usermod [OPTION] login_name 
    -u UID:  新UID
    -g GID:  新基本组
    -G GROUP1[,GROUP2,...[,GROUPN]]] :新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a 选项,表示append; ;
    -s SHELL :新的默认SHELL;
    -c 'COMMENT' :新的注释信息;
    -d HOME:  新家目录不会自动创建,原家目录中的文件不会同时移动至新的家目录;若要创建新家目录并移动原家数据,同时使用-m选项
    -l login_name:  新的名字;
    -L: lock 指定用户, 在/etc/shadow  密码栏的增加 !
    -U: unlock 指定用户,将 /etc/shadow 的 密码栏的 !  拿掉
    -e YYYY-MM-DD:  指明用户账号过期日期;
    -f INACTIVE:  设定非活动期限;   
                   
        [root@localhost ~]# getent passwd haha5
        haha5:x:2013:2014:kuailederen haha4:/home/haha5:/bin/bash
        [root@localhost ~]# id haha5
        uid=2013(haha5) gid=2014(haha5) groups=2014(haha5)
        [root@localhost ~]# groups haha5
        haha5 : haha5
        [root@localhost ~]# usermod -u 2345 -g root -G bin -s /bin/csh -c "nihaohaha" -d /home/testdir/newhaha5 -m -l newhaha5 haha5
        [root@localhost ~]# getent passwd newhaha5
        newhaha5:x:2345:0:nihaohaha:/home/testdir/newhaha5:/bin/csh
        [root@localhost ~]# id newhaha5
        uid=2345(newhaha5) gid=0(root) groups=0(root),1(bin)
        [root@localhost ~]# groups newhaha5
        newhaha5 : root bin

查看用户相关id信息

id [OPTION]... [USER]
    -u: UID    -g: GID    -G: Groups    -n: Name
删除用户
userdel [option]... login_name
        -r 删除用户家目录
用户和组相关操作命令
pwunconv 密码不转换
        passwd unconv
    pwconv密码转换
        passwd conv
    chsh -s :改shell类型
    getent passwd 用户名:看用户信息
    getent shadow 用户名:
    usermod -U tom:解锁用户密码限制(创建用户没有设置密码时)
    usermod -L tom锁定,锁定后禁止用户登录,但是可以切换
    openssl rand -base64 10(位数)自动生成指定位数密码
    chage -d0 用户名 修改距离1971年天数
    passwd -e 用户名,将用户距离1971年天数置零
    finger 
    gpasswd 组名:给组设置口令

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

su [options...] [-] [user [args...]]
切换用户的方式:    
    su UserName :非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录    
    su - UserName:登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换
    root su 至其他用户无须密码;
    非root用户切换时需要密码
换个身份执行命令:
su [-] UserName -c 'COMMAND'
        选项:
            -l --login_name:             
                su -l UserName 
                    相当于 su - UserName
设置密码
passwd [OPTIONS] UserName:  修改指定用户的密码,仅root 用户权限
        passwd:  修改自己的密码;
  常用选项:
        -l: 锁定指定用户        
        -u: 解锁指定用户        
        -e: 强制用户下次登录修改密码        
        -n mindays:  指定最短使用期限        
        -x maxdays :最大使用期限        
        -w warndays :提前多少天开始警告        
        -i inactivedays :非活动期限;        
        --stdin :从标准输入接收用户密码;        
        echo " PASSWORD " | passwd --stdin USERNAME
修改用户密码策略
chage [OPTION]... LOGIN
    -d LAST_DAY    
    -E, --expiredate EXPIRE_DATE    
    -I, --inactive INACTIVE   
    -m, --mindays MIN_DAYS    
    -M, --maxdays MAX_DAYS    
    -W, --warndays WARN_DAYS    
    –l,显示密码策略

创建组

groupadd [OPTION]... group_name
    -g GID:  指明GID 号;[GID_MIN, GID_MAX],默认情况下是上一个组的GID+1
    -r:  创建系统组;
        CentOS 6: ID<500
        CentOS 7: ID<1000

修改和删除组

组属性修改;groupmod
    groupmod [OPTION]... group
        -n group_name:  新名字        
        -g GID:  新的GID组删除:groupdel
    groupdel GROUP_NAME
更改组密码
组密码:gpasswd
         gpasswd [OPTION] GROUP
        -a user:  将user 添加至指定组中;
        -d user:  从指定组中移除用户user
        -A user1,user2,...:设置有管理权限的用户列表
    newgrp 命令:临时切换基本组;
        如果用户本不属于此组,则需要组密码

原创文章,作者:dxkboke,如若转载,请注明出处:http://www.178linux.com/28164