感谢支持
我们一直在努力

Linux用户和用户组基本概念

一、Linux用户基本概念

1、 3A认证机制

计算机如何区分不同的使用者呢 ? —>  用户标识(用户名、GID)、密码;

认证信息:通过比对事先存储的,与登录时提供的信息是否一致

  • Authentication: 认证机制,通过某种方案来确认用户是其声称的用户,如密码、生物识别等
  • Authorization: 授权机制, 资源使用级别(Linux只有管理员和普通用户两级分配机制,权限)
  • Audition: 审计机制,监督权限的使用 ,log审计凭据—额外审计功能SELinuse

2、 用户分类

用户标识: UserID, UID,  16bits 二进制数表示,也就是: 0 – 65535

Linux内核(2.6.x)已经可以支持到2^32 – 1 个标识符。

  • root : 0
  • 普通用户: 1 – 65535
    • 系统用户: 1-499(CentOS 6) ;  1-999(CentOS 7)
    • 登录用户: 500 – 60000(CentOS 6) ; 1000 – 60000 (CentOS 7)

3、 用户配置文件

(1) 用户信息库: /etc/passwd
格式(七段):account:password:UID:GID:GECOS:directory:shell
account: 用户名
password:占位符x;
UID:用户的ID号
GID:用户所属的主组的ID号;
GECOS:注释信息
directory:用户的家目录;
shell:用户的默认shell,登录时默认shell程序;

(2)密码存储位置: /etc/shadow
格式(九段):用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:过期宽限时间:账号失效日期:保留字段

  • login name:用户名
  • encrypted password:经过编码的密码
  • date of last password change:密码最近一次修改密码的时间
  • minimum password age:密码最短使用期限
  • maximum password age:密码最长使用期限:表示两次修改密码的最长间隔。
  • password warning period:警告时间:表示在密码快要过期之前的多少天开始警告用户修改密码。
  • password inactivity period:过期宽限时间:表示在密码过期以后,还允许用户登录的时间,只不过在这段时间里登录系统以后就必须要修改密码才能使用系统。
  • account expiration date:账号失效日期,该账号被禁用
  • reserved field:保留字段

(3)创建新用户默认属性: /etc/default/useradd
# useradd defaults file
GROUP=100                # 创建组
HOME=/home              # 默认家目录
INACTIVE=-1             
EXPIRE=
SHELL=/bin/bash          # 默认shell
SKEL=/etc/skel          # 默认家目录的文件
CREATE_MAIL_SPOOL=yes    # 自动创建mail

二、用户组
1. 用户组(用户容器)的分类
组标识:GroupID, GID
16bits二进制数字:0-65535
 (1)系统视角:管理员用户组&普通用户组
    管理员组:0
    普通用户组:1-65635
            系统用户组:1-499(CentOS6), 1-999(CentOS7)
            登录用户组:500-60000(CentOS6), 1000-60000(CentOS7)       
(2)用户视角:基本组&附加组
    用户的基本组:用户本身所属组
    用户的附加组:用户额外所支持的组

有效组:
## 查看用户所属的组,第一个为有效用户组
# groups                   

##切换有效组为其他辅组
# newgrp GROUP
 
其实这个命令导致创建了一个子shell。 

更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2016-03/129012p2.htm

三、密码相关策略

1. 加密算法
(1)对称加密算法:加密和解密使用同一个密码;

 (2)非对称加密算法:加密和解密使用的一对儿密钥

密码对:公钥(pubic key)、私钥(private key),一个公钥对应一个私钥。公钥加密,私钥解密。私钥加密,公钥解密。
(3)单向加密:只能加密、不能解密,提取数据特征码
不可逆算法,常用语数据完整性校验,速度是非对称加密的1000倍
单向加密的特性:
1、定长输出:生成的加密密码长度是一定的
2、雪崩效应(蝴蝶效应):任何passwd或sallt微小改变,加密后结果发生巨大改变
3、不可逆
4、明文一致,加密后密文也一致

【单向加密算法】
MD5(Message Digest)消息摘要, 128bits(2^128种变化,16进制输出)
SHA(Secure Hash Algorithm )安全的哈希算法, 160bits
扩展: sha224、sha256、sha384、sha512

【SALT】添加的随机数:不同用户密码相同,随机数不同加密结果相差甚远

让我们来看一下 /etc/shadow
wKiom1beDubSuVukAAAXEZppFlE327.png
密码:!! ,表示此用户被禁用、锁定,禁止登陆系统
技巧:如果要临时禁止某个用户登陆,可以在其密码前面加上!!或其他字符。根据单向加密算法的特性,只要密码长度不一致,就无法匹配。

加密后的密码由三部分组成,由$分隔:

第一个$后的部分: 1-6的数字表示加密算法(md5,sha1,sha224,sha256,sha384,sha512),从左到右1-6。

第二个$后的部分: salt,加点盐。加了防止两个用户是一样的密码的情况,这样加密后的字符串也是一样的,一个用户看到另一个用户跟自己的字符串一样,也就知道那个用户的密码了。

密码与salt组合在一起加密所生成的字符串。

第三个$后的部分:就是用户输入的 key

Linux密码通常采用的是MD5方式加密,根据MD5加密特性(原始数据相同,加密后生成的密文也相同),就会出现以下情况:假设两个用户使用的密码都是123456,当甲发现乙加密的密码和自己的密码一样,那么他就可以知道乙的密码也是123456。
 那么,为什么两个不同的用户,使用相同的密码,而/etc/shadow中的密码字段不同呢?

操作系统为用户的密码再加上salt。
key is a user’s typed password.
salt is a two-character string chosenfrom the set [a-zA-Z0-9./].  This
string  is used to perturb the algorithm in one of4096 different ways.

2.密码使用策略
        (1) 使用随机密码;
        (2) 最短长度不要低于8位;
        (3) 应该使用大写字母、小写字母、数字和符号四类字符中至少三类;
        (4) 定期更换;
          (5) 循环周期足够长

可以 使用 名言、古诗等方式,缩写设定密码

四、密码相关命令
useradd、usermod、userdel、passwd
groupadd、groupmod、groupdel、gpasswd
id:显示用户的信息和有效ID;
su:switch user,切换用户
newgrp:临时切换指定的组为基本组,使用exit退出

手动创建一个用户:                                   
编辑/etc/passwd,编辑/etc/group,编辑/etc/shadow, 创建/etc/username目录,
复制/etc/skel 到/home目录, 然后重命名为username

为什么这么操作呢?因为/etc/skel 目录下,都是隐藏文件,不好操作
# cp –a /etc/skel /home
# mv /home/skel /home/myuser
修改权限及属主信息, 利用passwd命令改变密码。
# chown –R myuser:myuser /home/myuser
# chmod 700 /home/myuser

 

赞(0) 打赏
转载请注明出处:服务器评测 » Linux用户和用户组基本概念
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏