一、Linux用户和密码的作用
Linux用户和密码的做用主要是用来做认证、审计和授权的
二、认证方式
Linux中认证方式是多种多样的。一般来说,可以分为服务身份认证和专门系统身份认证。
(1)服务身份认证
登录服务程序
ftp服务程序
telnet服务程序
ssh服务程序等
(2)专门系统身份认证
传统Unix系统认证
NIS认证
NIS+认证
kerberos认证等
(3)PAM
PAM最大的特点是实现了服务程序和认证机制的分离,它采用模块化设计和插件的功能,使得我们可以轻易的在应用程序中插入新的鉴别模块或替换原先的组件,而不必对应用程序做任何修改,从而使软件的定制、维护和升级更加轻松
(4)PAM认证流程(login)
login程序接收到用户输入的账号密码,要对它们进行认证
login程序将此信息交给PAM去认证
PAM把认证结果返回给login程序,是否可以登录系统,程序再做进一步判断
三、用户
Linux系统是一个多用户的系统,用户可同时多次登录系统,运行不同的命令,命令会使用当前用户身份去运行执行命令
(1)Linux用户类型
(a)超级管理员
Linux中超级管理员有且只有一个(root)
(b)普通用户
系统用户:服务和内核态的用户,只可以管理服务,并不能登录用户,可使用 ps -elf 来查看
登录用户:可以登录系统的用户,可以与内核进行间接交互的用户
添加用户时没有检查是否有用户名冲突,那么系统是如何识别是管理员用户还是普通用户的呢
(c)UID
系统是并不是通过用户的用户名来确认用户的身份的,UID每一个用户的身份标识
用户的UID并不是随便分配的
0,超级管理员,也就是root,可以通过查看配置文件或者使用id root来查看超级管理员的UID
普通用户
1-999 系统账号,一般不能登录,保留给系统服务使用
1-200 由系统自动分配
201-999 如果使用者有系统账号的需求时,可以使用的范围,在RHEL7之前是1-499
1000-60000 一般用于useradd命令添加的用户,是可登录用户
这些都是可以通过配置文件更改的,这个配置文件存放在
/etc/login.defs
(2)如何创建用户
使用useradd来添加用户,那怎么使用useradd增加用户呢?
useradd常用参数详解
-d 指定用户家目录(默认为/home/用户名,root为/root)
-u 指定用户的uid(每个用户都有自己的uid,这个uid是系统识别用户的识别码,相当于身份证的作用)
-s 指定新用户实用的shell环境(默认为/bin/bash,如果不让此用户登录可以设置为/sbin/nologin
-r 创建系统账户
-p 设置新用户的密码
-c 指定用户的描述信息
(3)查看创建用户是否成功
Linux用户信息都保存在/etc/passwd 这个文件中,我们查看这个文件就可以知道我们创建是否成功
首先,创建用户user1
[root@Centos7 ~]# useradd -d /home/user1 user1
创建一个用户家目录为/home/user1的用户
[root@Centos7 ~]# cat /etc/passwd | grep "^user1"
user1:x:1001:1002::/home/user1:/bin/bash
从查询结果来看,用户user1已经创建成功
(4)删除用户
删除用户一般使用 userdel删除用户
使用此方式删除用户时并不会删除用户家目录,而在生产环境中一般不使用root用户进行登录系统,所以这个用户的家目录就无法被删除,那么,如何在删除用户的时候一块删除用户的家目录呢?
使用userdel的参数 -r 就可以同时删除用户及此用户的家目录,如果不加此选项,则只删除用户而不删除家目录
(5)更改用户密码
用户密码可以在创建用户的时候使用,也可以在创建用户后进行添加用户的密码
(6)创建用户时添加密码
useradd -p 用户密码
(7)添加和修改用户密码
passwd 用户名 #修改哪个用户的密码
passwd -d 用户名 #删除哪个用户的密码
passwd -i 用户名 #锁定哪个用户
passwd -u 用户名 #解锁哪个用户
passwd -n #指定密码最短有效期
passwd -x #指定密码最长有效期
passwd -w #指定密码过期前多长时间警告
passwd -i #指定密码在过期多长时间后可以修改密码
PS:普通用户只可以修改自己的密码,并且密码复杂度一定要达到要求;只有root可以修改任意用户的密码
四、/etc/passwd配置文件详解
此文件是Linux中存放用户信息的配置文件,在Linux5及以前的系统中,用户信息和密码信息一起存放在此文件中,在Linux6及以后的系统中,为了系统安全,把用户信息拆分成两个配置文件,一个专门存放用户信息(/etc/passwd),一个专门存放密码信息(/etc/shadow 后面有详细的讲解)
Linux中用户文件保存在etc下面的passwd文件中,这个文件和/etc/shadow文件共同存放用户的信息,/etc/passwd存放用户的基本信息;/etc/shadow存放用户的密码信息
/etc/shadow文件字段详解
user1:x:1001:1002::/home/user1:/bin/bash
以创建用户user1来讲,/etc/passwd文件把用户信息分为7段,每段以冒号隔开
第一段: user1 为用户的用户名,可以重复
第二段: x 为用户的密码,在Linux中为了安全,密码文件单独存放在/etc/shadow下
第三段:1001 为用户的uid,创建用户时如果不指定,默认从当前最大uid加1
第四段: 1002 为用户的主要组id
第五段: 为用户的描述信息位置
第六段: /home/user1 用户的家目录位置
第七段: /bin/bash 用户登录使用的sehll环境
五、/etc/shadow配置文件详解
/etc/shadow文件存放用户的密码信息
/etc/shadow存放了用户的密码字段,以root用户解释
[root@Centos7 ~]# cat /etc/shadow | grep "^root"root:$6$ldgklqMw25nZtVOE$XWrSlB8xexYjeJpEWkwQ/rM0D3gdvA1ChPn4kxvRPgWcXkZfuJbcdec0hPJWui1dRoZZGRh1pw3XmEh1jc92U/::0:99999:7:::
/etc/shadow把密码文件分为9段,还是以冒号隔开
第一段: root 用户名
第二段: $6$ 表示加密方式, 加密方式为sha256 $中间的数字为1 使用md5加密
$ldgklqMw25nZtVOE$ 表示用户的随机码,加密时把用户的密码和随机码一起加密
后面的字段表示加密后的密文
第三段:最后一次修改时间,这个时间为1970年1月1日到目前经过了多少天
第四段:需要多长时间才可以修改密码,0为修改后立马可以再次修改,1为一天后可以再次修改密码
第五段: 密码到期时间
第六段:到期前警告,7为7密码到期前7天警告密码即将到期,到期后无法修改密码且无法登录系统,需要管理员(root)手动修改密码后才可以登录系统
第七段:密码过期之后,延时多少天禁用账户,在这个时间内,用户可以修改密码但是不能使用原密码登录系统,修改密码后即可正常登录系统
第八段:该帐户被禁用的天数
第九段: 保留字段
六、更改用户信息
更改用户信息不一定是打开配置文件去修改文件信息,配置文件都有相应的格式信息,如果修改配置文件时少一个“:” 或者多一个“:”有可能导致系统启动失败,甚至重装系统,所以Linux为我们提供了一个修改用户信息的命令usermod
usermod命令参数详解
-g 更改主要组
-G 指定附属组
-d 指定家目录
-m 和 -d 结合使用,更改目录时,把原有家目录的文件一块移动到新的家目录中
-s 更改用户使用的默认shell
-L 锁定用户
-U 解锁用户
更改用户信息可以使用usermod 和 passwd 命令代替打开文件修改配置信息,这样可以避免更改中格式错误导致系统无法启动