用户和组

用户和组

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

(0)
dxkbokedxkboke
上一篇 2016-08-03
下一篇 2016-08-04

相关推荐

  • 26期全程班-第五周博客作业

      1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; # grep “^[[:space:]]\+” /boot/grub/grub.conf 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行; # grep “^…

    Linux干货 2017-03-09
  • http服务之二

    httpd http协议: http事务:    请求:request    响应:response 报文语法格式: request报文 <method> <request-URL> <version>     <he…

    Linux干货 2016-10-21
  • Linux运维学习历程-第十一天-bash逻辑运算、测试类型和脚本语句

    概述:本篇重点介绍linux当中默认设立了类型,bash的逻辑运算、测试类型和脚本语句,本篇内容极其重要,望小伙伴们在日后的学习中用心学习 一、逻辑运算 变量:   本地变量、环境变量、局部变量、位置参数变量、特殊变量   变量赋值:name=value,export name=value,declare -x nam…

    Linux干货 2016-08-24
  • Linux程序包编译安装

    程序包编译安装:      Application-VERSION-release.src.rpm–> 安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装      源代码–>预处理–>编译–>汇编–>链接–>执行      源代码…

    2017-04-25
  • sed的模式匹配用法探讨

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1405753 [root@sunsky Desktop]# cat sunsky a b c d e f [root@sunsk…

    Linux干货 2016-08-15
  • httpd服务之虚拟主机、访问控制、https配置详解

    前言 上文讲解了http协议及httpd的一些特性,是学习web服务需要掌握的一些基础知识,接下来让我们进一步了解httpd相关功能的配置,本文讲解的是虚拟主机,访问控制及https等功能的配置。 httpd之虚拟主机 虚拟主机共分为三种模式:基于IP、基于端口、基于主机名(FQDN) 实验环境介绍 开始之前,先介绍一下httpd在CentOS6.6版本及文…

    Linux干货 2015-04-14