用户和组

用户和组

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)
上一篇 2016-08-03 19:46
下一篇 2016-08-04 08:25

相关推荐

  • 理解基本权限以及特殊权限:Suid 、Sgid、Sticky以及acl

    理解基本权限以及特殊权限:Suid 、Sgid、Sticky以及acl 在Linux中特殊权限是什么?为什么要设定特殊权限?回答这个问题前,我们不妨思考为什么要设定权限? 大家知道Linux中一切皆文件。不论你是什么,在linux系统中都会被当做一个文件来看待。无论你是文本或目录,硬件或软件,图片或视频等等,统统都被当做文件来看待。所以,在linux中,文件…

    Linux干货 2017-04-08
  • 马哥教育21期网络班—第11周课程+练习—-成长进行时–不退步–上

    1、详细描述一次加密通讯的过程,结合图示最佳。 对称加密: 加密和解密使用同一个密钥; 缺点:如何通信方多的话,需要保存多组密钥 公钥加密:密钥是成对儿出现 公钥:公开给所有人;pubkey 私钥:自己留存,必须保证其私密性;secret key 特点:用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然; 数字签名:主要在于让接收方确认发送方…

    Linux干货 2016-09-19
  • shell脚本编程之变量

    一、创建shell脚本文件   创建shell脚本时,必须在第一行指定要使用的shell。格式为:   #!/bin/bash   通常在shell脚本中,#代表注释行,即不被执行的行,而第一行“#!”则是表示用哪个shell来执行脚本。   实例:   让我们来执行一下这个脚本:   上面的结果显…

    Linux干货 2016-02-14
  • 网络基础知识札记

    Linux网络属性管理(1)     Bell(AT&T), PARC(Xerox)        以太网     计算机网络:共享底层通信信道         CSMA/CD算法      &nbsp…

    Linux干货 2016-09-06
  • 马哥教育网络20期+第二周练习博客

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。 3、请使用命令行展开功能来完成以下练习:    (1)、创建/tmp目录下的:a_c, a_d, b_c, b_d   …

    Linux干货 2016-06-20
  • 16个很有用的在线工具

    1. ExplainShell.com 命令解释 对于Linux用户来说每天都会写各种命令和脚本,那么你可以使用这个网站工具来查看命令式如何工作的,这样可以避免不必要的错误出现;也是一个很好的学习命令的方式 2. BashrcGenerator.com 定制个性命令提示符 简单说就是个性化生成命令提示符,可将生成的代码…

    Linux干货 2015-03-13