参考文章:http://t.csdn.cn/rFZxy

用户管理

添加用户

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 11dlwsOiGa… 19250 0 99999 7
用户名 加密后的密码 最后一次修改密码的日期 最小修改时间间隔 密码有效期 密码需要变更前的警告天数 密码过期后宽限时间 账户失效日期 保留字段
  • 加密密码
    真正加密的密码。目前 Linux 的密码采用的是 SHA512 散列加密算法,原来采用的是 MD5 或 DES 加密算法。SHA512 散列加密算法的加密等级更高,也更加安全。
    所有伪用户的密码都是 “!!” 或 “*”,代表没有密码是不能登录的。当然,新创建的用户如果不设定密码,那么它的密码项也是 “!!”,代表这个用户没有密码,不能登录。

  • 最后一次修改时间
    此字段表示最后一次修改密码的时间。
    此字段是为了针对某些人频繁更改账户密码而设计的。

  • 密码有效期
    这个字段可以指定距离第 3 字段(最后一次更改密码)多长时间内需要再次变更密码,否则该账户密码进行过期阶段。
    该字段的默认值为 99999,也就是 273 年,可认为是永久生效。如果改为 90,则表示密码被修改 90 天之后必须再次修改,否则该用户即将过期。管理服务器时,通过这个字段强制用户定期修改密码。

  • 密码需要变更前的警告天数
    与第 5 字段相比较,当账户密码有效期快到时,系统会发出警告信息给此账户,提醒用户 “再过 n 天你的密码就要过期了,请尽快重新设置你的密码!”。
    该字段的默认值是 7,也就是说,距离密码有效期的第 7 天开始,每次登录系统都会向该账户发出 “修改密码” 的警告信息。

  • 密码过期后的宽限天数
    也称为“口令失效日”,简单理解就是,在密码过期后,用户如果还是没有修改密码,则在此字段规定的宽限天数内,用户还是可以登录系统的;如果过了宽限天数,系统将不再让此账户登陆,也不会提示账户过期,是完全禁用。

  • 账号失效时间
    账号在此字段规定的时间之外,不论你的密码是否过期,都将无法使用!
    该字段通常被使用在具有收费服务的系统中。


  • /etc/group 文件,组的配置文件,记录 Linux 中组的信息(每行含义:组名:口令:组标识号:组内用户列表);

如何找回 root 密码

  1. 启动 Linux 系统,待进入开机界面后按 “e” 进入编辑界面,注意此处要快,在系统进入登录页面之前进行操作;
    9da4e5102b7441fa8ad316e8ccce6394

  2. 进入编辑界面后,找到以“Linux 16 ”开头的内容所在行,并在行最后输入 init=/bin/sh;
    e42d4ffe75c541b0bdc425167c112725

  3. 输入完成后,按下 Ctrl+X 进入单用户模式,如下界面即为单用户模式;
    bd88685868774e6f9bbd1df3f45eecb3

  4. 在光标闪烁的位置输入 mount -o remount,rw /,输入完成后回车;
    c0bda292c8ff4b56ba6f2939b85bfdc8

  5. 在新的行末输入 passwd 并回车,接下来输入密码、确认密码即可,修改密码成功后显示 passwd… 字样;
    65db8e69ed7e4f66a58cd4caf5290064

  6. 接下来在新的行末输入 touch /.autorelabel,输入完成回车;

  7. 新的行末继续输入 exec /sbin/init,完成后回车等待系统修改密码;
    9c55846e3987429ea1c2963228bda617

组管理

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 进程已启动。
f3cc18beff97454487919a186269c8ff

举例:两天后的上午 7 点执行命令 ls /home;
f9718c1add2741f5bc5061b575523d7e

如上图信息,第一列为进程编号,删除进程时使用指令 atrm 编号 即可;
c482895ebfa8452d97ac7137fb876f49