云计算 SRE 运维 —— 第一周
开源许可证
在开源领域中,许可协议是指开源社区为了维护作者和贡献者的合法权利,保证软件不被一些商业机构或个人窃取,影响软件的发展而开发的协议
MIT
MIT是和BSD一样宽范的许可协议,作者只想保留版权,而无任何其他了限制,也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的
特点:
- 你可以使用,复制和修改软件
- 你可以免费使用软件或出售
- 只有一点限制:所有应用必须包含版权声明和许可声明
- 可以用开源代码的作者/机构名字和原来产品的名字做市场推广
BSD
BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布
协议特点:
-
只需要把原来的BSD协议包含进来
-
如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议
-
如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议
-
不可以用开源代码的作者/机构名字和原来产品的名字做市场推广
Apache
该协议和BSD类似,鼓励代码共享和尊重原作者的著作权,允许代码修改、再发布(作为开源或商业软件)
协议特点:
- 如果你修改了代码,需要在被修改的文件中放置版权说明
- 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明
- 使用者可以在需要的时候修改代码来满足需要,并作为开源或商业产品发布/销售
LGPL
LGPL(宽松公共许可证):不要求使用与部分代码相同的 License,LGPL比较适合连接到非GPL或者非开源文件的库文件
特点:
- 商业软件可以使用,但不能修改LGPL协议的代码
- 对源码修改之处,不需要提供说明文档
Mozilla
Mozilla协议允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者,这种授权维护了商业软件的利益,它要求修改后的软件版权需要无偿共享给源软件发起者。这样,围绕该软件的所有代码的版权都集中在发起开发人的手中。但MPL是允许修改,无偿使用的。MPL软件对链接没有要求
协议特点:
-
维护了商业软件的利益
-
修改后的代码版权归软件的发起者所有
-
允许修改,无偿使用
-
对源码修改之处,必须提供说明文档
GPL
GNU通用公共许可协议(GNU General Public License,缩写GUN GPL 或 GPL),GPL的出发点是代码的开源免费使用和引用、修改、衍生代码的开源免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售
GPL赋予和保证了开源项目开发者广泛的权利。基本上,它允许用户合法复制,分发和修改软件
协议特点:
- 当GPL协议的软件与其他协议的软件相组合、或者GPL的衍生产品,必须按照GPL的条款分发(新增代码必须采用相同许可证)
- GPL协议的软件可以用于盈利
- 保证软件源代码开源的情况下,可自由修改并发布GPL协议的软件
使用者:
- 自由运行:无时间地点限制的运行软件
- 自由修改:可以删除和添加功能
- 自由复制:你可以复制软件到任何地方,并且没有数量限制
- 自由分发:在任何地方发布你想要的软件
总结
宽松:MIT > BSD > Apache > LGPL > Mozilla > GPL

Linux发行版安装
Rocky & CentOS
- 新建虚拟机,选择自定义安装
- 稍后选择操作系统
- 选择Linux操作系统,版本选择ISO对应版本,这里安装Rocky8.6版本,选择Centos 8 64位
- 自定义虚拟机名称,自定义选择虚拟机存放位置,建议选择除C盘外的位置
- 选择虚拟机处理器数量与内核数,根据自己的环境、所需部署的项目进行合理分配,这里作为示例,仅选择1个内核数
- 选择虚拟机内存,根据自己的环境、所需部署的项目进行合理分配,这里作为示例,仅选择1G内存
- 选择网络类型
- 桥接网络:虚拟机通过 VMnet0 虚拟交换机实现与物理机在同一个局域网中,虚拟机与物理机能够互相 ping通,物理机能上网,虚拟机也能上网
- NAT模式:物理机和VMnet8虚拟网络中的NAT(网络地址转换)网关共享同一个IP,只要物理机能上网,虚拟机也能上网
- 仅主机模式:该模式下只有物理机能够上网,虚拟机无法上网,但是物理机和虚拟机之间能够互 ping
- 选择创建新虚拟磁盘,并根据需求选择磁盘大小(注意:不要勾选立即分配所有磁盘空间)
- 将虚拟磁盘合并为单个文件:提高了磁盘的读写性能,不便移动
- 将虚拟磁盘拆分位多个文件:能够更加轻松的在计算机之间移动虚拟机,更加便携,降低了大容量磁盘的性能
-
指定磁盘文件,这里默认直接下一布,然后点击完成
-
选择虚拟机镜像,勾选启动时连接,使用ISO文件
- 建议勾选处理器虚拟化,便于后续环境搭建
- 开启虚拟机
- 使用上下键进行选择,回车确认,这里选择第一项安装系统
- Install Rocky Linux 8:安装Rocky Linux 8
- Test this media & Rocky Linux 8:测试安装文件并安装Rocky Linux 8
- Troubleshooting:修复故障
- 选择虚拟机语言,点击Continue进入下一步,建议选择英语
- 选择时区
- 软件选择,这里选择最小安装
- 点击带有黄色感叹号的图标进行分区,这里不做更改,选择默认分区,直接点击Done
- 网络与主机名配置
- 账户与密码设置
- Root Password:设置Root账户密码
- User Creation:创建普通用户
- 点击Begin Installation开始安装
- 完成安装,点击Reboot System重启启动系统
- 至此系统安装完成,输入账号密码进入系统(注意:这里密码为密文,不显示),就可以执行命令开始你的Linux之路啦

Ubuntu
- 前期步骤参考Rocky和CentOS安装步骤,注意系统这里选择Ubuntu 64位,镜像使用live-server-amd64
- 打开虚拟机,选择Try or Install Ubuntu Server开始安装
- 选择语言,这里选择英语,按回车确认
- 提示有新版本,这里默认选择继续安装当前版本
- Update to the new installer:更新到最新版
- Continue without updating:不更新并继续安装当前版本
- 键盘配置,保持默认即可
- 选择安装类型,默认为Ubuntu Server,这里选择Ubuntu Server(minimized)最小安装,使用上下键移动,空格选择
- 网络配置,默认 DHCP 自动获取 IP 地址,这里保持默认即可
- 配置代理,直接跳过
- 配置 Ubuntu 系统镜像源地址,默认源为国外源,下载安装速度慢,建议换成国内源,这里以清华大学源为例
国内镜像源地址:
- 阿里云:https://mirrors.aliyun.com/ubuntu/
- 华为云:https://repo.huaweicloud.com/ubuntu/
- 清华大学:https://mirrors.tuna.tsinghua.edu.cn/ubuntu/
- 引导式存储布局配置,保持默认
- 磁盘分区,保持默认
- 弹出操作确认框,选中“Continue”并回车确认
- 配置用户名、登录密码等,根据个人情况填写
- 勾选“Install OpenSSH server”安装 OpenSSH 服务包(按空格勾选),这里一定要勾选,才能使用SSH工具连接到虚拟机
- 选择服务软件包安装,根据个人情况勾选(上下键移动,空格勾选,回车查看详细),这里不按照任何软件
- 配置完成,正式开始安装系统,可选中“View full log”并回车查看完整的系统安装日志
- 安装完成后,选中“Reboot Now”并回车以重启系统
- 如果出现“[FAILED] Failed unmounting /cdrom”错误,按下 ENTER 回车键让它继续重启
- Ubuntu系统安装完成,输入账号密码即可进入系统
- 默认情况下,Ubuntu使用远程连接工具是无法以 Root 用户登录的,需要设置一下配置文件
# 设置root用户密码
chen@chen:~$ sudo passwd root
[sudo] password for chen: # 输入当前用户的密码
New password: # 设置root密码
Retype new password: # 再次输入root密码
passwd: password updated successfully
# 切换至root用户登录
chen@chen:~$ su root
Password:
root@chen:/home/chen#
# 开启 root 用户 SSH 远程登录权限
root@chen:/home/chen# cat /etc/ssh/sshd_config | grep Root
#PermitRootLogin prohibit-password
# the setting of "PermitRootLogin without-password".
root@chen:/home/chen# sed -i 's/^#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config
# 重启 SSH Server 服务
root@chen:/home/chen# systemctl restart sshd
通过关键字获取命令
实现方法:
- apropos命令:在whatis数据库中查找字符串,列出帮助手册中任意包含关键字的命令名称和简述
- man -k:同命令apropos,搜索whatis数据库,模糊查找关键字
apropos命令
语法格式:apropos [OPTION...] KEYWORD...
# 根据关键字查找命令名称,以sytemctl、grep为例
[root@linux ~]# apropos systemct
systemctl (1) - Control the systemd system and service manager
[root@linux ~]# apropos grep
bzegrep (1) - search possibly bzip2 compressed files for a regular expression
bzfgrep (1) - search possibly bzip2 compressed files for a regular expression
bzgrep (1) - search possibly bzip2 compressed files for a regular expression
egrep (1) - print lines matching a pattern
fgrep (1) - print lines matching a pattern
grep (1) - print lines matching a pattern
grep (1p) - search a file for a pattern
msggrep (1) - pattern matching on message catalog
pgrep (1) - look up or signal processes based on name and other attributes
xzegrep (1) - search compressed files for a regular expression
xzfgrep (1) - search compressed files for a regular expression
xzgrep (1) - search compressed files for a regular expression
zgrep (1) - search possibly compressed files for a regular expression
zipgrep (1) - search files in a ZIP archive for lines matching a pattern
# 根据关键字查找描述信息,以process为例
[root@linux ~]# apropos process
_Exit (2) - terminate the calling process
_Exit (3p) - terminate a process
__clone2 (2) - create a child process
__ppc_mdoio (3) - Hint the processor to release shared resources
__ppc_mdoom (3) - Hint the processor to release shared resources
__ppc_yield (3) - Hint the processor to release shared resources
_exit (2) - terminate the calling process
abort (3) - cause abnormal process termination
abort (3p) - generate an abnormal process abort
acct (2) - switch process accounting on or off
acct (5) - process accounting file
atexit (3) - register a function to be called at normal process termination
atexit (3p) - register a function to run at process termination
awk (1) - pattern scanning and processing language
awk (1p) - pattern scanning and processing language
bootup (7) - System bootup process
chrt (1) - manipulate the real-time attributes of a process
clock (3) - determine processor time
clock_getcpuclockid (3) - obtain ID of a process CPU-time clock
clock_getcpuclockid (3p) - access a process CPU-time clock (ADVANCED REALTIME)
clone (2) - create a child process
clone2 (2) - create a child process
......
......
......
man -k
与apropos一致
[root@linux ~]# man -k grep
bzegrep (1) - search possibly bzip2 compressed files for a regular expression
bzfgrep (1) - search possibly bzip2 compressed files for a regular expression
bzgrep (1) - search possibly bzip2 compressed files for a regular expression
egrep (1) - print lines matching a pattern
fgrep (1) - print lines matching a pattern
grep (1) - print lines matching a pattern
grep (1p) - search a file for a pattern
msggrep (1) - pattern matching on message catalog
pgrep (1) - look up or signal processes based on name and other attributes
xzegrep (1) - search compressed files for a regular expression
xzfgrep (1) - search compressed files for a regular expression
xzgrep (1) - search compressed files for a regular expression
zgrep (1) - search possibly compressed files for a regular expression
zipgrep (1) - search files in a ZIP archive for lines matching a pattern
[root@linux ~]# man -k process
_Exit (2) - terminate the calling process
_Exit (3p) - terminate a process
__clone2 (2) - create a child process
__ppc_mdoio (3) - Hint the processor to release shared resources
__ppc_mdoom (3) - Hint the processor to release shared resources
__ppc_yield (3) - Hint the processor to release shared resources
_exit (2) - terminate the calling process
abort (3) - cause abnormal process termination
abort (3p) - generate an abnormal process abort
acct (2) - switch process accounting on or off
acct (5) - process accounting file
atexit (3) - register a function to be called at normal process termination
atexit (3p) - register a function to run at process termination
awk (1) - pattern scanning and processing language
awk (1p) - pattern scanning and processing language
bootup (7) - System bootup process
chrt (1) - manipulate the real-time attributes of a process
clock (3) - determine processor time
clock_getcpuclockid (3) - obtain ID of a process CPU-time clock
clock_getcpuclockid (3p) - access a process CPU-time clock (ADVANCED REALTIME)
clone (2) - create a child process
clone2 (2) - create a child process
......
......
......
获取命令man文档
man(manual,帮助手册):其功能是用于查看命令、配置文件及服务的帮助信息
man 提供命令帮助的文件,手册页存放在/usr/share/man,几乎每个命令都有man的页面
语法格式:man [参数] 对象
-
-a:在所有的man帮助手册中搜索
-
-d:检查新加入的文件是否有错误
-
-f:显示给定关键字的简短描述信息
-
-p:指定内容时使用分页程序
-
-M:指定man手册搜索的路径
-
-w:显示文件所在位置
-
-k:同命令apropos,搜索whatis数据库,模糊查找关键字
[root@linux ~]# man grep
GREP(1) General Commands Manual GREP(1)
NAME
grep, egrep, fgrep - print lines matching a pattern
SYNOPSIS
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] -e PATTERN ... [FILE...]
grep [OPTIONS] -f FILE ... [FILE...]
DESCRIPTION
grep searches for PATTERN in each FILE. A FILE of “-” stands for standard input. If no FILE is
given, recursive searches examine the working directory, and nonrecursive searches read standard
input. By default, grep prints the matching lines.
In addition, the variant programs egrep and fgrep are the same as grep -E and grep -F,
respectively. These variants are deprecated, but are provided for backward compatibility.
OPTIONS
Generic Program Information
--help Output a usage message and exit.
-V, --version
Output the version number of grep and exit.
Matcher Selection
-E, --extended-regexp
Interpret PATTERN as an extended regular expression (ERE, see below).
......
......
......
man文档说明
| 标题 | 含义 |
|---|---|
| NAME | 名称及简要说明 |
| SYNOPSIS | 用法格式说明 |
| DESCRIPTION | 详细说明 |
| OPTIONS | 选项说明 |
| EXAMPLES | 示例 |
| FILES | 相关文件 |
| AUTHOR | 作者 |
| COPYRIGHT | 版本信息 |
| BUGS | bug信息 |
| SEE ALSO | 其他帮助参考 |
语法格式说明
[ ]:可选内容
< >:必选内容
a | b 二选一
{ }:分组
...:同一内容可出现多次
范例
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [starting-point...] [expression]
[-H] [-L] [-P]等被[ ]括起来的,说明其选项都是可选的(即可以有可以没有)[-D debugopts]说明 -D 选项后还应加上相应的参数starting-point...说明可以有多个starting-point
范例
lsblk [options] [<device> ...]
<device>说明device为必选内容<device> ...说明可以出现多个device
范例
hostname [-b] {hostname|-F file}
-
hostname | -F file表示需要在 hostname 和 -F 之间选一个 -
{hostname | -F file}表示必须需要在 hostname 和 -F 之间选一个
语法范例
find [OPTION]... [查找路径] [查找条件] [处理动作]
# []表示可选内容,即可有可与,这里不选任何内容
[root@linux ~]# find
.
./.bash_logout
./.bash_profile
./.cshrc
./.tcshrc
./anaconda-ks.cfg
./.bash_history
./shell
./shell/httpd_install.sh
./.bashrc
./.viminfo
./.lesshst
# 添加[查找路径]
[root@linux ~]# find /etc/yum.repos.d/
/etc/yum.repos.d/
/etc/yum.repos.d/backup
/etc/yum.repos.d/backup/Rocky-AppStream.repo
/etc/yum.repos.d/backup/Rocky-BaseOS.repo
/etc/yum.repos.d/backup/Rocky-Debuginfo.repo
/etc/yum.repos.d/backup/Rocky-Devel.repo
/etc/yum.repos.d/backup/Rocky-Extras.repo
/etc/yum.repos.d/backup/Rocky-HighAvailability.repo
/etc/yum.repos.d/backup/Rocky-Media.repo
/etc/yum.repos.d/backup/Rocky-NFV.repo
/etc/yum.repos.d/backup/Rocky-Plus.repo
/etc/yum.repos.d/backup/Rocky-PowerTools.repo
/etc/yum.repos.d/backup/Rocky-ResilientStorage.repo
/etc/yum.repos.d/backup/Rocky-RT.repo
/etc/yum.repos.d/backup/Rocky-Sources.repo
/etc/yum.repos.d/custom.repo
# 添加[OPTION] [查找路径]
[root@linux ~]# find /etc/ -name *.conf.d
/etc/security/pwquality.conf.d
/etc/dracut.conf.d
/etc/X11/xorg.conf.d
/etc/ld.so.conf.d
/etc/polkit-1/localauthority.conf.d
/etc/krb5.conf.d
# [OPTION]...表示可以有多个OPTION
[root@linux ~]# find /etc/ -maxdepth 1 -name *.conf
/etc/resolv.conf
/etc/dracut.conf
/etc/sysctl.conf
/etc/host.conf
/etc/tcsd.conf
/etc/ld.so.conf
/etc/nsswitch.conf
/etc/idmapd.conf
/etc/sestatus.conf
/etc/libaudit.conf
/etc/logrotate.conf
fstab文件详解
将挂载保存到 /etc/fstab 文件中,实现下次开机时,自动启用挂载
每行定义一个要挂载的文件系统,其中包括共 6 项:
-
要挂载的设备或伪文件系统
-
LABEL:LABEL=""
-
UUID:UUID=""
-
伪文件系统名称:proc,,sysfs
-
磁盘设备文件
-
-
挂载点:必须是事先存在的目录
-
文件系统类型:ext4,xfs,iso9660,nfs,none
-
挂载选项:defaults ,acl,bind
-
转储频率:
- 0:不做备份
- 1:每天转储
- 2:每隔一天转储
-
fsck检查的文件系统的顺序:允许的数字是0 1 2
- 0:不自检
- 1:首先自检;一般只有rootfs才用
- 2:非rootfs使用
[root@linux ~]# cd /etc/
[root@linux etc]# cat fstab
#
# /etc/fstab
# Created by anaconda on Fri Jul 22 19:20:50 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/rl-root / xfs defaults 0 0
UUID=117730ed-beaf-492b-83ab-22c97fc30098 /boot xfs defaults 0 0
/dev/mapper/rl-home /home xfs defaults 0 0
/dev/mapper/rl-swap none swap defaults 0 0
fstab 字段定义
<file system> <dir> <type> <options> <dump> <pass>
<file system>:要挂载的分区或存储设备
<dir>:挂载位置
<type>:挂载设备或是分区的文件系统类型
<options>:挂载时使用的参数,defaults为文件系统默认参数
<dump>:是否备份,0不做备份,1每天备份一次,2每隔一天备份一次
<pass>:需要检查的文件系统的检查顺序,0不检查,1rootfs使用(最高优先级),2非rootfs使用
- 解析
# 将/dev/mapper/rl-root磁盘文件挂载到/目录下,文件系统类型为xfs,使用xfs类型的默认挂载参数,不做备份,不自检
/dev/mapper/rl-root / xfs defaults 0 0
# 将UUID为117730ed-beaf-492b-83ab-22c97fc30098的磁盘设备挂载到/boot目录下,文件系统为xfs,使用xfs类型的默认挂载参数,不做备份,不自检
UUID=117730ed-beaf-492b-83ab-22c97fc30098 /boot xfs defaults 0 0
# 将/dev/mapper/rl-home磁盘设备挂载到/home目录下,文件系统类型为xfs,使用xfs类型的默认挂载参数,不做备份,不自检
/dev/mapper/rl-home /home xfs defaults 0 0
# 将/dev/mapper/rl-swap挂载到none下,none是内核虚拟出来使用的(并不是实际的dir),文件系统类型为swap交换分区,使用swap交换分区类型的默认挂载参数,不做备份,不自检
/dev/mapper/rl-swap none swap defaults 0 0
文件系统目录结构

/:根目录,文件系统从根目录下开始,所有目录、文件、设备都在/之下
/bin:可执行文件,所有用户使用的基本命令
/boot:系统启动相关的文件
/dev:设备文件及特殊文件存储位置,它实际上是一个访问这些外部设备的端口
/etc:配置文件
/home:普通用户家目录
/root:root用户家目录
/run:进程相关的数据
/sbin:管理员命令
/tmp:临时文件目录
/usr:系统核心、系统资源所在目录
/var:可以理解为vary的缩写,/var下有/var/log,用来存放系统日志的目录
FHS结构说明
-
文件和目录被组织成一个单根倒置树结构
-
文件系统从根目录下开始,用“/”表示
-
根文件系统(rootfs):root filesystem
-
标准Linux文件系统(如:ext4),文件名称大小写敏感,例如:MAIL, Mail, mail, mAiL
-
以 . 开头的文件为隐藏文件
-
路径分隔的 /
-
文件名最长255个字节
-
包括路径在内文件名称最长4095个字节
-
目录类型
- 蓝色:目录
- 绿色:可执行文件
- 红色:压缩文件
- 浅蓝色:链接文件
- 灰色:其他文件
-
除了斜杠和NULL,所有字符都有效,但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用
-
每个文件都有两类相关数据:
- 元数据:metadata,即属性
- 数据:data,即文件内容
文件管理
文件路径
绝对路径
绝对路径:路径从根(/)开始
[root@linux ~]# cd /etc/sysconfig/network-scripts/
[root@linux network-scripts]# pwd
/etc/sysconfig/network-scripts
相对路径
相对路径:路径是相对从当前路径开始
[root@linux opt]# ls
game mydate test
[root@linux opt]# cd test/log/
. 和 ..
每一个目录下都有一个 . 和 .. 这两个目录
.:表示当前目录..:表示上级目录
[root@linux ~]# ll -a
total 56
dr-xr-x---. 3 root root 180 Jul 26 15:07 .
dr-xr-xr-x. 20 root root 279 Jul 24 02:29 ..
-rw-------. 1 root root 1228 Jul 23 03:24 anaconda-ks.cfg
-rw-------. 1 root root 10195 Jul 26 01:48 .bash_history
-rw-r--r--. 1 root root 18 Mar 15 2021 .bash_logout
-rw-r--r--. 1 root root 176 Mar 15 2021 .bash_profile
-rw-r--r-- 1 root root 340 Jul 24 03:26 .bashrc
-rw-r--r--. 1 root root 100 Mar 15 2021 .cshrc
-rw------- 1 root root 32 Jul 26 04:14 .lesshst
drwxr-xr-x 2 root root 30 Jul 23 15:05 shell
-rw-r--r--. 1 root root 129 Mar 15 2021 .tcshrc
-rw------- 1 root root 13556 Jul 26 15:07 .viminfo
文件管理命令
切换目录 cd
cd 绝对路径 cd cd /etc/sysconfig/network-scripts/
cd 相对路径 cd test/log
cd 切换目录,例: cd /etc
cd - 切换回上一次所在的目录
cd ~ 切换回当前用户的家目录
cd . 代表当前目录, 没有效果
cd .. 切换回当前目录的上级目录
查看当前目录 pwd
pwd 查看当前所在的文件夹
显示目标列表 ls
ls -l [文件] 查看文件夹下的子文件与子文件夹的列表信息
ls -dl [文件夹] 查看指定的文件夹的列表信息
ls -a [文件夹] 查看包括隐藏文件在内的所有文件
使用 "ls -l" 显示出来的文件:
以 "-" 开头: 可以是普通文件(文本, 二进制, 压缩包, 图片, 日志等)
以 "d" 开头: 是一个目录或者文件夹
以 "l" 开头: 是一个软连接
查看目录树 tree
需要先安装tree命令,执行yum install -y tree
tree -a [目录] 显示所有文件,包括隐藏文件
tree -d [目录] 只显示子目录,不显示文件
tree -L 1 [目录] -L遍历目录下的最大层数,-L后应该是大于0的正整数, 正整数就是最大层
tree -F [目录] -F在条目后加上文件类型的指示符号,例如会在显示出的目录后面加上左斜杠/
# 范例
[root@linux ~]# tree
.
├── anaconda-ks.cfg
└── shell
└── httpd_install.sh
1 directory, 2 files
文件创建 touch
touch file 无则创建,有则修改时间
touch file2 file3 同时创建两个文件
touch file{a,b,c}.txt {}集合,等价 touch a.txt b.txt c.txt
touch file{1..10} 创建了 file1 file2 file3 file4... 10个文件
目录创建 mkdir
mkdir [目录名]
常用选项:
-v:显示详细信息
-p:递归创建目录
复制文件 cp
cp [源文件] [目标文件]
常用选项:
-v:详细显示命令执行的操作
-r:递归处理目录与子目录
-a:保留源文件或目录的属性
-f:强制复制
移动或重命名 mv
mv [源文件] [目标文件]
mv file1 file2 在当前位置移动就是重命名,将file1命名成file2
mv file1 /home 将 file1 移动到 "/home" 中
mv a1 a2 a3 /home 将a1 a2 a3多个文件移动到 "/home" 中
mv /root/dir1 ./ 将 "/root" 下的 "dir1" 目录移到当前目录下
mv dir/ dir2/ dir3/ /root 将多个目录移动到 "/root" 下
删除 rm
常用选项:
-r:递归
-f:强制删除
-v:显示详细过程
rm -rf [任何文件或目录]
查看文件内容
查看 cat
cat 1.txt 正常查看文件方式
cat -n 1.txt -n,显示文件有多少行
cat -A 1.txt 查看文件的特殊符号(不可见字符)
tac 1.txt 倒序查看文件内容
从头部查看 head
head 1.txt 默认查看前 10 行
head -2 1.txt 查看前两行(可以自定义,-n查看前n行)
从尾部查看 tail
tail 1.txt 默认查看最后 10 行
tail -2 1.txt 查看最后两行(可以自定义,-n查看最后n行)
tail -f 1.txt 动态查看文件的尾部
翻页查看 more和less
less 1.txt 使用光标上下翻动,空格进行翻页,q退出
more 1.txt 使用回车上下翻动,空格进行翻页,q退出
用户管理
Linux用户概念
- 用户是操作系统提供的一种安全机制
- 用户是权限的化身
- 要使用操作系统必须事先输入正确的用户名与密码
# 查看当前用户
[root@linux ~]# id
uid=0(root) gid=0(root) 组=0(root)
# 查看 "chen" 用户
[root@linux ~]# id chen
uid=1000(chen) gid=1000(chen) 组=1000(chen)
# 查看当前用户名字
[root@linux ~]# whoami
chen
UID与 GID
UID 用户id,相当于一个人的身份证,用户名就相当于这个人的名字
GID 组id,例如在一个班级,UID是你的座位号,那GID就是你的班级号
新建用户 useradd
# 格式
useradd [选项] 用户名
# 选项
-u:指定新用户的UID
-g:指定新用户主组的名称或ID
-c:用户的注释信息
-d:以指定的路径(不存在)为用户家目录
-s:指定用户的默认shell程序,可用列表在/etc/shells文件中
-G:为用户指定附加组,组须事先存在
-N:不创建私用组做主组,使用users组做主组(不创建同名的组)
-r:创建系统用户
-m:创建家目录,用于系统用户
-M:不创建家目录,用于非系统用户
-p:指定加密的密码
修改用户 usermod
# 格式
usermod [选项] 用户名
# 选项
-u:用户的新UID
-g:指定用户的新主组
-G:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
-s:新的默认SHELL
-c:新的注释信息
-d: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
-l: 新的名字
-L:锁定用户
-U: 解锁用户
-e:指明用户账号过期日期
-f:设定非活动期限,即宽限期
删除用户 userdel
# 格式
userdel [选项] 用户名
# 选项
-f, --force:强制删除
-r, --remove:删除用户家目录和邮箱
查看用户id
# 格式
id [选项] [用户名]
# 选项
-u: 显示UID
-g: 显示GID
-G: 显示用户所属的组的ID
-n: 显示名称,需配合ugG使用
切换用户 su
su <用户名>
su zhangsan 切换到zhangsan用户身份,不改变用户环境
su - zhangsan 切换到zhangsan用户身份,改变用户环境
设置密码 passwd
passwd [选项] <用户名>
passwd -d zhangsan:删除zhangsan用户密码
passwd -l zhangsan:锁定zhangsan用户
passwd -u zhangsan:解锁zhangsan用户
passwd -e zhangsan:使zhangsan下次登录需要修改密码
组用户
创建组 groupadd
# 格式
groupadd [选项] 组名
# 选项
-g:指定用户组ID
-r:创建系统组
修改组 groupmod
# 格式
groupmod [选项] 组
# 选项
-n:新的组名称
-g:新的GID
删除组 groupdel
# 格式
groupdel [选项] 组
# 选项
-f, --force:强制删除,即使是用户的主组也强制删除组,但会导致无主组的用户不可用无法登录
更改组成员和附加组 gpasswd
# 格式
gpasswd [选项] 组名
# 选项
-a:向组中添加用户
-d:从附加组中删除用户
-A user1,user2,...:设置组的管理员列表
-M:设置组的成员列表
更改和查看组成员
# 格式
groupmems [选项] [动作]
# 选项
-g, --group groupname #更改为指定组 (只有root)
-a, --add username #指定用户加入组
-d, --delete username #从组中删除用户
-p, --purge:从组中清除所有成员
-l, --list:显示组成员列表
权限管理
基本权限类型
- r : 4 : 可读
- w : 2 : 可写
- x : 1 : 可执行
r,4(read,读)
w,2(writ,写)
x,1(excu,执行)
# 对文件的权限
r:可查看、获取文件内容
w:可修改文件内容
x:可以把文件当成一个命令 / 程序运行
# 对目录的权限
r:可以浏览该目录下的子目录名和子文件名字
w:可以在目录中创建和删除文件
x:可以进入此目录,,当预先知道文件名称时,也可以查看文件的内容,属于目录的可访问的最小权限
r-x:只读目录
rwx:可读可写目录
权限归属
- u : 属主
- g : 属组
- o : 其他人
设置文件属主,属组 chown
# 同时设置属主和属组
[root@linux opt]# ll /opt/a.txt
---------- 1 root root 12 10月 29 17:22 /opt/a.txt
[root@linux opt]# chown opt.opt !$
chown opt.opt /opt/a.txt
[root@linux opt]# ll !$
ll /opt/a.txt
---------- 1 opt opt 12 10月 29 17:22 /opt/a.txt
# 只设置属主
[root@linux opt]# chown root !$
chown root /opt/a.txt
[root@linux opt]# ll !$
ll /opt/a.txt
---------- 1 root opt 12 10月 29 17:22 /opt/a.txt
# 只设置属组
[root@linux opt]# chown .root !$
chown .root /opt/a.txt
[root@linux opt]# ll !$
ll /opt/a.txt
---------- 1 root root 12 10月 29 17:22 /opt/a.txt
修改文件权限 chmod
# 说明
用户:u(所有者),g(所属组),o(其他),a(所有)
修改:+(添加权限),-(减少权限),=(分配权限)
权限:r(读),w(写),x(执行),X(为目录下的文件分配执行权限),NULL(所有权限)
数字法:4(读),2(写),1(执行)
chmod 777 a.txt 开放所有权限
chmod u+rw,g+rx,o+wx a.txt 所有者添加可读可写权限,所属组添加可读可执行权限,其他人添加可写可执行权限
chmod u-w,g-wx,o-x a.txt 设置a.txt文件权限为所有者减少写权限,所属组减少写、执行权限,其他人减少执行权限
chmod a=rwx a.txt 设置a.txt文件权限所有人有可读可写可执行权限
chmod u=x,g=x a.txt 设置a.txt文件权限为所有者可执行,所属组可执行

浙公网安备 33010602011771号