Linux第二弹
root用户(超级管理员)
无论是Windows、MacOs、Linux均采用多用户的管理模式进行权限管理。
- 在Linux系统中,拥有最大权限的账户名为: root(超级管理员)
- 而在前期,我们一直使用的账户是普通的用户: yylm
root用户拥有最大的系统操作权限,而普通用户在许多地方的权限是受限的。
- 普通用户的权限,一般在其HOME目录内是不受限的
- 一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限
在前面,我们接触过su命令切换到root账户,su命令就是用于账户切换的系统命令,其来源英文单词:Switch User 。
语法: su [-] [用户名]
- -符串是可选的,表示是否在切换用户后加载境变量(后续讲解),建议带上
- 参数:用户名,表示要切换的用户,用户名也可以省略,省略表示切换到 root
- 切换用户后,可以通过 exit 命令退回上一个用户,也可以使用快捷键:ctrl+d
- 使用普通用户,切换到其它用户需要输入密码,如切换到root用户
- 使用root用户切换到其它用户,无需密码,可以直接切换
sudo命令
在我们得知root密码的时候,可以通过su命令切换到root得到最大权限但是我们不建议长期使用root用户,避免带来系统损坏。
我们可以使用sudo命令,为普通的命令授权,临时以root身份执行。
语法: sudo 其它命令
- 在其它命令之前,带上sudo,即可为这一条命令临时赋予root授权
- 但是并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证
为普通用户配置sudo认证
切换到root用户,执行visudo命令,会自动通过vi编辑器打开:/etc/sudoers
在文件的最后添加:
其中最后的NOPASSWD:ALL表示使用sudo命令,无需输入密码最后通过 wq 保存
yum命令
yum:RPM包软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题。
语法: yum [-y] [install | remove | search] 软件名称
- 选项:-y,自动确认,无需手动确认安装或卸载过程
- install:安装
- remove:卸载
- search:搜索
yum命令需要root权限哦,可以su切换到root,或使用sudo提权并且yum命令需要联网。
systemctl 命令
Linux系统很多软件(内置或第三方)均支持使用systemctl命令控制:启动、停止、开机自启能够被systemctl管理的软件,一般也称之为:服务
语法: systemctl [start | stop | status l enable | disable] 服务名
系统内置的服务比较多,比如:
- NetworkManager,主网络服务
- network,副网络服务
- firewalld,防火墙服务
- sshd,ssh服务(FinalShell远程登录Linux使用的就是这个服务)
除了内置的服务以外,部分第三方软件安装后也可以以systemctl进行控制。
- yum install -y ntp , 安装ntp软件可以通过ntpd服务名,配合sstemctl进行控制
- yum install -y httpd, 安装apache服务器软件可以通过httpd服务名,配合systemctl进行控制
部分软件安装后没有自动集成到systemctl中,我们可以手动添加。
ln命令创建软链接
在系统中创建软链接,可以将文件、文件夹链接到其它位置。类似Windows系统中的《快捷方式》
语法: ln -s 参数1 参数2
- -s 选项,创建软连接
- 参数1:被链接的文件或文件夹
- 参数2:要链接去的目的地
date命令
通过date命令可以在命令行中查看系统的时间
语法: date [-d] [+格式化字符串]
- -d 按照给定的字符串显示日期,一般用于日期计算
- 格式化字符串:通过特定的字符串标记,来控制显示的日期格式
- %Y 年
- %y 年份后两位数字(00.99)%M月份(01.12)
- d日(01.31)
- %H小时(00.23)
- %M 分钟(00.59)
- %5秒(00.60)
- %s自1970-01-0100:00:00 UTC 到现 在 的 秒数
-d选项,可以按照给定的字符串显示日期,一般用于日期计算
其中支持的时间标记为:
- year年
- Month月
- day天
- hour小 时
- Minute分 钟
- second秒
-d 选项可以和 格式化字符串配合一起使用哦。
通过date查看的日期时间是不准确的,这是因为:系统默认时区非中国的东八区
使用root权限,执行如下命令,修改时区为东八区时区
将系统自带的localtime文件删除,并将/usr/share/zoneinfo/Asia/Shanghai文件链接为localtime文件即可
我们可以通过ntp程序自动校准系统时间
安装ntp:yum-yinstall ntp启动并设置开机自启:
- systemctl start ntpd
- systemctl enable ntpd
当ntpd启动后会定期的帮助我们联网校准系统的时间
也可以手动校准(需root权限):ntpdate -untp.aliyun.com
IP地址
每一台联网的电脑都会有一个地址,用于和其它计算机进行通讯IP地址主要有2个版本,V4版本和V6版本(V6很少用,课程暂不涉及)IPv4版本的地址格式是:a.b.c.d,其中abcd表示0~255的数字,如192..168.88.101就是一个标准的IP地址
可以通过命令: ifconfig,查看本机的ip地址,如无法使用ifconfig命令,可以安装:yum-yinstall net-tools
特殊IP地址
除了标准的IP地址以外,还有几个特殊的IP地址需要我们了解:
127.0.0.1,这个IP地址用于指代本机(泛指,并不是真正的本机IP地址)
0.0.0.0,特殊IP地址
- 可以用于指代本机
- 可以在端口绑定中用来确定绑定关系(后续讲解)
- 在一些IP地址限制中,表示所有IP的意思,如放行规则设置为0.0.0.0,表示允许任意IP访问
在Linux中修改主机名
- 可以使用命令: hostname 查看主机名
- 可以使用命令: hostnamectl set-hostname 主机名,修改主机名(需root)
- 重新登录 Finalshell 即可看到主机名已经正确显示
域名解析
每台主机都要通过IP地址去访问,但我们访问网址时大多都是用字符串去访问,如访问百度:www.baidu.com。
这是因为其会进行域名解析,先到主机的 hosts 文件中查找对应 IP ,找不到就联网到公开DNS服务器(如:114.114.114.114 或 8.8.8.8等)询问
网络请求和下载
ping命令
可以通过ping命令,检查指定的网络服务器是否是可联通状态
语法: ping [-c num] ip或主机名
- 选项:-c,检查的次数,不使用-c选项,将无限次数持续检查
- 参数:ip或主机名,被检查的服务器的ip地址或主机名地址
curl命令
curl可以发送http网络请求,可用于:下载文件、获取信息等。
语法: curl [-o] ur1
- 选项: -o,用于下载文件,当url是下载链接时,可以使用此选项保存文件
- 参数: url,要发起请求的网络地址
wget命令
wget是非交互式的文件下载器,可以在命令行内下载网络文件
语法: wget [-b] url
- 选项: -b,可选,后台下载,会将日志写入到当前工作目录的wget-log文件
- 参数: url,下载链接
注意: 无论下载是否完成,都会生成要下载的文件
端口
端口,是设备与外界通讯交流的出入口。端口可以分为: 物理端口和虚拟端口两类
- 物理端口:又可称之为接口,是可见的端口,如USB接口,RJ45网口,HDMI端口等
- 虚拟端口:是指计算机内部的端口,是不可见的,是用来操作系统和外部进行交互使用的
虚拟端口
计算机程序之间的通讯,通过IP只能锁定计算机,但是无法锁定具体的程序。通过端口可以锁定计算机上具体的程序,确保程序之间进行沟通。
Linux系统是一个超大号小区,可以支持65535个端口,这6万多个端口分为3类进行使用:
- 公认端口:1~1023,通常用于一些系统内置或知名程房的预留使用,如SSH服务的22端口,HTTPS服务的443端!非特殊需要,不要占用这个范围的端口
- 注册端口:1024~49151,通常可以随意使用,用于松散的绑定一些程序\服务
- 动态端口:49152~65535,通常不会固定绑定程序,而是当程序对外进行网络链接时,用于临时使用。
查看端口占用
可以通过Linux命令去查看端口的占用情况
使用nmap命令,安装nmap: yum -y install nmap
语法:nmap 被查看的IP地址
本机四个端口被占用,22端口,一般是SSH服务使用,即FinalShell远程连接Linux所使用的端口
可以通过netstat命令,查看指定端口的占用情况
语法: netstat -anp grep端口号,安装netstat: yum -y install net-tools
进程
程序运行在操作系统中,是被操作系统所管理的。
为管理运行的程序,每一个程序在运行的时候,便被操作系统注册为系统中的一个:进程
并会为每一个进程都分配一个独有的:进程ID(进程号)
可以通过ps命令查看Linux系统中的进程信息
语法: ps [-e -f]
- 选项:-e,显示出全部的进程
- 选项:-f,以完全格式化的形式展示信息(展示全部信息)
一般来说,固定用法就是: ps -ef 列出全部进程的全部信息。
从左到右分别是:
- UD:进程所属的用户ID
- PID:进程的进程号ID
- PPID:进程的父ID(启动此进程的其它进程)
- C:此进程的CPU占用率(百分比)
- STIME:进程的启动时间
- TTY:启动此进程的终端序号,如显示 ? 表示非终端启动
- TIME:进程占用CPU的时间
- CMD:表示进程的路径或名称或启动命令
查看指定进程
- 在Finalshell中,执行命令:tail,可以看到,此命令一直阻塞在那里
- 在Finalshell中,复制一个标签页,执行:ps -ef 找出 tail 这个程序的进程信息
- 问题:是否会发现,列出的信息太多,无法准确的找到或很麻烦怎么办?
我们可以使用管道符配合grep来进行过滤,如:
ps -ef l grep tail,即可准确的找到 tail 命令的信息
- 过滤不仅仅过滤名称,进程号,用户ID等等,都可以被grep过滤哦
- 如:ps -ef|grep 30001,过滤带有30001关键字的进程信息(一般指代过滤30001进程号)