个人整理笔记
韩顺平 2021 一周学会 Linux 部分笔记 1-5 节
1. shutdown/halt/reboot 关机&重启指令
shutdown -h now
立刻关机shutdown -h 1
1分钟后关机shutdown
与上一条含义相同shutdown -h
与上一条含义相同shutdown -r now
立即重启shutdown -r 1
1分钟后重启shutdown -c
取消上面的关机/重启命令halt
保存数据reboot
立即重启,同 5 条halt
立即关机,同 1 条sync
保存数据,防止内存中的数据丢失
细节:
- 不论是重启还是关机,首先要运行 sync 指令,防止数据丢失
- 目前的 关机/重启指令已经内部调用了 sync 指令,但在生产环境中,为保证安全应人为调用一次 sync
- 只有shutdown指令,才能指定关机时间。halt/reboot 都是立即执行
2. 用户登录/切换和注销
1. su/logout/exit 登录与注销
-
常用命令
su - 用户名
切换到对应用户名的用户,注意中间的 - 两边有空格
su - lilixxs
切换到用户“lilixxs”su - root
切换到 root 用户su -
同上,切换到 root 用户,用 logout 退出su
切换到 root 用户,只是权限,但终端配置仍为用户终端,用 exit 退出logout
注销此账户exit
退出此账户权限
-
基本介绍:
- 登录时尽量少用 root 账号登录,因为 root 账号权最大,易造成操作失误
- 切换root用户的方法:使用一般用户登录,登录后再使用 su -root 切换为root
- 执行单条root命令的方法:sudo + 命令
- 从高权限用户切换到低权限用户,无需输入密码
从低权限用户切换到高权限用户,需要输入密码
-
注意:
- logout命令只在 运行级别3 下有效,在有桌面显示的图形界面下无效
如:本体图形界面下的终端中无效,在远程命令行界面的终端中有效 - su 命令和 su - 命令的区别:
su root
只是切换了root权限,但 Shell 环境仍然是之前普通用户的Shell;su - root
连权限和 Shell 环境一起切换成 root 身份了。
- 只有切换了Shell环境才不会出现PATH环境变量错误,报command not found的错误。
- su 切换成 root 用户以后,pwd 一下,发现工作目录仍然是普通用户的工作目录
- 而用su -命令切换以后,工作目录变成 root 的工作目录了。用 echo $PATH 命令看一下 su 和 su - 后的环境变量已经变了。
- logout命令只在 运行级别3 下有效,在有桌面显示的图形界面下无效
2. Shell 切换与运行级别切换
1. chsh Shell 切换
-
Shell 基本介绍
Shell 是一个命令行解释器,它为用户提供了一个系统级程序:向 Linux 内核发送请求以便运行程序。用户可用 Shell 来启动、挂起、停止,甚至是编写一些处理程序
- 通俗来说,Shell 是 Linux 系统的命令行界面,类似 Windows 系统的 cmd 和 powershell
- 同一个系统可安装多个 Shell,如 Windows 系统下,可使用 cmd 或 powershell。
不同 Shell 会提供一些额外的功能,如快捷键、插件、配色、shell 变量等功能,提供更便捷的命令交互体验 - 一个命令行窗口同一时间只能指定一种 shell,但可使用
chsh
命令切换 shell
-
查看当前系统安装的 Shell:
chsh -l
-
更改某一用户默认的 Shell:
chsh -s 要切换的shell的完整路径 [用户名]
- 要切换的shell的完整路径:可使用
chsh -l
命令查看 - 若省略用户名,则对当前命令窗口登录的用户进行修改
- 要切换的shell的完整路径:可使用
-
运行对应的 Shell:
exec shell的名称
这种设置只是临时设定,开启新的 Shell 窗口时,依然会使用默认的 Shell 界面
2. init 运行级别
-
基本介绍
运行级别说明
0:关机
1:单用户(找回丢失密码)
2:多用户,但没有网络服务
3:多用户,且有网络服务(远程登录)
4:保留,用户可自定义的级别
5:图形界面,多用户且有网络服务
6:系统重启
常用运行级别:3、5
也可指定默认运行级别 -
切换运行级别
init +运行级别(0-6)
init 5
切换到图形界面级别
init 0
关机-
利用运行级别,可以切换纯命令行界面 <–> 图形界面
-
也可利用运行级别实现系统的重启、关机等操作
作用类似shutdown
/halt
/reboot
等指令
-
-
指定默认运行级别
通过修改配置文件进行设定
centos 7 以前的系统:/etc/inittab
文件
centos 7 以后的系统:
multi-user.target
与 level 3 含义相同
graphical.target
与 level 5 含义相同- 获取系统默认运行级别
systemctl get-default
- 设置默认运行级别
systemctl set-default +上边两种级别的英文
- 获取系统默认运行级别
3. 用户管理
-
基本介绍
Linux系统是一个多用户,多任务的操作系统,任何一个要使用系统资源的用户,都必须首先先系统管理员申请一个账号,然后以这个账号登录系统
不同用户有不同的应用数据,可授予不同的权限
1. useradd 添加用户
-
基本语法
useradd 用户名
-
应用案例
useradd Ming123 添加一个用户 Ming123
-
细节说明
-
当创建用户成功后,会自动创建与用户同名的家目录(位于 /home 目录下)
-
给新创建的用户指定用户目录(主目录 / 家目录)
useradd -d 指定目录的路径 新用户名
# 添加用户 PigAA,指定其用户目录 /data useradd -d PigAA /data
-
给新创建的用户指定所在组
useradd -g 所在组名 用户名
# 添加用户 CatBB,指定其所在组 Baosight useradd -g Baosight CatBB
-
2. whoami 查看当前用户
- 基本语法:英文”我是谁“——Who am I?
whoami
3. usermod 修改用户
-
修改用户名
usermod -l 新用户名 原用户名
此指令在用户使用此账户远程登录时不可用
将用户 lilixxs 更名为 lxyusermod -l lxy lilixxs
-
修改用户的家目录(主目录)
直接指定用户的家目录,要求此目录存在且权限正确,否则报错
usermod -d 新的主目录地址 用户名
# 将用户 lilixxs 的主目录改为 /home/baosight usermod -d /home/baosight lilixxs
-
移动用户的家目录(主目录)
将原用户的主目录下的文件移动到新目录下,若新目录不存在,则新建对应目录
usermod -md 新的主目录路径 用户名
# 将用户 lilixxs 的主目录移动到 /home/lilixxs/ 目录下 usermod -md /home/lilixxs lilixxs
-
切换用户到单一用户组
usermod -g 新用户组 用户名
# 将用户 Ming123 切换到用户组 Baosight usermod -g Baosight Ming123
-
切换用户到多个用户组
usermod -G 用户组1,用户组2,... 用户名
# 将用户 lilixxs 切换到 Baosight, Ba0sight, g1, g2 用户组中 usermod -G Baosight,Ba0sight,g1,g2 lilixxs
-
追加用户到其他组
新增用户到新的用户组,不改变原用户组
usermod -aG 新用户组 用户名
# 将用户 lxy-baosight 添加到 baosight 用户组 usermod -aG baosight lxy-baosight
3. passwd 指定/修改密码
-
基本语法:
passwd 用户名
回车后输入密码,再回车确认 -
应用案例
为 Ming123 指定密码passwd Ming123
-
扩展
-
为当前登录的用户修改密码:指令后省略用户名,直接回车
passwd
-
关于输入弱密码时的提示,若没有采用安全策略,则即使提示为错误的弱密码,也可顺利更改
-
4. userdel 删除用户
-
应用案例
-
删除用户,并删除用户家目录
userdel -r + 用户名
# 删除 Ming123 账户及此账户对应的家目录 userdel -r Ming123
-
删除用户,但保留家目录
userdel + 用户名
# 删除 PigAA 账户及此账户对应的家目录 userdel PigAA
-
-
细节说明
-
删除用户,并删除用户家命令的操作要慎重,一旦执行,对应用户家目录下的所有文件都会被清空
-
是否要删除用户的家目录?
如果不是必须删除,建议保留,有可能用于交接、查疑等工作,一旦删除就无法再恢复了 -
删除用户后,如何手动删除用户的家目录?
chmod + rm -rf
强制修改文件夹的操作权限并强制删除
还要记得删除/var/spool/mail
目录下的对应目录,保证下次重建用户时不报错
-
5. id 查询用户信息
-
基本语法
id + 用户名
id lilixxs # 查询用户 lilixxs 的信息 id root # 查询用户 root 的信息
-
细节说明
-
当用户不存在时,返回“无此用户”
-
若
id
命令后不加用户名,则查询的是当前使用的用户信息
-
4. 用户组
1. groupadd/groupdel 新增和删除用户组
-
用户组介绍
系统可对有共性(用相同权限)的多个用户设为一个用户组,进行统一管理。类似数据库系统中的角色 -
新增组
groupadd + 组名
# 添加用户组 Baosight groupadd Baosight
-
删除组
groupdel + 组名
# 删除用户组 Baosight groupdel Baosight
-
新建用户时同时添加到对应的组中
useradd -g +用户组 +用户名
# 新建用户 lxy-baosight 并加到 Baosight 用户组 useradd -g Baosight lxy-baosight
-
注意
- 若在新建用户时没有指定组,则系统会新建一个与新用户同名的组,并将此用户加入此组中
2. groupmod/usermod 修改用户组
-
切换用户到单一用户组
usermod -g +新用户组 +用户名
# 将用户 Ming123 切换到用户组 Baosight usermod -g Baosight Ming123
-
切换用户到多个用户组
usermod -G +用户组1,用户组2,... 用户名
# 将用户 lilixxs 切换到 Baosight, Ba0sight, g1, g2 用户组中 usermod -G Baosight,Ba0sight,g1,g2 lilixxs
-
添加用户到其他组
新增用户到新的用户组,不改变原用户组
usermod -aG +新用户组 +用户名
# 将用户 lxy-baosight 添加到 baosight 用户组 usermod -aG baosight lxy-baosight
-
修改用户组名称
groupmod -n +新用户组名 原用户组名
# 将用户组 Baosight 更名为 Ba0sight groupmod -n Ba0sight Baosight
-
删除用户组
groupdel +用户组名
# 删除用户组 Ba0sight groupdel Ba0sight
-
与用户组有关的几个目录
-
/etc/passwd 文件
用户(user)配置文件,记录用户的各种信息
每行的意义:用户名:是否有口令(有口令标记为X):用户id(uid):组id(gid):注释:家目录:登录Shell -
/etc/shadow 文件
口令(密码)的配置文件
每行的意义:登录名:加密口令:口令最后修改时间:修改最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
- 口令使用特殊方式加密显示
- 若创建用户后没有设定密码,则显示 !!;若设定了密码则显示加密后的口令
-
/etc/group 文件
组(group)的配置文件,记录Linux包含的组的信息
每行的含义:组名:口令(有口令标记为X):组织编号(gid):组内用户
-
5. 实用指令
1. 找回 root 密码
上网找教程,不同版本的系统步骤略有不同
2. man/help 帮助指令
-
man 帮助手册
man +要查看的指令/配置文件
man ls
查看指令 ls 的帮助手册 -
help 帮助指令
help +要查看的指令
help cd
查看 cd 命令的帮助信息