目录
su 和exit命令:
语法:su [-] [用户名]
密码:即是vm虚拟机用户的登录密码。
- 符号是可选的,表示在切换用户后加载环境变量,建议带上
参数:用户名,表示要切换的用户,也可以省略,省略后默认切换到root(管理员模式)
切换后使用exit命令可以退回到上一个用户,也可以使用快捷键:ctrl+d
sudo命令:
在得知root密码是,可以通过使用su命令切换到root最大权限。
但是不建议长期使用root用户,避免带来系统损坏。
所以我们可以使用sudo命令,为普通的命令授权,临时以root身份执行。
语法:sudo 其他命令
在其他命令之前加上sudo,即可为这条命令临时赋予root权限
但是并非所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证
如何为普通用户配置sudo认证:
先切换到root用户下,输入命令visudo,翻到最后一行,在文件最后添加:
zhangjiajia ALL=(ALL) NOPASSWD:ALL
添加好之后按esc键,再同时按 Shift键+:输入wq保存并退出。
此处的zhangjiajai为自己的用户名,需要更换。
认证完成即可给命令添加赋予root权限。
如图所示,在 / 目录下普通用户无法用mkdir命令创建文件夹,在前面添加sudo命令即可。
rm为删除文件夹命令,想了解该命令,请转至:Linux基础命令
用户、用户组:
Linux系统中可以:
配置多个用户
配置多个用户组
用户可以加入多个用户组中(如图一个用户同时加入了两个用户组)
Linux中关于权限的管控级别有两个级别,分别是:
针对用户的权限控制
针对用户组的权限控制
用户组管理:
以下命令需要root用户才能执行
创建用户组命令:
groupadd 用户组名
删除用户组命令:
groupdel 用户组名
修改用户组命令:
groupmod [-n -g] 用户组名
选项 -n 常用于修改组名
选项 -g 常用于修改组id
查看已创建的组:
cat /ect/group
用户管理:
以下命令需要root用户才能执行
创建用户命令:
useradd [-g -d] 用户名
选项:-g表示指定用户的组,不指定-g,会创建与用户同名的用户组并自动加入,指定-g需要组已经存在。如果已经存在与用户同名的用户组了,那就必须得使用-g
选项:-d表示指定用户的HOME路径,不指定,HOME目录默认在: /home/用户名
删除用户命令:
userdel [-r] 用户名
选项:-r删除用户的HOME目录,不是用-r,删除用户时HOME目录保留
查看用户所属组命令:
id [用户名]
参数:用户名,被查看的用户,如果不提供则表示查看自身。
修改用户所属组命令:
usermod [-aG] [用户名] [组名]
表示将指定用户添加到指定用户组
查看已创建的用户:
cat /ect/passwd
更改设置用户密码:
语法:passwd 用户名
不输用户名就是更改当前用户的密码
getent命令:
getent passwd命令
语法:getent passwd 用户名
结果里面共有七个信息,分别是:
用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)
getent group命令:
语法:getent group 组名
结果里面共有三个选项,分别是:
组名:组认证(显示为x):组ID
chmod命令:
我们可以使用chmod命令,修改文件、文件夹的权限信息
注意:只有文件、文件夹的所属用户或root用户可以修改
语法:chmod [-R] 权限 文件或文件夹
选项:-R,对文件夹内的全部内容应用同样的操作
参数:权限的写法为u=rwx,g=rwx,o=rwx。其中,u,g,r三个选项可以任选,rwx三个选项也可任选,选满足需求的即可。
对文件进行操作:
对文件夹进行操作:
权限的数字序号:
权限可以用3位数字来替代,第一位表示用户权限,第二位表示用户组权限,第三位表示其他用户权限。
数字细节如下:r记为4,w记为2,x记为1,可以有:
0:无任何权限,即- - -
1:仅有x权限,即- - x
2:仅有w权限,即- w -
3:有w,x权限,即- wx
4:仅有r权限,即r - -
5:有r,x权限,即r - x
6:有r,w权限,即r w -
7:有r,w,x权限,即r w x
chown命令:
使用该命令,可以修改文件或文件夹的所属用户和用户组
普通用户无法修改所属为其他用户或组,所以此命令只适用于root用户执行
语法:chown [-R] [用户] [:] [用户组] [文件或文件夹]
选项 -R 与chmod一样,对文件夹内的全部内容应用相同的规则
选项 :用于分隔用户和用户组
setfacl命令和getfacl命令:
命令格式:setfacl 选项 归属关系:用户名:权限 文档
常用选项:-m 设置权限-x 删除指定用户权限-b 删除所有用户权
一、setfacl的优势:
1.更细粒度的权限控制
ACL(通过 setfacl 设置)允许为文件和目录的多个用户和组设置更细粒度的权限。你可以为特定用户或组指定特定的权限,而不仅仅是所有者和所属组。2.支持多个用户和组
传统权限模型只能指定一个文件的所有者和一个组。这限制了对复杂权限结构的支持。ACL 允许为多个用户和组分别设置不同的权限。这对于需要复杂权限配置的环境非常有用,例如当一个文件需要允许多个用户不同级别的访问权限时:
setfacl -m g:groupname:rx file.txt
#这条命令为用户组 groupname 设置 file.txt 文件的读和执行权限。
chgrp命令:
作用:改变文件或者目录的所属组
语法:chgrp [最终用户组] [文件或目录]
history命令:
直接输入history,就可以查看到历史输入过的命令。
! 加命令前缀,可以自动匹配上一个命令
Ctrl+r快捷键:
同时按下Ctrl+r可以进入搜索模式,作用为搜索历史命令。
yum命令:
yum:用于自动化安装配置Linux软件,并自动解决依赖问题。
语法:yum [ -y ] [ install | remove | search ] 程序名
选项:-y,自动确认,无需手动确认安装或卸载过程
install:安装
remov:卸载
search:搜索
注意:yum命令需要root权限,可以用su命令切换到root,也可以用sudo命令给yum命令提权。(需要连接网络)
systemctl命令:
Linux系统的很多软件(内置或第三方)均支持使用systemctl命令控制:启动,停止,开机自启,能够被systemctl管理的软件,一般也称为:服务
语法:systemctl start | stop | status | enable | disable 服务名
start 启动
stop 停止
status 查看状态
enable 开启开机自启
disable 关闭开机自启
系统内置的服务比较多,比如:
NetworkManager,主网络服务
network,副网络服务
firewalld,防火墙服务
sshd,ssh服务(Finalshell远程登录Linux使用的就是这个服务)
ln命令创建软链接:
相当于快捷方式
软连接特点:软连接可以跨分区,可以对目录进行链接,源文件删除后,链接文件不可用
软连接命令格式:ln -s 源文件路径 目标路径
注意:创建链接时一定要写目录或文件的绝对路径,哪怕是在当前路径下,也要写绝对路径
硬链接特点:硬连接不可以跨分区,不可以对目录进行链接,源文件删除后,链接文件仍然可用
硬连接命令格式:ln 源文件路径 目标路径
语法:ln -s 参数1 参数2
-s选项:创建软链接
参数1:被链接的文件或文件夹
参数2:要链接去的目的地
ping命令:
语法:ping [-c num] ip或主机名
选项:-c,检查次数,不使用-c将无限次查询
参数:ip或主机名,被检查的服务器的ip地址或主机名地址
wget命令:
wget是非交互式的文件下载器,可以在命令行内下载网络文件
语法:wget [ -b ] url
选项:-b ,可选,后台下载,会将日志写入到当前工作目录的wget-log文件
参数:url,下载链接
通过tail命令可以监控后台下载进度:tail -f wget-log
tail为监控命令,想了解该命令,请转至:Linux基础命令
curl命令:
curl可以发送http网络请求,可用于:下载文件、获取信息等
语法:curl [-o] url
选项:-o ,用于下载文件,当url是下载链接时,可以使用此选项保存文件
参数:url,要发起请求的网络地址
示例:
向cip.cc发起网络请求:curl cip.cc
向pthon.itheima.com发起网络请求(相当于直接用百度打开这个网页),会返回html的源码
也可以用来下载文件。
uname命令:
uname 命令用于显示系统内核信息
命令格式:uname [-选项...]
常用选项:-s :显示内核名称 -r :显示内核版本
nmap命令:
使用nmap命令可以查看指定ip的对外暴露端口(已被占用端口)。
语法:nmap ip地址
使用nmap命令前需要安装nmap,即:yum -y install nmap
yum命令,需要在root用户下使用
图中,被占用端口号为4个,127.0.0.1是一个特殊的IP地址,表示本机。该命令作用就是,查看本机被占用的一些端口。
netstat命令:
使用netstat命令可以查看本机指定端口号的占用情况。
语法:netstat -anp | grep 端口号
上述命令是配合管道符和grep命令来使用的
同样,netstat使用前也要使用yum命令下载
yum -y install net-tools
如图:0.0.0.0:111这个端口被占用,0.0.0.0与127.0.0.1一样表示本机。
为什么要查看端口呢?因为ip只能确定计算机,但是通过端口就能锁定要交互的程序。
(ip就相当于小区,端口则相当于门牌号)
ps命令:
语法:ps [ -e -f ]
选项:-e,显示出全部的进程
选项:-f,以完全格式化的形式展示信息(展示全部信息)
UID:进程所属的用户ID
PID:进程的进程号ID
PPID:进程的父ID(启动此进程的其他进程)
C:此进程的cpu占用率
STIME:进程的启动时间
TTY:启动此进程的终端序号,如显示?,表示非终端启动
TIME:进程占用cpu的时间
CMD:进程的启动路径
pstree命令:
语法: pstree [-p -u]#查看进程树
选项 -p :显示进程id
选项 -u:显示进程所属用户
可同时使用
kill命令:
语法:kill [ -9 ] 进程ID
选项:-9,表示强制关闭进程。不使用此选项,会向进程发送信号要求其关闭,但是是否关闭还得看进程自身的处理机制。
top命令:
使用top命令可以,进行系统资源的监控
语法:top
top命令也支持选项:
选项 功能
- p 只显示某个进程的信息 如:top -p 1
-d 设置刷新时间,默认是5s 如:top -d 3
-c 显示产生进程的完整命令 如:top -c
-n 指定刷新次数,刷新输出3次后退出 如:top -n 3
-i 不显示任何闲置或无用的进程 如:top -i
-u 查找指定用户(如:zhangjiajia)启动的进程 如:top -u zhangjiajia
不使用-b选项打开时,默认为交互式。
可以使用按键进行交互
按键 功能
h键 跳转到帮助画面
c键 显示产生进程的完整命令,和选项-c作用一样
f键 可以选择需要展示的项目
M键 根据驻留内存大小(RES)排序
P键 根据cpu使用大小进行排序
T键 根据时间/累计时间进行排序
E键 切换顶部内存显示单位
e键 切换进程内存显示单位
l键 切换显示平均负载和启动时间信息
i键 不显示闲置进程或无用进程,和选项-i作用一样
t键 切换显示cpu状态信息
m键 切换显示内存信息
pgrep命令:
pgrep 通过匹配其程序名,找到匹配的进程(检索进程)
命令格式:pgrep [选项...] [参数...]
常用选项:
-l #输出进程名与PID
-U #检索指定用户进程
-t #检索指定终端进程
-x #精确匹配完整进程名
free命令:
/proc/meminfo文件用于存放系统内存信息
free 用于查看内存使用情况
命令格式:free [-选项]
常用选项:-h #以人类易读方式显示大小(KB,MB,GB)
ifconfig命令:
网卡配置文件地址: /etc/sysconfig/network-scripts/网卡名
ifconfig 用于显示和设置网卡的参数
命令格式: ifconfig [网卡名]
df命令:
使用df命令可以查看磁盘的使用情况
语法:df [ -h ]
选项:-h 以更加人性化的单位显示
nslookup命令:
nslookup用于查询域名解析是否正常,在网络故障时用来诊断网络问题
du 命令:
作用:估计文件系统的磁盘已使用量,常用于查看文件或目录所占磁盘容量。du命令与df命令不同,df命令是统计磁盘使用情况,du命令是直接到文件系统内查找所有文件数据,所以命令执行时会耗费一点儿时间。
选项 | 功能 |
---|---|
-h | 以人们较易阅读的 GBytes,MBytes,KBytes等格式自行显示: |
-a | 不仅查看子目录大小,还要包括文件 |
-c | 显示所有的文件和子目录大小后,显示总和 |
-s | 只显示总和 |
-max-depth=n | 指定统计子目录的深度为第n层 |
# 查看当前文件总占用
du -sh
# 当前目录下所有文件磁盘占用
du -sh *
# 某文件夹下所有文件的磁盘占用
du -sh /home/*
# -c 显示总和
du -csh /home/*
iostat命令:
iostat可以查看cpu、磁盘的相关信息
语法:iostat [ -x ] [ num1 ] [ num2 ]
选项:-x,显示更多信息
num1:数字,刷新间隔,num2:数字,刷新几次
sar命令:
可以使用sar命令查看网络的相关统计(sar命令非常复杂,这里仅简单用于统计网络)
语法:sar -n DEV num1 num2
选项:-n,查看网络,DEV表示查看网络接口
num1:刷新间隔(不填就查看一次就结束),num2:查看次数(不填无限次数)
env命令:
可以用来查看当前系统中记录的环境变量
语法:env 如:env | grep PATH
环境变量是指操作系统在运行的时候,记录一些关键性的信息,用以辅助系统运行。
$符号:
$符号用于取环境变量的值,不建议直接使用,建议配合echo命令使用
语法:例如:echo $PATH 、echo $USER
export命令:
临时设置环境变量,
语法:export 变量名=变量值
永久生效:
针对当前用户,配置在当前用户的:~/.bashrc文件中(用vi命令,如:vi ~/.bashrc)
在文件的最后输入export 变量名=变量值
针对所有用户使用,配置在系统的:/etc/profile文件中
通过语法:source配置文件,进行立刻生效,或重启生效
rz命令:
语法:直接输入rz即可
使用rz命令可以上传文件
也可以在桌面直接拖入
sz命令:
语法:sz 要下载的文件
使用sz命令可以下载文件到本地电脑
Linux的压缩格式:
zip格式:Linux,Windows,MacOS,常用
tar:Linux,MacOS,常用
gzip:Linux,MacOS,常用
.tar,归档文件,简单的将文件组装到一个.tar的文件内,并没有太多文件体积的减少,仅仅只是简单的封装
.gz,也常见为.tar.gz,gzip格式压缩文件,即使用gzip压缩算法将文件压缩到一个文件内,可以极大程度的减少压缩后的体积。
tar命令:
语法:tar [ -c -v -x -f -z -c ] 参数1 参数2 ..... 参数n
-c,创建压缩文件,用于压缩模式
-v,显示压缩,解压过程,用于查看进度
-x,解压模式
-f,要创建的文件,或要解压的文件,-f选项必须在所有选项中位置处于最后一个
-z,gzip模式,不使用-z就是普通的tarball格式
-C,选择要解压的目的地,用于解压模式
注意:
-z选项使用时,一般处于选项第一个
-f选项使用时,必须在选项最后一个
常见压缩模式:tar -cvf test.tar 1.txt 2.txt 3.txt (将文件压缩到test.tar文件)
tar -zcvf test.tar.gz 1.txt 2.txt 3.txt(将文件压缩到test.tar.gz中,使用gzip模式)
常见的解压模式:tar -xvf test.tar (解压test.tar,将文件解压至当前目录)
tar -xvf test.tar -C /home/itheima (解压至/home/itheima)
tar -zxvf test.tar.gz -C /home/itheima (以giz模式解压test.tar至/home/itheima)
zip命令:
使用zip命令,压缩文件为zip压缩包
语法:zip [ -r ] 参数1 参数2 .... 参数n
选项:-r 表示被压缩的包含文件夹的时候,需要使用-r选项,和rm、cp等命令的-r效果一致
unzip命令:
使用unzip命令可以方便的解压zip压缩包
语法:unzip [ -d ] 参数
选项:-d表示要解压去的位置,和tar命令的-C选项功能一致
参数:要被解压的zip压缩包文件
lscpu命令:
查看cpu信息
语法:lscpu 或者 cat /proc/cpuinfo
free命令:
查看内存大小
语法:free 或者 cat /proc/meminfo
lsblk命令:
查看硬盘和分区情况
语法:lsblk 或者 cat /proc/partitions
fdisk命令:
注意:该命令必须在 root 用户下才能使用
语法:fdisk -l (功能描述:查看磁盘分区详情)
fdisk 硬盘设备名 (功能描述:对新增硬盘进行分区操作)
Linux 分区:
Device:分区序列
Boot:引导
Start:从X磁柱开始
End:到Y磁柱结束
Blocks:容量
Id:分区类型ID
System:分区类型
分区操作按键说明:
m:显示命令列表
p:显示当前磁盘分区
n:新增分区
w:写入分区信息并退出
q:不保存分区信息直接退出
练习1:
1.命令行以$作为结尾代表什么含义? 普通用户
2.请写出Linux系统一般的命令格式? 命令字 [-选项...] [参数...]
3.在Linux系统下,如何辨别目录与文件及其他的文件? 白色:文件 蓝色:目录 浅蓝色:链接文件 绿色:可执行文件 红色:压缩文件 红色带闪动的文件:链接文件不可用 黄色:设备文件(硬盘,网卡,CPU,鼠标,键盘)
4.如何查看一个文件的详细属性? ls -l 文件名
5.如何查看一个目录本身的详细属性? ls -dl 目录名字
6.查看文件详细属性,并以KB、MB、GB的方式显示文件的大小? ls -lh 文件名
7.如何查看一个文件的inode号? ls -i 文件名
8.请写出Linux下文件和目录的三个归属关系? u 所有者 g 所属组 o 其他人
9.请写出Linux下基本权限的表示方式? r:读取,w写入,x执行
10.命令行以#作为结尾代表什么含义? 超级管理员
练习2:
1.请在/tmp目录下创建student目录,并在student目录下同时创建t1、t2、t3文件 mkdir /tmp/student cd /tmp/student/ touch t1 t2 t3 touch /tmp/student/t1 /tmp/student/t2 /tmp/student/t3
2.请在/tmp目录下递归创建test1/test2/test3目录 mkdir -p /tmp/test1/test2/test3
3.切换到/tmp/test1/test2/test3目录下,并打印(查看)当前所在目录 cd /tmp/test1/test2/test3 pwd
4.请同时在/opt、/media目录下创建upload文件 touch /opt/upload /media/upload
5.请将/opt目录下的upload文件移动至/tmp/test1/test2/test3目录下,并改名为upload.bak mv /opt/upload /tmp/test/1/test/2/test3/upload.bak
6.请将/etc/passwd文件拷贝至/opt目录下,改名为passwd.bak,并保持属性不变 cp -p /etc/passwd /opt/passwd.bak
7.请将/etc/fstab文件拷贝至/opt目录下,并改名为fstab.bak cp -p /etc/fstab /opt/fstab.bak
8.请将/etc/sysconfig/network-scripts/ifcfg-ens32 文件拷贝至/opt目录下,并改名为ens32.bak cp /etc/sysconfig/network-scripts/ifcfg-ens32 /opt/ens32.bak
9.请删除/etc/yum.repos.d/目录下所有内容 rm -rf /etc/yum.repos.d/*
10.请在/etc/yum.repos.d/目录下创建local.repo文件 touch /etc/yum.repos.d/local.repo
11.请查看/etc/sysconfig/network-scripts/ifcfg-ens32文件末尾5行内容 tail -5 /etc/sysconfig/network-scripts/ifcfg-ens32 tail -n 5 /etc/sysconfig/network-scripts/ifcfg-ens32 12.请查看/etc/passwd文件第1行内容 head -n 1 /etc/passwd head -1 /etc/passwd
13.请查看/etc/hostname文件内容 cat /etc/hostname
14.请查看/etc/hosts文件内容 cat /etc/hosts
15.请说出软连接与硬连接的特点 软连接:可以跨分区,可以对目录链接,源文件删除后链接文件不可用 硬连接:不可以跨分区,不可以对目录进行连接,源文件删除后,链接文件以然可用
16.请在/opt目录下创建hello.soft文件,并创建软连接到/tmp目录下 touch /opt/hello.soft ln -s /opt/hello.soft /tmp
17.请在/opt目录下创建hello.hard文件,并创建硬连接到/tmp目录下,并查看连接文件详细属性 touch /opt/hello.hard ln /opt/hello.hard /tmp
18.如何获取ls命令的帮助信息? man ls ls --help
19.请说出Linux系统的运行级别 0:关机 1:单用户模式 2:多用户模式(没有NFS) 3:完全多用户模式,标准运行级别 4:保留 5:带GUI图形化界面,标准的运行级别 6:系统关闭并重启
20.如何重启Linux系统? reboot init 6