Linux用户及用户组

用户、组和权限管理

 Multi-tasks,Multi-Users
 每个使用者:
     用户标识、密码【一种认证手段】;
           Authentication(认证)
           Authorization(授权)   
           Audition(审计)
           3A
      组:用户组,用户的容器【便于实现权限分配,有些系统称为角色,类似角色但不完全相同】
            
      用户类别:
           管理用户;
           普通用户:
             系统用户
             登录用户
     用户标识:UserID(简称UID)
       16bits二进制数字表示:0-65535
            管理员是0
            普通用户是1-65535【基本上是到60000】
                 系统用户是1-999(centos7)
                 登录用户是1000-60000(centos7)

        名称解析:名称转换
              Username <-->UID
              根据名称解析库进行:/etc/passwd [passwd为解析库文件] (LDAP轻量级目录访问协议,通常用户用户及目录访问的)
  组类别1:
        管理员组
        普通用户组
            系统组
            登陆组
  组标识:GroupID(简称GID)
       16bits二进制数字表示:0-65535
            管理员组是0
            普通用户组是1-65535【基本上是到60000】
                 系统用户是1-999(centos7)
                 登录用户是1000-60000(centos7)

        名称解析:名称转换
              groupname <-->GID
              解析库:/etc/group

组类别2:
    用户的基本组
    用户的附加组

组类别3:
    私有组:组名同用户名,且只包含一个用户;
    公共组:组内包含了多个用户。


  认证信息:
       通过对比事先存储的,与登录时提供的信息是否一致;
       password存放位置【加密存储】:
              /etc/shadow 用户密码
              /etc/gshadow 组密码

      密码使用策略:
          1、使用随机密码;
          2、最短长度不要低于8位;
          3、大小写字母、数字、特殊符号;
          4、定期更换。

      加密算法:
          对称加密:加密和解密使用同一个密码;
          非对称加密:加密和解密使用的一对密钥:
              公钥:public key
              私钥:private key
          单向加密:只能加密,不能解密【提取数据特征码,Linux用户密码是用此方法,即单向加密】;
              定长输出【sha512sum,md5sum】
              雪崩效应(初始条件微小改变引起结果巨大变化)
              
              算法:
                  md5:message digest 5是版本号,定长输出128 bits
                  sha:secure hash algorithm,定长输出160bits
                  sha224/256/384/512

             在计算之时加salt:随机数【使用场景,不同用户相同密码加密值依然不一样】
使用md5sum查看差一个字符加密算值差多少
/etc/passwd:用户的信息库
name:password:UID:GID:GECOS:directory:shell
 name:用户名
 password:可以是加密的密码,也可以是x(占位符)
 GID:用户所属的主组ID
 GECOS:用户的注释信息
 directory:用户的家目录
 shell:用户默认的shell,登陆时默认的shell

如果passwd文件中的密码是占位符x,那么真正的密码存储于/etc/shadow文件中
          shadow文件中:
             用户名:$加密算法$salt$密码:最近修改日期:最短使用期限:最长使用期限:警告期限:过期期限:保留字段
            第一个$与第二个$指的是加密算法,1是md5,2-6指的是上面的sha算法
           第二个$与第三个$中间是salt
            第三个$到冒号之间是加密后的密码
            后面的是最后一次更改密码的日期,1970之后的天数,空表示此功能被禁用
            后面是密码最短使用期限
            后面是密码最长使用期限
            密码警告时间段
            密码禁用期
            账号过期日期,从1970年1.1开始的天数

  /etc/group:组的信息库
         group_name:password:GID:user_list
   这里的user_list值得之该组的用户成员,即以此组为附加组的用户的用户列表。

相关命令:useradd,userdel,usermod,passwd,groupadd,groupdel,groupmod,gpasswd,chage,chsh,id,su

Linux用户和组管理

安全上下文:
      进程以其发起者的身份运行;进程对文件的访问权限,取决于发起此进程的用户据权限。
系统用户:为了能够让那些后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户,此类用户从不用登录系统,例如mysql、squid等。
 groupadd:添加组
    groupadd [options] group
       -g :GID,指定GID,默认是上一个组的GID+1
       -r:创建系统组

groupmod:修改组属性
    groupmod [options] GROUP
          -g 修改GID
          -n 修改组名 -n 新组名 旧组名

groupdel:删除组
      groupdel [options] GROUP

useradd:创建用户  
      如果没有指定用户组的话,系统会自动创建一个与用户名同名的私有组
        -u 指定UID
        -f 0或-1设置过了期限之后能否继续使用
        -g 指定基本组GID或组名称,此组得事先存在
        -c 指明注释信息
        -G 指定用户所属的附加组,多个组之间用逗号分隔GROUP1[,GROUP2,...[,GROUPN]]]
        -d 以指定的路径为用户的家目录,通过复制/etc/skel此目录并重命名实现,指定的家目录路径存在,则不会为用户复制环境配置文件
       -s  指定用户的默认shell,可用的所有shell列别存储在/etc/shells文件中
        -r  创建系统用户
        -M 不为用户创建主目录
    注意:创建用户时的诸多默认设定配置文件在/etc/login.defs中
  useradd -D 显示许多用户创建时的基本默认信息,修改的结果保存于/etc/default/useradd
        可以通过useradd -D 后面添加选项做一些操作,也可以直接改文件信息。

usermod:修改用户属性
    usermod [options] LOGIN
            -u 修改uid,新id
            -g 修改用户所属基本组
            -G 修改附加组,原来的附加组会被覆盖
            -a append 与-G 一同使用,用于为用户追加新的附加组;
            -c comment  修改注释信息
            -d 修改家目录,原有文件不会转移
            -m 与-d一同使用,将原来的家目录文件移动到新目录
            -l 修改用户名
            -s 修改用户的默认shell
            -L 锁定用户密码lock,即在原来的密码字符串之前添加一个!;
            -U unlock解锁用户的密码。


userdel : 删除用户
          userdel option login
              -r 删除用户时一并删除家目录【因为默认情况下删除用户,此用户家目录文件不会被删除】;
              
passwd:修改密码
    不带任何选项是指修改当前用户密码;
    passwd username 修改指定用户密码,仅root用户有次权限
    -l 锁定
    -u 解锁
    -d 清除用户密码
     -e expire 过期期限,日期;
     -i 非活动期限 days;
     -n 密码的最短使用期限
     -x 最长使用期限;
     -w 警告期限
      --stdin 重定向至标准输入 例如echo "password" | passwd --stdin docker 即能够将password这个字符串设置为docker这个用户的密码

 gpasswd:给组定义密码
  给组添加密码的意义:避免用户乱切换组,导致创建的文件的 属组错乱,如果一个用户有多个组,那么在这些组中使用,newgrp 对应的组名称 即可无需密码切换基本组。
  组密码文件:/etc/gshadow 
  gpasswd option  group
     
  -a USERNAME : 向组中添加用户
  -d USERNAME:从组中删除用户     

newgrp 临时切换基本组
      可以是直接连接group名称,也可以是newgrp - groupname,-会模拟 用户重新登陆以实现重新初始化其工作环境。

chage 更改用户密码过期信息
      chage option login

id  显示用户真实和有效的id信息
        id option user
       -u 仅显示有效的uid;
       -g 仅显示用户的基本组ID;
       -G 显示用户所属的所有组ID;
        -n 显示名称而不是ID;

su 切换用户switch user
        登录式切换
             会通过读取目标用户的配置文件来重新初始化
            su - username
        非登录式切换
              不会读取目标用户的配置文件来初始化
           su username
           su USERNAME -c command以目标用户执行命令
      管理员可无密码切换其他任意用户,其他用户切换不同用户均需要目标用户密码。

其他命令:chsh修改shell,finger查询用户信息,chfn修改finger里的基本信息,whoami当前用户是谁,grpck组检查,pwck用户信息检查。

你可能感兴趣的:(Linux用户及用户组)