Linux运维学习3
- 观看《老男孩Linux课程day009》
- 观看《老男孩Linux课程day010》
- 观看《老男孩Linux课程day011》
- 观看《老男孩Linux课程day012》
day009-010 四剑客补充、用户管理体系和堡垒机项目
别名
概述
给命令设置别名,就是给命令设置一个昵称/爱称。比如经典的ll
就不是一个命令,在根目录下找不到这一条命令find / -type f -name 'll'
,这一条命令实际上是ls -l
。
别名应用在:
1、给常用命令设置一个更简单的昵称;
2、给危险命令设置一个防护提醒。
查看系统已有的别名
用alias
来查看或创建别名。
查看系统已有别名 |
设置一个别名
任务:一运行rm
,就显示'rm is dangerous'
。
alias rm='echo rm is dangerous' |
但现在删不了了,那如何删一个文件呢?
方法一:**加一个反斜线\
**(在回车上面),好像一个撬棍,敲一棒子就老实了。
方法二:找到rm的绝对路径,用绝对路径使用它。
加撬棍强制使用rm的原意 |
一般命令的别名都是临时的,重启或者重新登录就不起效果了。
可以修改配置文件/etc/profile
来让配置永久生效。
在/etc/profile的结尾添加一行 |
用户管理
概述
Linux是一个多用户系统,大部分操作都用root实现,但所有人都用root容易造成混乱,且不安全。所以未来Linux会有很多用户,每个用户都有自己的用途,甚至为了服务的正常运行,还会有一些虚拟用户。
Linux的用户都有自己的id,但是这个id有两个,一个是UID一个是GID。一般情况下,UID和GID要唯一。
UID:用户ID,唯一的标记了每一个用户;
GID:组ID,唯一的标记了用户属于哪一个用户组。
按照UID和GID的大小可以对用户进行分类。站在系统的角度,只要UID为0,就认为是root用户。
用户分类 | 分类方法(UID) |
---|---|
root | UID=0 |
普通用户 | UID>=1000,centOS7之后默认,需要手动创建,活动范围只有/home/张三/ 和/tmp/ |
虚拟用户 | UID<1000,用于管理服务(有些服务的正常运行需要一个用户),对我们来说只是一个摆设 |
注意:用UID判断是不是虚拟用户不是唯一标准。
用户相关的文件
用户相关文件 | 说明 |
---|---|
/etc/passwd | 存放用户信息 |
/etc/shadow | 存放密码信息 |
/etc/group | 用户组信息 |
/etc/gshadow | 用户组密码信息 |
注意:passwd里面不是密码信息!!!shadow里面才是密码信息!!!
/etc/passwd的详细内容
以:
为分隔符,一共7列。

具体含义见下图:

/etc/shadow详细内容
第1列是用户名,第2列是密码,第3列及以后是密码过期时间(默认不过期)。

/etc/group详细内容
第1列是用户组的名字(默认和用户名一致),第2列是密码,第3列是GID,第4列是空。

用户管理指令
就是增删改查用户。
增加
创建用户第一步:用useradd
。
useradd选项 | 说明 |
---|---|
-u | 指定用户uid |
-s | 指定命令解释器,默认是/bin/bash |
-M | 不创建家目录 |
创建用户wang |
创建用户mysql,指定UID为1314,指定命令解释器为/sbin/nologin,不创建家目录 |
创建用户第二步:修改密码passwd
(你看,这里passwd又是密码了)。
修改当前用户密码 |
上面是交互式修改密码,一问一答,但是有时候要修改100个用户的密码怎么办?这时就要用非交互式的方式来改密码了。
passwd选项 | 说明 |
---|---|
–stdin | 非交互式设置密码 |
非交互式修改wang的密码(通过管道) |
注意:非交互式只能root使用。
切换用户用 su - zhangsan
(su是switch user)。
切换到zhangsan用户 |
注意:这里-
的意思是切换用户的时候,更新用户的配置与环境变量。
退出当前用户用ctrl
+d
,也可以试试logout
。
删除
尽量避免删除用户,可以通过注释将用户屏蔽。
删除用户用userdel
。
删除zhangsan用户 |
虽然我们删除了,但依然会有zhangsan的家目录,这是因为不加参数的userdel
并不会删除用户家目录。
如果想要一并删除家目录,加上-r
选项,这个一定要慎重使用!!!
最好的删除用户的方法:利用root,vim编辑/user/passwd
,把不想要的用户给注释掉。
修改
passwd
是修改密码。
还有一个修改信息的命令usermod
,创建的时候设置的信息都可以修改,但是很少用。
在root身份下,把wang的解释器改为nologin |
查找
查看wang的GID和UID信息 |
Linux最短命令,查询系统时间、负载和当前连接用户的基本情况 |
Linux最短命令:w
,没有之一,用来查询谁登录了系统,并且正在干嘛。

图上可以读到,w
结果的第一行相当于uptime
。
还有last
和lastlog
两个命令可以查看用户最近的登录情况。
显示所有用户每一次的登录情况 |
sudo给用户权限
概述
sudo用来给普通用户授以root权限,授权sudo需要用root用户,使用sudo的是普通用户。
sudo给非管理员精确授权
利用visudo
命令来授权配置sudo,背后本质是用vi修改了/etc/sudoers
文件。
root授权配置sudo |
然后会打开/etc/sudoers
文件的vi窗口,输入set nu
显示行号(关闭行号是set nonu
),在第100行后可以添加新的用户和对应的root权限命令。

给wang用户cat、head、tail、grep这几个命令的root权限 |
注意:后面写的是命令的路径,一般都在/bin/
下,可以用which
查询一下。
之后wang用root身份使用这些命令的时候,需要在前面加上sudo
,否则还会提示权限不够。
并且第一次使用会有提醒。

对于使用者来说,查看自己有哪些sudo权限用sudo -l
,返回结果的第二段就是。
sudo给管理员广泛授权
以上是给非管理员的精确授权,但有时有这样的需求:我是管理员,为了安全避免经常使用root,我需要一个类似root权限的普通用户wang。此时visudo
,把最后改成NOPASSWD:ALL
,这样以后使用wang用户的所有root级权限都不用输入密码了。
wang ALL=(ALL) NOPASSWD:ALL |
堡垒机和跳板机
概述

跳板机和堡垒机是未来工作环境中远程连接必备的设备或服务,它要求我们只能先连接堡垒机或跳板机,再操作服务器,用于实现对操作的记录和回放。
跳板机:简单的跳板工具,用于记录用户的行为,位于用户和服务器之间,不能绕过;
堡垒机:加入了审计功能的跳板机,可以回放各种操作。
跳板机/堡垒机可以是自己写的脚本,或者是一个服务软件,也可以是一台虚拟机、一台实体机,甚至是一台专用的设备。
堡垒机产品 | |
---|---|
开源软件 | Jumpserver,Teleport |
物理硬件设备 | 购买 |
云服务 | 购买(阿里云、华为云等都有) |
teleport安装
先去官网下载后缀为.tar.gz的安装包,然后上传到服务器安装。
检查文件大小 |
teleport服务的默认端口:7190。
可以用telnet查看端口通不通 |
之后我们要关闭防火墙和selinux,否则用不了。
关闭防火墙 |
telport配置
之后访问ip+端口就可以访问啦!
初次登访问,需要设置用户id和密码。

配置完成后刷新一下,就可以进入登录页面了。

之后可能提示下载一个助手,作用是可以用Windows远程连接来控制堡垒机。
让teleport去连接别的机器是【资产】,在其中选择【主机与账号】,右上角【添加主机】。

添加了主机之后,在右侧找到【操作】-【管理远程账号】来设置登录Linux的用户和密码。

可以添加多台主机,就是经过堡垒机可以监控多台机器。
之后在【运维】-【主机运维】里,就可以用ssh来访问了,但是不如让teleport调用Xshell来访问。
在teleport助手里,找到【本地配置】-【本地SSH客户端配置】,把客服端选择【Xshell】,路径选择Xshell.exe的安装路径,右上角会提示一堆成功,此时再次打开就变成Xshell了。
teleport真正的功能在左侧的【审计】-【会话审计】,里面记录了所有的连接记录,可以查看日志并回放所有操作。
配置好了之后,都可以通过堡垒机来访问了。
问题:Linux会拒绝你其他私自访问,强制要求使用堡垒机吗?
答:课上没有讲,1)如果是实体的堡垒机或者额外的虚拟堡垒机,应该对Linux进行配置,设置为只允许堡垒机的ip访问自己;
2)如果是堡垒机软件,比如teleport直接安装在了目标Linux上,此时需要在Teleport中配置访问策略,确保所有对Linux服务器的访问都必须经过Teleport进行认证和授权。(来自AI回答,可行性有待验证)
具体配置步骤暂时还没有学习到,等以后需要了再去学。
多想想那个图!!!
day011-012 Linux-12位权限体系
权限管理概述
Linux通过rwx三个权限控制和保护系统,组成了9位权限。
Linux权限体系中还有3位特殊权限,组合起来就是12位权限。
Linux这种简单的权限与用户管理构成了Linux系统的安全防护体系。
Linux权限计算
rwx
权限 | 含义 |
---|---|
r | read 可读 |
w | write 可写 |
x | execute 可执行 |
并不是每个文件都需要x权限,一般是命令或者脚本才需要。
何为9位权限
Linux下任何一个文件与用户的关系有三种。
文件和用户的关系 | 含义 |
---|---|
所有者 | 文件属于该用户 |
用户组(家庭) | 文件属于同一用户组 |
其他人(陌生人) | 文件不属于该用户,也不属于同一用户组 |
9位权限在ll
等命令中可以显示出来,在第一列的-
和.
之间的9位,比如rwxr-xr-x
。

如何计算权限
为了更方便的使用权限,给每个权限设置了数字,未来可以通过数字来表示对应的权限。
权限 | 含义 | 数字 |
---|---|---|
r | read 可读 | 4 |
w | write 可写 | 2 |
x | execute 可执行 | 1 |
- | 无权限 | 0 |
注意:可读是最常见的权限,对应的最大的数字4。
每一部分相加之后就是它的权限值,比如上图对应的权限数字就是755。
数字和字母一一对应,同一权限只能有一个,不可能出现4=2+2的情况。
字母 | 数字 |
---|---|
-rwxr-xr-x | 755 |
-r–r–r– | 444 |
-r-xr-xr– | 554 |
-rwx—— | 700 |
修改权限
chmod命令:chmod 数字 文件名
修改权限。
chown命令:chown 新的所有者.新的用户组 文件名
修改文件所有者和用户组。
修改wang.txt的权限为755 |
还有一种按照user、group、others的首字母来分别添加权限的方法。
给/etc/rc.d/rc.local的所有用户都加执行权限,以下所有写法效果都一致 |
权限与文件、目录
概述
权限对于文件和目录的概念是不一样的。
x对于目录是最低级的,相当于可进入。
x对于文件是执行,需要更低级的r权限;w对于文件是增删改,r是查,都需要更低级的x可进入权限。
权限 | 文件 | 目录 |
---|---|---|
r | 是否可读取 | 是否可查看,需要x |
w | 是否可修改,需要r | 是否可增删改,需要x |
x | 是否可执行,需要r | 是否可进入,最低级 |
测试文件权限
测试文件的r权限 |
注意:如果一个文件只有w权限没有r权限(极不推荐),则最好只通过echo
的方式写入内容,如果通过vi
,强制退出后,原来的内容会被vi
的内容全部替代。
测试目录权限
测试目录的r权限,如果没有r权限,ll后只能显示目录名字,目录的属性信息都是'?' |
注意:如果要创建、删除或重命名文件,对该文件所在的目录必须要有rwx
权限。
系统默认权限
Linux系统通过umask命令控制文件和目录的默认权限。
查看umask |
一般来说,普通文件给的权限是666(文件一般不算可执行的,因为可执行的占少数),普通目录给的权限是777。
文件和目录最大的权限减去umask的值,文件umask的某一位如果是奇数,这一位减去umask后还再要+1。
root用户创建文件的默认权限:666 - 022 = 644,创建目录的默认权限:777 - 022 = 755。
umask的值给的越大,系统创建后的权限就越少,也就相对越安全。
修改umask为012 |
如果umask改为012,则root创建一个文件后权限变成了664,创建一个目录的权限是775。
一定要改回去!!!
Linux权限控制与系统安全
概述
通过权限控制让系统安全:对于搭建网站来说,服务器权限的设置应该遵守最小化原则,既要保证网站可以正常访问,也要保证网络安全。
推荐的网站部署权限配置为:文件是644,目录是755。
网站在运行的时候需要用户,不推荐直接使用root用户,推荐自己创建用户或者虚拟用户,比如nginx。
单台机器
网站运行的时候常用www用户,网站程序代码在/app/code/www目录中,应该如何设置权限?
网站核心文件和目录的所有者应改为root/root,文件的权限应为644,目录的权限应为755,避免使用root用户来日常操作。
对于要上传和更新的目录,例如/app/code/www/upload应把所有者改为www/www,文件权限为644,目录权限为755,使用www来日常维护操作。
如果不小心把网站目录所有权限都改为了777,怎么恢复? |
集群
集群以后再说。
3个特殊权限
知晓特殊权限就行,未来工作中不会使用。

特殊权限 | 判断 | 含义 | 例子 |
---|---|---|---|
set uid(或者是suid) | user位上有一个s,对应数字是4 | 运行这个命令的时候相当于使用了命令所有者的权限 | passwd命令 |
set gid(或者sgid) | group位上有一个s,对应数字是2 | 运行这个命令的时候相当于使用了用户组的权限 | |
sticky(粘滞位) | other位上有一个t,对应数字是1 | 只给目录使用,每个用户都可以在该目录下创建内容,但每个用户只能管理自己的文件 | /tmp/ |
set uid的例子 |
特殊属性
应用场景:预防重要文件或命令被修改。
查看这种属性:lsattr
。
修改这种属性:charrt
,a属性-append追加,i属性-immutable不灭的。
新建一个wang.txt文件 |
day012 软件包管理
Linux常见的软件安装方式
Linux下面的软件包格式为:rpm格式(红帽系列、CentOS、银河麒麟)或deb格式(Debian、Ubuntu)。
软件安装方式 | 说明 | 场景 |
---|---|---|
yum (CentOS) / apt (Ubuntu) |
最自动化,通过网络下载软件包,替我们安装,如果有依赖会自动下载依赖并安装 | 联网环境,离线可以自建yum库 |
rpm (CentOS) /dpkg (Ubuntu) |
半自动,下载rpm包后自己本地安装,缺少依赖需要自己解决 | 离线环境,删除软件包的时候 |
编译安装 | 可以自定义安装,漫长,缺少依赖需要自己解决 | 企业自定义安装的场景,给现在软件增加功能的时候 |
二进制安装 | 并非每个软件都有,一般数据库、k8s等用 | 比编译安装强一点,但是有限考虑yum和rpm安装,其次再考虑二进制,而且软件不一定有二进制安装的方法 |
rpm安装方式
rpm安装
参数是-ivh
,-i(install安装),-v(显示过程),-h(人类可读)。
安装rpm包的案例 |
wget下载指定内容,默认下载到当前目录,-P 下载到指定目录,–no-chesk-certificate如果下载地址有https,必须加这个选项否则会报错。
rpm升级软件
查看已安装的软件装到哪里了 |
升级需要先下载最新的版本。
升级的选项是-Uvh
,会自动把老版本升级到新版本并删掉老版本。
下载新版本 |
rpm删除软件
这里是删除对应的软件包,建议删除都使用rpm删除,另外非必须不建议删除,把服务关闭就行了。
删除的参数是-e
(erase)。
rpm -e zabbix-agent2 |
编译安装
概述
编译安装五步走:安装依赖-配置-编译-安装-测试。
编译安装用在:1、自定义的情况,2、yum安装不上,rpm又没有包的情况。
编译安装的本质是:把源代码(c语言)编译成命令。
编译安装最难的是安装依赖,因为不知道有什么依赖。
上传软件包并安装依赖
先上传压缩包,然后解压,进入解压后文件夹,然后安装依赖。
解压 |
配置
配置的命令是./configure
。
默认安装到/usr/local/
下。
注意:之后的步骤一定要在代码目录下面运行!!!
查看是否有./configure |
编译
直接运行make
命令就行。
make |
安装
make install |
测试
运行cmatrix,检查结果
cmatrix |
可以清理掉软件包和解压的目录。