用户管理
添加用户
useradd 用户名、useradd - d 指定目录 用户名
添加用户成功后,会自动创建与该用户同名的主目录 /home/用户名,当使用该用户名登陆后会自动切换到此目录;也可以为新用户指定目录,命令为 useradd - d 指定的目录 用户名
设置/修改用户密码
- passwd 用户名
password
删除用户
- userdel 用户名、userdel -r 用户名
user delete
-r,recurrence 递归,删除用户的同时删除该用户的主目录
查询用户信息
- id 用户名
切换用户
- su - 用户名
"su"是"switch user"的缩写,用于切换当前用户身份到另一个用户。
在我们登录 Linux 操作系统时应尽量少用 root 账号,因为它的权限过高可能出现较大失误,可以先登录普通用户账号,再使用命令 su - 用户名 切换成系统管理员身份
从权限高的用户切换到权限低的用户,不需要密码,反之则需要;当想要返回原来用户时使用命令exit/logout
即可。
查看当前用户信息
- whoami / who am i
所查询的用户信息为最初登录 Linux 系统时的用户,就是说即使在操作过程中切换了用户,再次查询任然显示的是登录时的用户信息
用户组
用户组类似于角色,系统中可以对有共性(权限相同)的用户进行统一管理;
-
groupadd 组名 新增组
-
groupdel 组名 删除组
-
useradd -g 用户组 用户名 添加用户时直接加入用户组(添加用户时,如果没有指定组,则会默认创建一个与用户名同名的组并将该用户加入其中)
-
usermod -g 用户组 用户名 修改用户的组
"usermod"是"modify user"的缩写,用于修改用户账户的属性。
"-g"是"group"的缩写 -
usermod -d 目录名 用户名 改变用户登录时的初始目录
"-d"是"directory"的缩写
注销用户
- logout
若切换账户后想要退回原来账户,使用注销命令 logout 注销当前账户即可;若在初始账户下再次注销则会直接退出 Linux 系统。
用户和用户组的相关文件介绍
- /etc/passwd 文件,用户的配置文件,记录用户信息(每行含义:用户名:口令:用户标识号:注释性描述:主目录:登录shell);
root | x | 0 | 0 | root | /root | /bin/bash |
---|---|---|---|---|---|---|
用户名 | 密码占位 | UID用户id | GID组id | 注释性描述 | 家目录 | 默认登录shell |
/ | x表示密码被加密存储在/etc/shadow文件中 | UID和GID都是0(代表超级用户) | / | / | 家目录是/root | 登录时使用的shell是/bin/bash |
- /etc/shadow 文件,口令的配置文件(每行含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志);
daemon:*:17834:0:99999:7:::
root | dlwsOiGa… | 19250 | 0 | 99999 | 7 | |||
---|---|---|---|---|---|---|---|---|
用户名 | 加密后的密码 | 最后一次修改密码的日期 | 最小修改时间间隔 | 密码有效期 | 密码需要变更前的警告天数 | 密码过期后宽限时间 | 账户失效日期 | 保留字段 |
-
加密密码
真正加密的密码。目前 Linux 的密码采用的是 SHA512 散列加密算法,原来采用的是 MD5 或 DES 加密算法。SHA512 散列加密算法的加密等级更高,也更加安全。
所有伪用户的密码都是 “!!” 或 “*”,代表没有密码是不能登录的。当然,新创建的用户如果不设定密码,那么它的密码项也是 “!!”,代表这个用户没有密码,不能登录。 -
最后一次修改时间
此字段表示最后一次修改密码的时间。
此字段是为了针对某些人频繁更改账户密码而设计的。 -
密码有效期
这个字段可以指定距离第 3 字段(最后一次更改密码)多长时间内需要再次变更密码,否则该账户密码进行过期阶段。
该字段的默认值为 99999,也就是 273 年,可认为是永久生效。如果改为 90,则表示密码被修改 90 天之后必须再次修改,否则该用户即将过期。管理服务器时,通过这个字段强制用户定期修改密码。 -
密码需要变更前的警告天数
与第 5 字段相比较,当账户密码有效期快到时,系统会发出警告信息给此账户,提醒用户 “再过 n 天你的密码就要过期了,请尽快重新设置你的密码!”。
该字段的默认值是 7,也就是说,距离密码有效期的第 7 天开始,每次登录系统都会向该账户发出 “修改密码” 的警告信息。 -
密码过期后的宽限天数
也称为“口令失效日”,简单理解就是,在密码过期后,用户如果还是没有修改密码,则在此字段规定的宽限天数内,用户还是可以登录系统的;如果过了宽限天数,系统将不再让此账户登陆,也不会提示账户过期,是完全禁用。 -
账号失效时间
账号在此字段规定的时间之外,不论你的密码是否过期,都将无法使用!
该字段通常被使用在具有收费服务的系统中。
- /etc/group 文件,组的配置文件,记录 Linux 中组的信息(每行含义:组名:口令:组标识号:组内用户列表);
如何找回 root 密码
-
启动 Linux 系统,待进入开机界面后按 “e” 进入编辑界面,注意此处要快,在系统进入登录页面之前进行操作;
-
进入编辑界面后,找到以“Linux 16 ”开头的内容所在行,并在行最后输入 init=/bin/sh;
-
输入完成后,按下 Ctrl+X 进入单用户模式,如下界面即为单用户模式;
-
在光标闪烁的位置输入 mount -o remount,rw /,输入完成后回车;
-
在新的行末输入 passwd 并回车,接下来输入密码、确认密码即可,修改密码成功后显示 passwd… 字样;
-
接下来在新的行末输入 touch /.autorelabel,输入完成回车;
-
新的行末继续输入 exec /sbin/init,完成后回车等待系统修改密码;
组管理
Linux 操作系统中,每个用户都属于一个组,可以切换组但必须属于一个组,除此之外每个文件也与组有着一些联系。Linux 组相关概念有 所有者、所在组、其他组。
所有者
所有者就是文件的创建者,用户创建了一个文件,这个文件的所有者就是该用户。
查看文件的所有者使用指令:ls -ahl
(提示:查看目录下的文件时,白色代表文件,蓝色代表目录,红色代表压缩文件)
-h 选项是 --human-readable 的缩写,它会以人类可读的格式显示文件大小。
修改所有者使用指令 chown
change owner 的缩写。它用于更改文件或目录的所有者和所属组。
- chown 新所有者 文件/目录 //修改文件或目录的所有者
- chown 新所有者:新组 文件/目录 //改变文件的所有者和所在组
- chown -R 新所有者 目录 //将目录下的所有文件和目录的所有者都改为新所有者(递归)
修改文件所在组使用指令:chgrp
change group
- chgrp 新组 文件/目录 //修改文件或目录的所在组
- chgrp -R 新组 目录 //将目录下的所有文件和目录的所在组都改为新组(递归)
权限管理
文件/目录详细信息的字段含义
我们使用 ls -l 命令查看当前路径下所有文件或目录的详细信息时,会显示如下格式的数据;
drwxr-xr-x. 2 root root 6 3月 4 17:23 公共
- 第 0 位:也就是第一列中的第一个字符,它代表文件类型;
- 代表普通文件
b 代表快设备,如硬盘
c 代表设备文件,入鼠标、键盘等
d 代表目录,相当于 Windows 中的文件夹
l 代表链接,相当于 Windows 中的快捷方式 - 第 1~3 位:文件的所有者对该文件的权限,如 rwx 就代表读、写、执行的权限;
- 第 4~6 位:文件所在组中的用户对该文件的权限;
- 第 7~9 位:其他组用户对该文件的权限;
- 第 10 位:文件的硬连接数或者目录的子目录数;
- 第 10 位之后分别位所有者、所在组、文件大小、最后修改日期、文件名;
rwx 权限详解
rwx 作用于文件和目录时,代表的权限并不相同;当作用于文件时:
- r(read)可读取,查看
- w(write)可修改,但不可以删除,只有对该文件所在目录有写权限时才能删除文件
- x(execute)可执行该文件,前提该文件是可执行文件
当 rwx 作用于目录时:
- r(read)可读取,ls 查看目录内容
- w(write)可修改,对目录进行创建、删除、重命名等
- x(execute)可进入该目录
修改权限-chmod
chmod 的全称是 change mode。
通过指令 chmod 可以修改文件或者目录的权限;第一种方式是通过符号 “+”、“-”、“=” 来变更权限;修改权限之前我们需要先知道所有者、所在组、其他组等分别表示的字母含义:
u(user) 所有者、g (group)所在组、o (others)其他人、a (all)所有人(u g o 的总和),如下命令:
- chmod u=rwx,g=rw,o=x 文件/目录名 //为文件或目录的所有者赋予读、写、执行的权限、为所在组赋予读、写权限、为其他人赋予执行的权限;
- chmod o+w 文件/目录名 //为文件或目录的其他人赋予写权限;
- chmod a-x 文件/目录名 //为文件或目录的所有人去掉执行权限;
第二种方式是通过数字来变更权限,r(读)权限为 4,w(写)权限为 2,x(执行)权限为 1,为文件或者目录设置权限时根据需要使用数字之和即可,如下两条命令等同:
- chmod u=rwx,g=rw,o=x 文件/目录名
- chmod 761 文件/目录名
定时任务调度
任务调度 crond
crontab 的全称是 crond table计划任务列表,是一个用于周期性被执行的任务的工具。
任务调度是指系统在某个时间执行的特定程序或命令,它是一个后台程序,所以一直在运行。使用指令 crontab 可进行定时任务调度的设置
- crontab //设置定时任务
- crontab -e //编辑 crontab 定时任务
edit - crontab -l //查询 crontab 定时任务
list - crontab -r //删除当前用户所有的 crontab 定时任务
- service crond restart //重启任务调度
设置并编辑一个定时任务
*/1 * * * * ls-l
字符 | 含义 | 范围 |
---|---|---|
第一个 * | 一小时的第几分钟 | 0~59 |
第二个 * | 一天中的第几个小时 | 0~23 |
第三个 * | 一月中的第几天 | 1~31 |
第四个 * | 一年中的第几月 | 1~12 |
第五个 * | 一周中的星期几 | 0~7(0、7均为星期日) |
任务调度 crond 其他特俗符号含义如下:
- 【*】:任何时间
- 【,】:不连续时间,例如 [0 8,10,14 * * * 指令] 代表每天的 8:00、10:00、14:00 都执行一次命令
- 【-】:连续时间,例如 [20 16 * * 1-5 指令] 代表每周的周一到周五的 16:20 都执行一次该指令
- 【/n】:每隔多久执行一次,例如 [/5 * * * * 指令] 代表每隔 5 分钟执行一次指令
一次性定时任务 at
通常的定时任务调度是按照周期反复执行的,如果我们希望某个定时任务是一次性的,也就是只在规定的时间执行一次,那么就需要用到定时任务 at。
设置一次性定时任务使用指令 at 选项 时间 ,输入后两次按下 Ctrl+D 结束输入。at 命令各选项如下:
选项 | 含义 |
---|---|
-m | 指定的任务完成后,给用户发送邮件 |
-i | 查询任务,相当于指令 atq |
-d | 删除任务,相当于指令 atrm |
-v | 显示任务被执行的时间 |
-c | 打印(输出)任务内容 |
-v | 显示版本信息 |
-q<队列> | 使用指定队列 |
-f<文件> | 从指定文件读取任务而不是从标准输入 |
-t<时间参数> | 以时间参数的形式提交要运行的任务 |
at 命令时间的指定格式如下:
- 使用小时:分钟式指定时间,如 06:00 代表今天的凌晨六点支持,如果此时间已过去,则放到第二天;
- 使用英文单词指定,比如 noon(中午)、teatime(下午茶时间,下午4点)、midnight(半夜)等,时间表示比较模糊;
- 使用 12 小时进制,然后再在时间后面加上 pm(下午)、am(上午)来说明一天的时间,例如 6am 就是早上六点;
- 使用标准时间格式,如 mm/dd/yy、dd.mm.yy、或者 12:00 2022-04-04;
- 使用相对计时法,now 表示现在,然后在 now 后加上需要的时间以及单位,例如 now+5hours 表示距现在五小时后,还有其他单位如 minutes(分钟)、days(天)、weeks(星期);
- 直接使用 today(今天)、tomorrow(明天)来指定。
原理:定时任务 at 拥有守护进程 atd,守护进程会每 60 秒检查任务队列,如果该任务的运行时间与设置的时间匹配,则运行此任务,否则停止任务。
使用 at 指令的前提是 atd 进程已启动,可使用指令 ps -ef | grep atd 检测当前正在运行的进程。如下说明 atd 进程已启动。
举例:两天后的上午 7 点执行命令 ls /home;
如上图信息,第一列为进程编号,删除进程时使用指令 atrm 编号 即可;