内容索引
用户管理
安全上下文:linux操作系统上,用户执行程序,就会启动一个与用户相关的进程(即进程的用户是启动程序的用户,对程序的权限),这个进程对资源的权限,取决于进程用户对资源的操作权限。
用户
用户:系统的使用者,如某某公司的张某;
系统用户:和用户相关联的标识符,如root,sshd、mail;
用户分类
根据用户的UID的不同,可以分为:
- 超级用户:uid为0
- 系统管理/服务用户:uid为1~999,如系统上的sshd、mail、adm这些用户
- 普通用户:uid为1000~65535,如使用useradd USERNAME创建的用户
用户组
为了方便对用户进行批量管理,将一个或多个用户放入一个组里面,组里的所有用户都具有和组相关的权限。
用户组分类
- 附加组:要让用户加入附加组,这个附加组必须已经存在。
- 私有组:使用adduser会为用户分配一个与用户同名的一个组。
- 基本组:/etc/passwd中用户对应的组。
用户、组库文件
为了方便管理用户和用户组,将数据存放在某一个文件中,记录这个用户或用户组的相关信息。这些文件如下:
- 用户信息:/etc/passwd
root:x:0:0:root:/root:/bin/bash
特点:用“:”分割每个字段,每个字段都有不同的含义
字段1:root:用户标识符(用户名)
字段2:x:用户密码
字段3:0:用户id
字段4:0:用户组id
字段5:root:注释信息
字段6:/root:用户家目录,超级用户的家目录在/root目录下,其他用户默认的家目录为/home/USERNAME
字段7:/bin/bash:用户登录后启动的默认shell程序 - 密码信息:/etc/shadow
root:\$6\$UruBqy/D$QffFf4w6OiARF8aT0Eej5yp7ommFbwsalNZZL3O6v74GBVc7B7MpJeBXqJxnxhMFEZeUHX1ncBct/ChTt/nRC/:18331:0:99999:7:::
字段1:root:用户名
字段2:字符串和特殊字符:加密过后的密码,若密码前面有!或者密码字段为空,对应用户是不能登录的
字段3:18331:从1970年1月1日0:0:0到最后一次修改密码所经过的天数
字段4:0:密码最短"寿命",单位为"天",期间不能修改,0表示随时都可以修改
字段5:99999:密码的最长寿命,单位为"天",表示还有多少天后,用户登录后提示必须修改密码
字段6:7:密码过期前多少天给用户提示
字段7::密码过期后多少天禁用登录,未设置表示不禁用
字段8::YYYY-MM-DD账号过期时间==
字段9::保留字段
简单说明下加密方式:
1.秘钥加密:加密和解密都是使用同一个秘钥
2.公钥加密:加密和解密使用一对秘钥对完成,一般有一个秘钥和一个公钥
3.单向加密:不可逆,文件发生变化,密码会发生雪崩的变化;一般用来做数据校验和各种智能识别技术 - 组信息:/etc/group
root:x:0:test1
字段1:root:组名
字段2:x:组密码
字段3:0:GID组id号
字段4:test1:该组的附加用户
用户、组管理命令
了解了上面/etc/passwd、/etc/shadow、/etc/group
三个文件每个字段的意义之后,就可以向这三个文件来添加内容来新增用户了。linux上的用户也可以通过下列命令来添加。
useradd命令
- 命令解释:添加用户
- 选项[OPTION]:
-u:指定用户uid
-g:指定用户基本组gid或者group名
-G:指定用户的附加组,多个附加组用,隔开
-d:directory指定用户家目录
-s:指定用户默认的shell程序
-m:创建用户的家目录
-M:不创建用户家目录
-r:创建一个系统用户(centos7中系统用户id号小于999)
-c:注释信息
id命令
- 命令解释:查看有效用户id和组id信息
- 选项[OPTION]:
-u:查看用户对应的id号
-g:查看用户对应的组id号
-n:name,配合-u和-g一起使用表示查看用户名和组名
-G:查看基本组id和附加组id,也可以配合-n选项一起使用
finger命令
- 命令解释:查看用户的注释信息
~]# finger test1
Login: test1 Name:
Directory: /home/test1 Shell: /sbin/nologin
Never logged in.
No mail.
No Plan.
chfn命令
- 命令解释:修改用户finger信息
~]# chfn test1
Changing finger information for test1.
Name []: lg
Office []: abc
Office Phone []: 170
Home Phone []: 250
Finger information changed.
[root@git ~]# finger test1
Login: test1 Name: lg
Directory: /home/test1 Shell: /sbin/nologin
Office: abc, 170 Home Phone: 250
Never logged in.
No mail.
No Plan.
usermod命令
- 命令解释:修改用户信息
- 选项[OPTION]:
-d:指定用户新的家目录,一般和-m选项一起使用
-m:移动家目录到新的家目录下
-f:密码过期多少天后禁用该用户
-e:YYYY-MM-DD账号过期时间
-g:指定用户基本组id或组名
-G:指定用户的附加组
-L:lock禁用一个用户
-U:unlock解禁一个用户
-u:修改uid
-s:指定新的shell
passwd命令
- 命令解释:设置用户密码
- 命令选项:
–stdin:从标准输入中读取密码
-l:锁定用户密码
-u:解锁用户密码
-x:密码最大使用期限
-n:密码最短寿命
-w:密码最大使用期限前多少天提示
-i:密码最大使用期限之后多少天后禁用密码
-d:删除用户密码
-e:将用户的密码设置为过期
pwck命令
- 命令解释:检查密码文件的完整性
userdel命令
- 命令解释:删除用户账号和相关文件
- 选项:
-r:删除家目录
groupadd命令
- 命令解释:创建一个新的组
- 选项:
-g:指定组号
-r:创建一个系统组
groupmod命令
- 命令解释:修改组信息
- 选项:
-g:指定新的组id
-n:指定新的组名称
groupdel命令
- 命令解释:删除一个组
gpasswd命令
- 命令解释:管理/etc/group和/etc/shadow,可给group创建组密码
- 选项:
-a:添加一个用户到一个组
-d:从某个组中删除用户
newgrp命令
- 命令解释:临时登录某个组
~]# gpasswd test2 ##交互式给test2组设置密码
Changing the password for group test2
New Password:
Re-enter new password:
[root@git ~]# su - test1 ##切换到test1
Last login: Thu Jun 4 14:10:10 CST 2020 on pts/0
[test1@git ~]$ cd /tmp ##创建c.txt,文件属主是test1
[test1@git tmp]$ touch c.txt
[test1@git tmp]$ ll c.txt
-rw-rw-r-- 1 test1 test1 0 Jun 4 14:11 c.txt
[test1@git tmp]$ newgrp test2 #登录到test2组
Password:
[test1@git tmp]$ touch c1.txt #创建的文件属组是test2
[test1@git tmp]$ ll c1.txt
-rw-r--r-- 1 test1 test2 0 Jun 4 14:12 c1.txt
#注:退出test2组,可以使用exit命令
用户相关的其他命令
who系列
- who命令:显示登录到系统的用户信息。
- whoami命令:显示登录系统的当前用户(su -l USER登录的用户也生效)。
- who am i命令:显示登录系统的当前用户信息。
w命令
- 命令解释:显示登录当前系统的用户,总登录用户,系统运行时间,正在执行的命令,系统的负载信息。(不记录su -l USER登录的用户)
last命令
- 命令解释:记录所有用户的登录信息,系统关机信息。读取/var/log/wtmp中的内容。
lastlog命令
- 命令解释:显示所有用户最后一次登录的信息。
lastb命令
- 命令解释:显示用户登录失败信息。读取/var/log/btmp中的内容。