1. 账户和工作组的分类
1.1. 用户分为三类:
超级账户——账户名为root,它具有一切权限,只有进行系统维护(例如:建立用户等)或其他必要情形下才 用超级用户登录,以避免系统出现安全问题。
系统账户——是Linux系统正常工作所必需的账户,主要为了满足相应的系统进程对文件属主的要求而建立 的,如:bin、daemon、adm、sshd等,注意:系统账户不能登录,用于进程访问。
普通用户——是为了让使用者能够使用Linux系统资源而建立的,大多数用户属于此类。
1.2. 工作组分析两类:
基本组(私有组):新建立账户时,若没有指定账户所属的工作组,会建立和账户名相同的组
扩展组(公有组):可以容纳多个用户,组中的账户都具有组所拥有的权利。
1.3. 账户和工作组的配置文件
账户名、密码、工作组信息和工作组密码存储在以下配置文件中
1.3.1. 用户账号文件
/etc/passwd 是一个文本文件,用于定义系统的账号,由于所有账户都对passwd有读权限,所以该文件中 只定义用户账号,而不保存口令。
/etc/passwd 中的文件内容及含义:
root:x:0:0:root:/root:/bin/bash
账户名:密码(加密后的代号):账户编号(uid):工作组的编号 组id(jid):注释:家目录:账户在登陆时所用到的解释器名称(shell解释器)
/etc/passwd文件中字段说明:
由7个字段组成,字段之间用“:”分隔,意义:账号名:密码:UID:GID:个人资料:主目录:Shell
账号名:用户登录Linux系统时使用的名称。
密码:以前是以加密格式保存密码的位置,现在密码保存在/etc/shadow文件中,此处只是密码占位 符“x”或“*”。若为“x”,说明密码经过了shadow的保护。
UID:账户的ID值,是一个数字标识,相当于账户的“身份证编号”,具有唯一性
root账户UID——0
系统账户的UID——1~999
普通账户的UID——≥1000
注意:普通账户从1000开始编号,连续编号,即使系统管理员某些账户号码未使用,普通账户 也不可使用
GID:基本组的ID值,用来区分不同的工作组,相同的组具有相同的GID。
个人资料:注释信息,可以记录账户的完整姓名、地址、办公室电话、家庭电话等个人信息。
家目录:类似Windows 的个人目录,通常是/home/账户名
Shell:定义用户登录后激活的Shell,默认是Bash Shell
id 命令
作用:查看账户的UID、GID等信息
格式: id 账户名
1.3.2. 用户密码文件
/etc/shadow存储密码加密后的密文,又称为“影子文件”,该文件为了保证了账户密码的安全性只有 root 账户拥有读权限,注意:若该文件权限发生变化,需要留心恶意攻击
[root@server ~]# ll /etc/shadow
----------. 1 root root 1130 4月 26 14:39 /etc/shadow
[root@server ~]# head -1 /etc/shadow
root:$6$u6dOBCaz335byzFq$WcZK5t3EAHzCxy0AP8rscP/CrM/SZLzZZDCzkE2T6yiVpnSz92iWt/wd4j L9oBfFglbVrdhsUmRCVfWKTqNdv/::0:99999:7:::
/etc/shadow文件中的每行9个字段的含义为:
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
1.3.3. 工作组账号文件
/etc/group文件存储每个组工作组信息
[root@server ~]# ll /etc/group
-rw-r--r--. 1 root root 810 4月 26 14:39 /etc/group
[root@server ~]# head -1 /etc/group
root:x:0:
字段说明:
2. 用户管理
2.1. 添加新用户
格式:
useradd -参数 账户名
参数:
-c 注释信息:设置相关的说明信息,如,:真实姓名、邮箱地址等。
-d:目录:设定账户的家目录(默认为/home/用户名)。
-e YYYY-MM-DD:设置用户的失效日期,此日期后将不能使用该账号。
-f 天数:指定密码到期后多少天账号被禁用,若指定为0,则表示账号到期后被立即
禁用;若指定 为-1,则表示 账号过期后不被禁用(即密码永不过期)。
-g 组名或GID号:为账户指定所属的基本组,该组在指定时必须已存在。
-G:组名或GID号列表:为账户指定所属的扩展组,各组在指定时已存在,附加组可
以有多个,组之间用“,”分隔。
-M:不创建账户家目录。
-N:不创建与账户名同名的基本组。
-p:密码:指定账户的登录密码。
-s shell名:指定账户登录后使用的Shell,默认是bash。
-u 用户号:设置账号的UID,默认是已有账户的最大UID加1。如果同时有-o选项,则‘
可以重复使用其他用户的标 识号。
2.1.1例:
例1:新建账户test1,查看对应配置文件和家目录
给test设置一个密码,
例2:新建账户test2,指定UID为2001、登录Shell为/bin/bash,账号永不过期
[root@server ~]# useradd test2 -u 2001 -s /bin/bash -e -1
观察test1与test2 的密码文件区别。
例3:新建用于访问FTP的test3账户,禁止其登录且不创建家目录
[root@server ~]# useradd test3 -M -s /sbin/nologin
例4:新建账户test4,UID=3001, 工作组=test1 , 家目录=/test
[root@server ~]# useradd test4 -u 3001 -g test1 -d /test
2.2. 修改账户信息
格式:
usermod -参数 账户名
参数:
常用参数 -c,-d,-m,-g,-G,-s,-u 等,意义与useradd命令中的参数相同
-l 新账户名:更改账户的名称,必须在该用户未登录的情况下才能使用
-L:锁定(暂停)用户账户,使其不能登录使用
-U:解锁用户账户
例
例1:将用户test1的名称修改为TEST1,并暂停使用该账号
[root@server ~]# usermod test1 -l TEST1 -L
例2:将上例账户test4的家目录移至/home/test4目录下
[root@server ~]# mkdir /home/test4
[root@server ~]# usermod test4 -d /home/test4
2.3. 账号设置密码
原则:
Linux的账户必须设置密码后,才能登录系统
格式: passwd - 参数 账户名
参数:
-d:清空指定用户的口令,与未设置口令的账户不同,未设置口令的账户无法登录系统,而口令为空的账户可以。
-e:使用户的账号密码立即过期,强迫用户下次登录时必须修改口令。
-i:口令过期后多少天停用账户。
-l:锁定(停用)用户账户。
-n:指定口令的最短存活期。
-x:指定密码的最长使用期限。
-u:解锁用户账户。
例:
例1:设置root账户密码
[root@server ~]# passwd root
更改用户 root 的密码 。
新的密码:
无效的密码: 密码少于 8 个字符
重新输入新的密码:
passwd:所有的身份验证令牌已经成功更新。
例2:锁定账户test4,尝试登录
[root@server ~]# passwd -l test4
注意:
非交互式的为用户设置密码:
密码不能为空
密码不要写成回文
可以使用以下命令设置密码
echo 密码 | passwd --stdin 用户名
echo 密码 | passwd --stdin 用户名 > /dev/null # 无信息提示(黑洞)
--stdin:从标准输入来接收
修改test4 的密码:
只有 root 用户才能指定用户名:
[root@server ~]# useradd test5
交互式的为test5 设置密码:
[root@server ~]# passwd test5
更改用户 test5 的密码 。
新的密码:
无效的密码: 密码少于 8 个字符
重新输入新的密码:
passwd:所有的身份验证令牌已经成功更新。
[root@server ~]# su test5
[test5@server root]$ passwd test5
passwd:只有 root 户才能指定用户名
非交互式的为test5 设置密码:
[root@server ~]# echo "123456" | passwd --stdin test5
2.4. 删除账号
格式
userdel 账户名
参数
-r:在删除该账户的同时,一并删除该账户对应的家目录
例:
例:删除上例的TEST1、test2、test3、test4
[root@server ~]# userdel -r TEST1
[root@server ~]# userdel -r test2
[root@server ~]# userdel -r test3
[root@server ~]# userdel -r test4
2.5 账户切换
格式: su 账户名
su - 账户名
2.5.1. su和su - 命令区别:
区别:加载的配置文件不一样
su 切换方式加载的文件: ~/.bashrc,/etc/bashrc(当前解释器shell配置文件)
su - 切换方式加载的文件: /etc/bashrc,/etc/profile,~/.bashrc,~/.bash_profile
注意:su - 相当于重新建立环境,若全局变量需要继续使用则不能使用su - 命令
2.5.2. 注意
从root用户切换到任何用户不需要密码验证,而从普通用户到root或其他普通用户均需要输入目标用户的 密码且验证成功后才可切换。
2.6. 控制用户对系统命令的使用权限(sudo )
2.6.1. 作用
使用 sudo 命令可以提高普通用户的操作权限,使用前需要root进行配置(临时提权)
只有在管理员同意的情况下才可以进行临时提权
例:
2.6.2. sudo的执行流程如下:
当执行sudo提权时,需要输入自己密码来确认(root执行sudo时不需要输入密码)
若密码输入成功,系统会去/etc/sudoers文件中查找该用户是否有执行sudo的权限
若用户具有执行sudo的权限,便开始sudo后续接的命令;
2.6.3. 配置/etc/sudoers文件方式
执行visudo 或 vim /etc/sudoers