编程从入门到放弃图片,Linux 入门到放弃

 2023-09-28 阅读 36 评论 0

摘要:Linux 入门到放弃 第一章 Linux系统基本概念及命令用法 1.多用户的系统:允许同时有很多个用户登录系统,使用系统里的资源 2.多任务的系统:允许同时执行多个任务 3.严格区分大小写:命令,选项,参数,文件名,目录名都严格

Linux 入门到放弃

第一章 Linux系统基本概念及命令用法

1.多用户的系统:允许同时有很多个用户登录系统,使用系统里的资源
2.多任务的系统:允许同时执行多个任务
3.严格区分大小写:命令,选项,参数,文件名,目录名都严格区分大小写
4.一切皆文件:硬件设备(内存,CPU,网卡,显示器,硬盘等等)都是以文件形式存在的
5.不管是文件还是目录都是以倒挂的树形结构,存在于系统的/目录下,根目录是Linux系统的起点
6.对于Linux系统而言,目录/文件没有扩展名一说,扩展名如:.sh(脚本文件) .conf(配置文件).log(日志文件) .rpm(软件包).tar(压缩包)是易于用户方便识别
7.没有提示就是最好的提示(成功了!)
8.Linux系统没有回收站,所以删除就是删除了,无法找回!

命令终端字段含义介绍

[root@localhost ~]# 
解释: root:当前登录系统用户名(root,超级管理员)
localhost:当前主机名
~:当前用户所在目录(~为家目录),root超级管理员家目录:/root
#:当前用户身份是超级管理员
[root@localhost ~]$
$:当前用户身份为普通用户,普通用户的家目录:/home/用户名同名

命令行编辑技巧

键盘上下键调出历史命令
Ctrl+c:取消当前执行命令
Ctrl+l,clear:清屏
tab键自动补齐:可补齐命令、参数、文件路径、软件名
esc+.:将上一条命令参数变成当前命令的执行对象
Ctrl+a:将当前光标移动至行首
Ctrl+e;将当前光标移动至行尾
Ctrl+u:清空至行首
Ctrl+w;删除一个单词
Ctrl+s:锁屏
Ctrl+q:解锁,不删除误输入的字符串
Ctrl+z:解锁,并删除误输入的字符串
exit:退出系统

Linux系统辨别目录与文件的方法

蓝色表示目录(windows系统里的文件)
白色表示文件浅蓝色表示链接文件(类似于windows系统的快捷方式)
绿色表示可执行文件(如脚本,命令程序文件)
红色表示压缩文件
黄色表示设备文件(硬盘、键盘、鼠标、网卡、CPU硬件设备都是以文件的形式存在的)
红色闪动文件——>表示链接文件不可用

ls 查看目录/文件命令

  1. 1. ls命令(英文全拼:list):用于查看目录下内容及目录和文件详细属性信息2. 命令格式:ls [-选项...] [参数...]3. 常用选项:1. -a 显示目录下所有内容,包含隐藏的内容2. -l 显示目录下的内容及详细属性3. -h 人性化显示目录下内容大小(kB、MB、GB)4. -d 仅显示目录本身而不显示目录下的内容5. -i 查看inode号(系统任何的文件或目录都有一个唯一的编号)6. -R:递归查看目录下所有内容(从头到尾)#查看文件的元数据信息
    [root@localhost ~]# stat hello.txt文件:"hello.txt"大小:0         	块:0          IO 块:4096   普通空文件
    设备:fd00h/64768d	Inode:33575020    硬链接:1
    权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    环境:unconfined_u:object_r:admin_home_t:s0
    最近访问:2021-03-14 16:38:14.349861770 +0800
    最近更改:2021-03-14 16:38:14.349861770 +0800
    最近改动:2021-03-14 16:38:14.349861770 +0800
    创建时间:-
    

Linux 系统文件类型

\- 文件:
d 目录:
l 链接文件
b 跨设备文件
c 字符设备文件
p 管道设备文件
s 套接字

Linux 系统下的归属关系

#### Linux 系统下的归属关系在Linux系统下,文件给用户分成了三类
u 所有者;文件或目录的拥有者,拥有者的权限通常是最大的
g 所属组:文件或目录属于哪一个组,所属组的权限略微比所有者小
o 其他人:既不是文件或目录的所有者,也不属于文件或目录组内的成员,其他人的权限通常最小的权限

Linux 基本权限的类别

r 可读 w可写 x可执行 -没有权限
权限顺序:rwx rwx rwx (421)

[root@localhost ~]# ls -l
-rw-r--r--. 1 root root 1831 3月  13 17:45 initial-setup-ks.cfg
#解释
-:文件类型
rw- r-- r--:所有者u、所属组g、其他人o的权限
u   g   or 读取权限,w写入权限,x执行权限,-没有任何权限1:代表文件的引用次数,只针对与做了硬连接的文件才有效
root:文件的所有者
root:文件的所属组
1831:文件的大小,默认以字节为单位显示大小
3月  13 17:45:文件最近一次的修改时间
initial-setup-ks.cfg:文件名

mkdir 创建目录命令

 mkdir(英文全拼:make directory)用于创建新目录命令格式:mkdir [-选项] 目录名常用选项:-p 递归创建多个目录注意事项:目录还是文件的名字,除了以“/”以外的任意名称,“/”根目录,路径分隔符文件或目录的名字长度不能超过255个字符
----------------------------------------------------------------------------------
#在/opt目录下递归创建目录
[root@localhost ~]# mkdir -p /opt/xx/oo
[root@localhost ~]# ls /opt
rh  student  xx[root@localhost ~]# mkdir -p /opt/a/b/c/d
[root@localhost ~]# ls /opt
a  rh  student  xx#ls -R选项可以递归目录下所有内容
[root@localhost ~]# ls -R /opt/a
/opt/a:
b

rmdir 删除空目录命令

 rmdir(英文全拼:remove directory)删除空目录命令格式:rmdir [-选项] 目录名

cd 切换工作目录命令

cd 切换工作目录命令cd(英文全拼:change directory)切换目录命令格式:cd [-选项] [目录名]提示:目录名称可以是绝对路径或相对路径,如果不指定目录名称,则切换到当前用户的家目录~常用快捷操作:~ 表示为家目录-. 表示为当前目录.. 表示上一级目录可在两路径之间来回切换
pwd 打印当前所在目录命令pwd(英文全拼:print work directory)打印当前所在的工作目录,执行pwd命令后,可显示当前所在的工作目录的绝对路径名称命令格式:pwd [-选项] 

绝对路径与相对路径

绝对路径:以/(跟)为起点,到达你想去的目标目录称为绝对路径
相对路径:以当前路径为起点,到达你想去的目标目录
相对路径和绝对路径的区别?绝对路径是以/为起点,去往目的地。如 cd /opt/containerd/bin相对路径是从当前路径出发到目标路径。如cd /etc/selinux/final 要去/etc/selinux/tmp cd ../tpm/ 这就是相对路径

第二章:文件/目录常用管理命令

cp复制命令
cp(英文全拼:copy file)用于复制文件或目录,cp命令在复制时也可修改目录或文件名字命令格式:cp [-选项] 源文件或目录 目标目录常用选项:-p 保留源文件属性不变(如:修改时间、归属关系、权限)-r 复制目录(包含该目录下所有的子目录和文件)
可以结合使用
------------------------------------------------------------------------------------
#使用-r对目录执行复制
[root@localhost ~]# cp -r abc /opt
[root@localhost ~]# ls /opt#同时复制多个目录
[root@localhost ~]# mkdir abc1 abc2 abc3
[root@localhost ~]# cp -r abc1 abc2 abc3 /opt
[root@localhost ~]# ls /opt#复制hello文件到/opt并改名为hello.txt
[root@localhost ~]# cp hello /opt/hello.txt
[root@localhost ~]# ls /opt#操持属性不变复制文件
[root@localhost ~]# cp -p anaconda-ks.cfg /opt
cp:是否覆盖"/opt/anaconda-ks.cfg"? y   

mv 移动命令

 mv(英文全拼:move file)用于移动文件或目录到其他位置,也可用于修改目录或文件名命令格式:mv [-选项] 源文件... 目标路径

cat 查看文件内容命令

cat (英文全拼:concatenate)命令用于查看文本文件内容命令格式:cat [选项] 文件名常用选项-n #查看文件时以行号的形式显示文件内容

less命令

less工具是对文件的输出进行分页显示的工具,常用于查看内容量较大的文件
命令格式:less [-选项] 文件
常用选项:-N #以行号形式显示文件内容使用技巧:键盘上下键逐行查看pgdn :向下翻一页(Fn + 下键)pgup :向上翻一页(Fn + 上键)/字符串 :搜索指定字符串(n从上向下搜索,N从下向上搜索)G:直接跳转到文件最后一行gg:直接跳转到文件行首q :退出

head与tail命令

#### head与tail命令head命令:用来显示文件开头部分内容,默认显示文件开头10行内容命令格式:head [选项] 参数常用选项:- -n<行数> 指定显示的行数  
------------------------------------------------------------------------------------
tail命令:用来显示文件末尾部分内容,默认显示文件末尾10行内容命令格式:tail [选项] 参数常用选项:-n<行数> 指定显示的行数  -f 动态显示#动态查看文件内容
[root@localhost ~]# touch t1
root@localhost ~]# tail -f t1

rm删除命令

 rm(英文全拼:remove)命令用于删除文件或者目录。命令格式:rm [-选项…] 目录或文件…常用选项-f 强制删除-r 删除目录“*”特殊字符:系统常用符号,用来代表任意所有字符

软连接与硬链接

Linux中的链接文件类似于windows中的快捷方式
软连接特点:软链接可以跨分区,可以对目录进行链接,源文件删除后,链接文件不可用
软链接命令格式:ln -s 源文件路径 目标路径
注意:创建链接时一定要写目录或文件的绝对路径,哪怕是在当前路径下,也要写绝对路径
------------------------------------------------------------------------------------
#创建软连接(必须要绝对路径创建)
[root@localhost ~]# ln -s /root/hello.soft /opt
[root@localhost ~]# ls /opt
#提示:链接文件的权限最终取决于源文件的权限
#提示:由于源文件存放于/root目录下,而普通用户对/root目录没有任何权限,所以普通用户无法查看
#提示:删除源文件后,软连接文件不可用
------------------------------------------------------------------------------------
硬链接特点:硬链接不可以跨分区,不可以对目录进行链接,源文件删除后,链接文件任然可用硬连接命令格式:ln  源文件路径  目标路径
------------------------------------------------------------------------------------
创建目录 链接目录 写入内容,删除源文件,
#硬连接不允许对目录进行连接
root@localhost ~]# ln /root/test1 /opt
ln: "/root/test1": 不允许将硬链接指向目录#硬连接源文件删除后,链接文件仍然可用
[root@localhost ~]# rm -f /root/hello.hard 
[root@localhost ~]# cat /opt/hello.hard 
123
xx

内部命令与外部命令

 内部命令与外部命令什么是命令:用来实现某一种功能的指令或程序命令的执行依赖于解释器(例如:/bin/bash),/etc/shells文件存放系统可用的shell的解释器程序用户——解释器(shell外壳)——内核——调配计算机硬件[root@localhost ~]# shell 终端 交互接口  用户接口
------------------------------------------------------------------------------------
#搜索命令所在的绝对路径
[root@localhost ~]# which ls
alias ls='ls --color=auto'/usr/bin/lsroot@localhost ~]# ls /usr/bin/ls
/usr/bin/ls#直接运行程序文件
[root@localhost ~]# /usr/bin/ls
[root@localhost ~]# /usr/bin/ls /opt
hello.hard  hello.soft	t1  test1  test.txt

Linux命令的分类

 内部命令:bash程序自带的基本管理命令外部命令:有独立的外部可执行程序文件命令type 用于区别内部命令与外部命令which 用于查找可以执行程序文件位置
------------------------------------------------------------------------------------
[root@localhost opt]# type ls[root@localhost opt]# type cat[root@localhost opt]# type hash[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin[root@localhost ~]# hash
命中	命令1	/usr/bin/cat1	/usr/bin/ls[root@localhost opt]# hash -r
[root@localhost opt]# 
[root@localhost opt]# hash
hash: 哈希表为空[root@localhost opt]# ls
hello.hard  hello.soft  t1  test1  test.txt
[root@localhost opt]# hash
命中	命令1	/usr/sbin/ls
------------------------------------------------------------------------------------
总结:-  shell程序是用户和系统之间的接口,用于解释用户的命令
-  查找命令对应的程序文件所在位置:which 命令
-  shell程序大多数存放在/etc/shells文件中
-  系统默认使用的shell为/bin/bash
-  查看当前使用的shell:echo $SHELL
-  区别内部命令与外部命令的方式:typt 命令
-  shell程序查找可执行程序文件路径定义在$PATH环境变量中
-  shell查找的外部命令路径结果会记录到缓存的hash表中

help 命令帮助手册

 help命令用于查看shell内部命令的帮助信息,包括使用方法、选项等…命令格式:help [选项] 命令

man 获取命令帮助手册

 man 命令用于查看系统命令的帮助信息,包括使用方法、选项、使用例子等…,对比--help ,man 输出的信息更加详细命令格式:man [-选项]   命令常用快捷操作向下键向下移一行向上键向上移一行[Page Down] 向下翻一页[Page Up] 向上翻一页/关键字   #搜索关键字,配合n(向下查询)、N(向上查询)q 退出

Linux系统的运行级别

Linux系统运行级别:linux系统有7个运行级别,不同的运行级别运行的程序和功能都不一样,而Linux系统默认是运行在一个标准的级别上,系统运行级别文件/etc/inittab文件
运行级别 0:所有进程被终止,机器将有序的停止,关机时系统处于这个运行级别(关机)运行级别 1:单用户模式,(root用户进行系统维护),系统里运行的所有服务也都不会启动运行级别 2:多用户模式(网络文件系统NFS服务没有被启动)运行级别 3:完全多用户模式,(有NFS网络文件系统)标准的运行级别,命令行模式运行级别 4:系统未使用运行级别 5:登录后,进入带GUI的图形化界面,标准的运行级别运行级别 6:系统正常关闭并重启
-----------------------------------------------------------------------------------
#查看当前系统运行级别
[root@localhost etc]# runlevel
N 5
#解释;当前系统处于的运行级别
#解释:N代表没有从任何级别跳转过来#切换系统运行级别
[root@localhost ~]# init N#查看运行级别文件内容
[root@localhost ~]# cat /etc/inittab 
# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3   #运行级别3
# graphical.target: analogous to runlevel 5    #运行级别5
#
# To view current default target, run:
# systemctl get-default    				 #查看当前系统默认的运行级别
#
# To set a default target, run:
# systemctl set-default TARGET.target    #修改当前系统默认运行级别 # To set a default target, run:
# systemctl set-default TARGET.target    #修改当前系统默认运行级别  #查看默认运行级别
[root@localhost ~]# systemctl get-default
graphical.target  #默认运行级别为5#修改默认运行级别为3
[root@localhost ~]# systemctl set-default multi-user.target 
[root@localhost ~]# systemctl get-default
multi-user.target#修改默认运行级别为5
[root@localhost ~]# systemctl set-default graphical.target
[root@localhost ~]# systemctl get-default
graphical.target

关机与重启

linux下常用的关机命令有:shutdown、halt、poweroff、initinit 0 关机halt #立刻关机poweroff #立刻关机   (记这个)shutdown –h now   #立刻关机shutdown -h 10  #10分钟后自动关机
[root@localhost ~]# poweroff
------------------------------------------------------------------------------------
重启命令:reboot  shutdownreboot #立刻重启 (记这个)shutdown -r now   #立刻重启shutdown -r 10 #过十分钟后重启
[root@localhost ~]# reboot

第三章:计算机基础及常用信息查看

计算机硬件组成部分
- 输入设备:键盘、鼠标、触控屏等
- 主机设备:主板、中央处理器(CPU)、主存储器(内存)、网卡、声卡、显示卡等
- 输出设备:屏幕、耳机、打印机、投影仪等
- 外部存储设备:硬盘、软盘、光盘、U盘等、蓝光光驱
- 硬盘:传统硬盘(HDD)==固态硬盘(SSD)- CPU缓存
- CPU比较主流的厂商- AMD公司- Interl公司
- CPU架构- x86架构,8086架构,80286,80386,x86称号- 8位、16位、32位、64位,CPU一次可以处理的数据量,- 32位CPU一次可以从内存中读取大约3.25G左右的数据量- 64位CPU一次可以从内存中读取大约128G左右的数据量- CPU核心- 单核心,一颗CPU只能有一个运算单元- 多核心,一颗CPU里边有两个以上的运算单元

Linux根目录介绍

- /(根):系统所有数据都存放在根目录下
- /bin:存放用户和管理员必备的可执行的二进制程序文件
- /boot:存放Linux系统内核及引导系统程序所需要的文件目录  
- /dev:存放硬件设备的目录,如键盘、鼠标、硬盘、光盘等等  
- /etc:存放服务的配置文件,用户信息文件  
- /root:超级管理员的家目录
- /home:系统普通用户的家目录
- /lib:存放系统中的程序运行所需要的共享库及内核模块  
- /opt:额外安装的可选应用程序包所放置的位置
- /srv:服务启动之后需要访问的数据目录  
- /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下  
- /var:存放系统执行过程中经常变化的文件,如随时都在变化的日志文件就存放/var/log/下  
- /mnt、/media :光盘和镜像等预设的挂载点
- /proc:Linux伪文件系统,该目录下的数据存在于内存当中,不占用磁盘空间
- /lib64 :存放函式库
- /run :程序或服务启动后,存放PID的目录- /sys:存放被建立在内存中的虚拟文件系统- /usr:操作系统软件资源所放置的目录  - /usr/bin:与/bin目录相同,存放用户可以使用的命令程序- /usr/lib:与/lib目录相同,存放系统中的程序运行所需要的共享库及内核模块- /usr/etc:用于存放安装软件时使用的配置文件- /usr/games:与游戏比较相关的数据放置处- /usr/include:c/c++等程序语言的档头(header)与包含档(include)放置处 - /usr/lib64:与/lib64目录相同,存放函式库- /usr/libexec:不经常被使用的执行程序或脚本会放置在此目录中- /usr/local: 额外安装的软件存放目录  - /usr/sbin:该目录与/sbin目录相同,存放用户可执行的二进制程序文件- /usr/share: 放置只读架构的杂项数据文件 - /usr/src:一般软件源代码建议存放该目录下

查看内核信息

uname 命令用于显示系统内核信息
命令格式:uname [-选项]
常用选项-s:显示内核名称-r:显示内核版本

查看CPU信息

- /proc/cpuinfo文件用于存放系统CPU信息- lscpu 用于显示CPU架构信息- 命令格式:lscpu [-选项]
------------------------------------------------------------------------------------
#查看/proc/cpuinfo文件内容
[root@localhost ~]# cat /proc/cpuinfo 
processor :#系统中逻辑处理核的编号。对于单核处理器,则可认为是其CPU编号,对于多核处理器则可以是物理核、或者使用超线程技术虚拟的逻辑核
vendor_id :   #CPU制造商     
cpu family :  #CPU产品系列代号
model   :    #CPU属于其系列中的哪一代的代号
model name:    #CPU属于的名字及其编号、标称主频
stepping   :   #CPU属于制作更新版本
cpu MHz   :    #CPU的实际使用主频
cache size   :  #CPU二级缓存大小
physical id   : #单个CPU的标号
siblings       :#单个CPU逻辑物理核数
core id        :#当前物理核在其所处CPU中的编号,这个编号不一定连续
cpu cores    :  #该逻辑核所处CPU的物理核数
apicid          :#用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续
fpu             : #是否具有浮点运算单元(Floating Point Unit)
fpu_exception  :  #是否支持浮点计算异常
cpuid level   :   #执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容
wp             :  #表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection)
flags          :   #当前CPU支持的功能
bogomips   :       #在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second)
clflush size  :    #每次刷新缓存的大小单位
cache_alignment :  #缓存地址对齐单位
address sizes     :#可访问地址空间位数
power management : #对能源管理的支持,有以下几个可选支持功能:
------------------------------------------------------------------------------------
#使用lscpu查看cpu信息
[root@localhost ~]# lscpuArchitecture: #架构 CPU(s): #逻辑cpu颗数 Thread(s) per core: #每个核心线程 Core(s) per socket: #每个cpu插槽核数/每颗物理cpu核数 CPU socket(s): #cpu插槽数 Vendor ID: #cpu厂商ID CPU family: #cpu系列 Model: #型号 Stepping: #步进 CPU MHz: #cpu主频 Virtualization: #cpu支持的虚拟化技术 L1d cache: #一级缓存(google了下,这具体表示表示cpu的L1数据缓存) L1i cache: #一级缓存(具体为L1指令缓存) L2 cache: #二级缓存

查看系统内存信息

- /proc/meminfo文件用于存放系统内存信息- free 用于查看内存使用情况- 命令格式:free [-选项]- 常用选项:-h   #以人类易读方式显示大小(KB,MB,GB)
total: 内存总数used: 已经使用内存数free: 完全空闲内存shared: 多个进程共享的内存buffers: 用于块设备数据缓冲,记录文件系统metadata(目录,权限,属性等)cached: 用于文件内容的缓冲available:真正剩余的可被程序应用的内存数

查看网卡信息

- 网卡配置文件地址: /etc/sysconfig/network-scripts/网卡名
- ifconfig 用于显示和设置网卡的参数
- 命令格式: ifconfig [网卡名]
------------------------------------------------------------------------------------
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=“Ethernet“			#网卡类型=以太 ※
PROXY_METHOD=“none“		#代理方式=关闭
BROWSER_ONLY="no“		#只是浏览器=否
BOOTPROTO=“none“		#获取IP地址的方式=固定IP ※
DEFROUTE=“yes“			#是否设置默认路由=是
IPV4_FAILURE_FATAL=“no“	#是否开启ipv4致命检测=否(如果ipv4配置失败禁用设备)
NAME=“ens32“			#物理网卡设备名字 ※
UUID=“3ef0d258-f9a4-49e5-a9da-7b47bc98daa0	“#网卡UUID
DEVICE=“ens32“			#网卡名字 ※
ONBOOT=“yes“			#开机或重启时是否启动网卡  ※
IPADDR=“192.168.0.210“	#IP地址  ※
PREFIX=“24“				#子网掩码 ※
GATEWAY=“192.168.0.254“	#网关	※
DNS1=“8.8.8.8“			#dns服务器IP地址 ※
DNS2=8.8.4.4			#备用dns服务器IP地址 ※
------------------------------------------------------------------------------------
#使用ifconfig命令查看网卡信息
[root@localhost ~]# ifconfig
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.0.29  netmask 255.255.255.0  broadcast 192.168.0.255inet6 fe80::8d50:c4d5:97b0:9d64  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:b0:cf:c8  txqueuelen 1000  (Ethernet)RX packets 3948  bytes 1811465 (1.7 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 2538  bytes 459113 (448.3 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
#解释:
ens32:		 #网卡名称  ※
flags=4163:	#标志
UP:			#网卡处于活跃状态  ※
BROADCAST:	#支持广播
RUNNING:	#网线已接入
MULTICAST:	#支持组播
mtu 1500:	#最大传输单元(字节),表示此网卡一次能传输的最大数据包 ※
inet 192.168.0.29		#IPV4地址 ※
netmask 255.255.255.0	#子网掩码 ※
broadcast 192.168.0.255	#广播地址 ※
inet6 fe80::8d50:c4d5:97b0:9d64		#IPV6地址
prefixlen 64  scopeid 0x20<link>	#前缀 64 作用域 0x20
ether 00:0c:29:b0:cf:c8	#网卡MAC地址 ※
xqueuelen 1000			#网卡设置的传送队列长度
(Ethernet)				#网卡连接类型
RX packets 3948			#接收正确的数据包 ※
bytes 1811465 (1.7 MiB)	#接收的数据量与字节 ※
RX errors 0  dropped 0  overruns 0  frame 0 #接收到的错误包、丢弃的数据包数、由于速度过快而丢失的数据包、发生frame错误而丢失的数据包数 ※
TX packets 100 		#发送的正确的数据包数 ※
bytes 8116 (7.9 KiB)#发送的数据量、字节  ※
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0 #发送时产生错误的数据包数、丢弃的数据包数、由于速度过快而丢失的数据包数、发生carrier错误而丢失的数据包数、冲突信息包的数目 ※#只查看指定的网卡
[root@localhost ~]# ifconfig ens32lo: 本地回环网卡,不是物理网卡,通过软件虚拟出来的一个网卡,127.0.0.1,用于测试本机的联通性
[root@localhost ~]# ping 127.0.0.1virbr0: 虚拟化的网络接口,通过软件技术虚拟出来的一个网卡,192.168.122.1,KVM虚拟化技术的时候

查看主机名及修改主机名

- /etc/hostname文件用于存放主机名- hostname 命令用于显示和设置主机名- 命令格式:hostname  [新名称]
logout #退出系统
hostnamectl set-hostname test

vi/vim文本编辑器

 Vim是从 vi 发展出来的一个文本编辑器,vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性vi/vim 共分为三种模式:命令模式、输入模式、底线命令模式(末行模式)命令模式:刚刚启动 vi/vim,便进入了命令模式输入模式:在命令模式下按 a/i/o 就进入了输入模式ESC,退出输入模式,切换到命令模式底线命令模式:在命令模式下按下:(英文冒号)就进入了底线命令模式命令格式:vim 文件名若目标文件不存在,则新创建文件并编辑若目标文件以存在,则打开文件并编辑命令模式:刚刚启动 vi/vim,便进入了命令模式:i    切换到输入模式,在当前光标所在字符前插入:a   切换到输入模式,在当前光标所在字符后插入:o   切换到输入模式,在当前光标所在行下插入新行:    切换到底线命令模式,以在最底一行输入命令:x    在命令模式下删除当前光标所在的单字符:dd   删除一整行内容,配合数字可删除指定范围内的行:C    删除当前光标及光标后所有内容并进入输入模式:u    恢复上一次修改内容,一次恢复一个操作,可多次恢复,直到恢复本次操作初始状态为止:$    将光标移动至行尾:0(零)    将光标移动至行首:gg   跳转至文件第一行:G    跳转至文件最后一行:yy    复制当前行,配合数字可以同时复制多行:p    粘贴当前光标所在行下/关键字  搜索文件内关键字,n从上向下快速定位关键字,N从下向上快速定位关键字底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。:w   保存:q   退出:wq    保存并退出:q!     强制退出不保存:wq!  强制保存并退出:set nu   以行号形式显示文件内容:set nonu 取消行号显示:行号     快速跳转到指定行:r          读入另一个文件的数据 , 文件内容填加到光标的下一行 :%s       #:%s/原内容/要替换的/ :nohl   #在Vim搜索完内容会变量,可以取消高亮显示,---------------------------------------------------------------------------------2yy #复制当一行和下一行p粘贴6yy #指定第6行复制shift +zz #保存退出
------------------------------------------------------------------------------------
vi加密 X
vi解密X 输入两次空密码 或者底行模式输入set key= 两次空密码
vi编辑器三种模式:命令、插入、底行模式**ndd:n#为数字。删除光标所在的向下n行,例如20dd则是删除光标所在的向下20行
d1G#删除光标所在到第一行的所有数据
dG#删除光标所在到最后一行的所有数据
d$#删除光标所在处,到该行的最后一个字符
d0#那个是数字0,删除光标所在到该行的最前面的一个字符
:%d #删除vim所有数据
x,X:x向后删除一个字符(相当于[del]按键),X向前删除一个字符(相当于[backspace]即退格键)

修改网卡IP地址

 网卡配置文件地址: /etc/sysconfig/network-scripts/网卡名ifconfig  	        #用于显示和设置网卡的参数systemctl restart network  #重启网络ifup 网卡名       #启动该网卡设备ifdown 网卡名  #禁用该网卡设备
---------------------------------------------------------------------------------
#修改IP地址
[root@test ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32 
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens32"
UUID="16085f4c-f690-4058-b29e-d55c73387026"
DEVICE="ens32"
ONBOOT="yes"
IPADDR="192.168.0.60"   #修改IP地址
PREFIX="24"
GATEWAY="192.168.0.254"
DNS1="114.114.114.114"
IPV6_PRIVACY="no"
~                    
#重启网络(IP地址发生改变,当前终端会断开)
[root@test ~]# systemctl restart network
[c:\~]$ ssh 192.168.0.60#关闭网卡并激活网卡
[root@localhost ~]# ifdown ens32;ifup ens32#查看所有网卡信息
[root@test ~]# ip a 
------------------------------------------------------------------------------------
使用命令修改网卡IP地址nmcli connection modify 网卡名 ipv4.method manual ipv4.addresses IP地址/掩码 connection.autoconnect yes解释:2nmcli connection modify (修改)
网卡名 ipv4.method (配置ipv4地址方法)
manual (手动配置)
ipv4.addresses(ipv4地址)
IP地址/掩码 connection.autoconnect yes (开机自动连接)- 激活网卡:nmcli connection up 网卡名
- 关闭网卡:nmcli connection down 网卡名
- 重启网卡:nmcli connection reload 网卡名
-----------------------------------------------------------------------------------
#使用命令修改网卡IPV地址
[root@test ~]# nmcli connection modify ens32 ipv4.method manual ipv4.addresses 192.168.0.50/24 connection.autoconnect yes#激活网卡
[root@test ~]# nmcli connection up ens32
[c:\~]$ ssh 192.168.0.50

host命令

host用于将一个域名解析到一个IP地址补充:如果最小化安装没有该命令(可以查询该命令由哪个软件包提供: yum provides host)安装:yum -y install bind-utils[root@test ~]# host www.baidu.com

nslookup命令

nslookup用于查询域名解析是否正常,在网络故障时用来诊断网络问题 
[root@test ~]# nslookup www.baidu.com
Server:		114.114.114.114
Address:	114.114.114.114#53Non-authoritative answer:
Name:	www.baidu.com
Address: 110.242.68.4
Name:	www.baidu.com
Address: 110.242.68.3

alias别名管理

 alias命令用于设置命令别名,用户可以使用alias自定义命令别名来简化命令的复杂度.bashrc 文件存放命令别名命令格式:aliasi [别名]=[命令]       #注意事项:等号(=)前后不能有空格unalias 别名         #取消别名which ls #查看命令路径----------------------------------------------------------------------------------#定义别名
[root@test ~]# alias lsnet='ls /etc/sysconfig/network-scripts/'
[root@test ~]# lsnet
[root@test ~]# alias myls='ls -ldh'
[root@test ~]# myls /opt#查看当前系统可用命令别名
[root@test ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias lsnet='ls /etc/sysconfig/network-scripts/'
alias mv='mv -i'
alias myls='ls -ldh'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'#两条命令效果相同
[root@test ~]# ls -l hello
-rw-r--r--. 1 root root 426 328 15:00 hello
[root@test ~]# ll hello
-rw-r--r--. 1 root root 426 328 15:00 hello[root@test ~]# which ls
alias ls='ls --color=auto'/usr/sbin/ls
[root@test ~]# /usr/sbin/ls
[root@test ~]# ls#取消本次命令的别名功能“\”
[root@test ~]# \ls#取消命令别名
[root@test ~]# unalias myls
[root@test ~]# myls
bash: myls: 未找到命令...#定义别名不要跟系统命令发生冲突
[root@test ~]# alias ls=hostname
[root@test ~]# ls
test#取消命令别名
[root@test ~]# unalias ls
[root@test ~]# alias#重新定义别名
[root@test ~]# alias ls='ls --color=auto'
[root@test ~]# ls

history 管理命令历史

history命令用于显示历史记录和执行过的命令,登录系统时会读取.bash_history历史文件中记录下的命令,当退出时,会自动保存到历史命令文件,该命令单独使用时,仅显示历史命令历史命令默认只能存储1000条,可以通过/etc/profile文件修改命令格式:history [-选项] [参数]-a 追加本次新执行的命令至历史命令文件中-d 删除历史命令中指定的命令-c 清空历史命令列表快捷操作:!# 调用命令历史中第N条命令[root@db2 ~]# !6
ls!string 调用命令历史中最近一次以strind开头的命令
[root@db2 ~]# !l
ls
123  anaconda-ks.cfg!! 重复执行上一条命令
[root@db2 ~]# !!
ls
123  anaconda-ks.cfg

date日期时间管理

 date命令用于显示或设置系统日期与时间命令格式:date  [+格式符]       #查看系统日期时间命令格式:date  [-选项]            #设置日期时间常用选项:-s 设置日期时间格式符:+%Y 年份+%B 月份+%d 日+%H 时+%M 分+%S 秒+%F 年-月-日+%X 时:分:秒------------------------------------------------------------------------------------d#查看前几天的时间
date -d '2 days ago' //显示2天前的时间,2019年 02月 10日 星期日 08:53:28 CST
date -d "2 days ago" +%Y%m%d //显示2天前的时间,20190210
date -d '60 second ago' //显示60秒前的时间
date -d '3 months 1 day' //显示3月1天后的时间
date -d '25 Dec' +%j //显示12月25日在当年的哪一天
------------------------------------------------------------------------------------
#显示系统日期与时间
[root@test ~]# date
2021年 03月 28日 星期日 17:08:34 CST#只显示年分
[root@test ~]# date +%Y
2021#只显示月份
[root@test ~]# date +%B
三月#只显示几号
[root@test ~]# date +%d
28#只显示小时
[root@test ~]# date +%H
17#只显示分钟
[root@test ~]# date +%M
10#只显示秒
[root@test ~]# date +%S
24#显示年月日
[root@test ~]# date +%F
2021-03-28#显示时分秒
[root@test ~]# date +%X
17时12分10秒#显示年月日时分秒
[root@test ~]# date +%F%X
2021-03-2817时12分39秒#可以自定义分隔符“-”
[root@test ~]# date +%F-%X
2021-03-28-17时13分38秒[root@test ~]# date +%F:%X
2021-03-28:17时13分55秒#修改系统年月日
[root@test ~]# date -s 2020-03-28
2020年 03月 28日 星期六 00:00:00 CST#修改系统时分秒
[root@test ~]# date -s 17:16:00
2020年 03月 28日 星期六 17:16:00 CST#修改年月日时分秒
[root@test ~]# date -s '2021-03-28 17:17:00'
2021年 03月 28日 星期日 17:17:00 CST
#解释:
''单引号:引用整体,屏蔽特殊符号的功能
""双引号:引用整体,不会屏蔽特殊符号的功能#Linux的两种时钟
系统时钟:内核通过CPU的工作频率去计算的时间
硬件时钟:#显示硬件时间
[root@test ~]# clock
2021年03月28日 星期日 17时23分42秒  -0.945549#显示并同步系统与硬件时钟
[root@test ~]# man hwclock
-s:把系统时间设置成与硬件时间相同
-w:把硬件时间设置成与系统时间相同
[root@test ~]# hwclock -w
[root@test ~]# date
2021年 03月 28日 星期日 17:27:18 CST#cal显示日历
[root@test ~]# cal三月 2021     
日 一 二 三 四 五 六1  2  3  4  5  67  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31#显示指定的全年月份
[root@test ~]# cal 2021

wc统计命令

- wc 用于统计文件的字节数、行数,并将统计的结果输出到屏幕- 命令格式:wc [-选项] 文件名- 常用选项:- -c #统计字节数- -l #统计行数
#统计文件字节数
[root@test ~]# wc -c /etc/passwd
2259 /etc/passwd#统计文件行数
[root@test ~]# wc -l /etc/passwd
43 /etc/passwd[root@test ~]# wc -l /etc/fstab
11 /etc/fstab

管道符

管道符“|”:将命令的输出结果交给另外一条命令作为参数继续处理
[root@test ~]# head -10 /etc/passwd |tail -5[root@test ~]# head -10 /etc/passwd |tail -5 |wc -l
5

重定向操作

- 重定向操作:将前面命令的输出结果,写入到其他的文本文件中- 重定向的表示符号- > #重定向输出(覆盖)- >> #重定向输出(追加)- < #输入重定向(覆盖)- << **#**输入重定向(追加)- > 只收集正确的输出结果- 2> 只收集错误的输出结果- &> 正确错误都收集(覆盖)- &>>正确错误都收集(追加)
------------------------------------------------------------------------------------
cat /root/test1 >/opt/123/test 353  cat /root/test1 >/opt/123354  cat /root/test1 >/opt/123/test355  cat /opt/123//test356  echo systemctl > test1357  cat /root/test1 > /opt/123/test358  cat /opt/123/test359  cat test1360  echo 789 > test1361  cat test1362  echo 789 >> test1363  cat test1364  echo  /root/test1 > /opt/123/test365  cat  /opt/123/test366  echo 123 < test1367  echo 12389 < test1368  cat test1\369  cat test1370  echo 12389 < test1371  cat test1372  echo 12389 << test1373  cat <<EOF ss>374  cat >test1 EOF >>375  cat >test <<eof

echo命令与sleep命令

echo命令用于输出指定的字符串和变量
命令格式:echo [-选项] [参数]
------------------------------------------------------------------------------------
sleep命令可以用来将目前动作延迟一段时间
命令格式:sleep 时间
常用选项: s 秒 m 分钟 h 小时 d 日

用户账号管理

  • 用户账号的作用:用户账号可用来登录系统
  • 用户模板目录:/etc/skel/
[root@localhost ~]# ls -a /etc/skel/
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla[root@localhost ~]# cd /etc/skel/
[root@localhost skel]# vim prompt

useradd创建用户

  • useradd 命令用于创建新的用户

  • 命令格式:useradd [-选项] 用户名

  • 常用选项:

    • 编程从入门到放弃图片、-u 指定用户UID

    • -d 指定用户家目录(了解)

    • -c 用户描述信息

    • -g 指定用户基本组(了解)

    • -G 指定用户附加组

    • -s 指定用户的解释器程序

[root@localhost ~]# useradd user1#创建用户并指定用户的UID
[root@localhost ~]# useradd -u 1100 user2#创建用户并指定用户的家目录
root@localhost ~]# useradd -d /opt/user3 user3#创建用户并指定UID与用户描述信息
[root@localhost ~]# useradd -u 1400  -c yunwei user4#创建test组
[root@localhost ~]# groupadd test#创建用户指定用户UID、描述信息、基本组
[root@localhost ~]# useradd -u 1500 -c xxoo@163.com -g test user5
[root@localhost ~]# id user5#创建用户指定用户UID、描述信息、附加组
[root@localhost ~]# useradd -u 1600 -c yunwei -G test xiaozhang
[root@localhost ~]# id xiaozhang
uid=1600(xiaozhang) gid=1600(xiaozhang)=1600(xiaozhang),1401(test)#/sbin/nologin :禁止用户登录系统
[root@localhost ~]# useradd -u 1800 -c test -s /sbin/nologin user8
user8:x:1800:1800:test:/home/user8:/sbin/nologin

id命令

  • UNIX/LINUX。id 命令用于查看系统用户和用户所在组的信息

  • 命令格式:id [-选项] [用户名]

[root@localhost ~]# id user1
uid=1001(user1) gid=1001(user1)=1001(user1)

/etc/passwd用户信息文件

用户的基本信息存放在/etc/passwd文件

[root@localhost ~]# vim /etc/passwd
root:x:0:0:root:/root:/bin/bash
#每个字段含义解释:用户名:密码占位符:UID:基本组GID:用户描述信息:家目录:解释器程序
UID:0 超级用户
UID:1-999 系统伪用户,不能登录系统
UID:1000-65535 普通用户,管理员创建的用户

组:

基本组(初始组):一个用户只允许有一个基本组

附加组(在基本组之外组):一个用户可以允许有多个附加组

Ubuntu 入门注意、用户—>bash程序(解释器)—>内核—>硬件

/etc/default/useradd文件

/etc/default/useradd 存放用户默认值信息

[root@localhost ~]# vim /etc/default/useradd
# useradd defaults file
GROUP=100 #用户默认组
HOME=/home #用户家目录
INACTIVE=-1 #密码过期宽限天数(/etc/shadow文件第7个字段)
EXPIRE= #密码失效时间(/etc/shadow文件第8个字段)
SHELL=/bin/bash #默认使用的
SKEL=/etc/skel #模板目录
CREATE_MAIL_SPOOL=yes #是否建立邮箱

/var/spool/mail/用户邮件目录

[root@localhost ~]# ls /var/spool/mail/
laowang  lisi  rpc  user1  user2  user3  user4  user5  user8  xiaozhang#查看邮件
[root@localhost ~]# mail

passwd设置用户密码

  • passwd命令用于设置用户密码

  • 命令格式:passwd [-选项] [用户名]

  • 密码规范:长度不能少于8个字符,复杂度(数字、字母区分大小写,特殊字符)

  • 密码规范:本次修改的密码不能和上次修改的密码太相近

  • shell入门?常用选项

    • -S 查看密码信息
    • -l 锁定用户密码
    • -u 解锁用户密码
    • -d 删除密码
    • –stdin 通过管道方式设置用户密码
  • 非交互设置用户密码

    命令格式:echo ‘密码’ | passwd --stdin 用户名

#设置用户密码
[root@localhost ~]# passwd user1
更改用户 user1 的密码 。
新的 密码:1
无效的密码: 密码是一个回文
重新输入新的 密码:1
passwd:所有的身份验证令牌已经成功更新。#使用user1用户登录系统
[user1@localhost ~]$ ls
prompt
[user1@localhost ~]$ cat prompt 
不允许随便修改系统xx文件!
有问题可联系管理员邮箱:xxoo@163.com#查看用户密码信息
[root@localhost ~]# passwd -S user1#锁定用户当密码
[root@localhost ~]# passwd -l user2
锁定用户 user2 的密码 。
passwd: 操作成功[root@localhost ~]# passwd -S user2
user2 LK 2021-04-10 0 99999 7 -1 (密码已被锁定。)#解锁用户密码
[root@localhost ~]# passwd -u user2
解锁用户 user2 的密码。
passwd: 操作成功#删除用户密码
[root@localhost ~]# passwd -d user2
清除用户的密码 user2。
passwd: 操作成功#非交互设置用户密码
[root@localhost ~]# echo 1 | passwd --stdin laowang
更改用户 laowang 的密码 。
passwd:所有的身份验证令牌已经成功更新。

/etc/shadow用户密码文件

  • 用户的密码信息存放在/etc/shadow文件中,该文件默认任何人都没有任何权限(不包括root)
[root@localhost ~]# vim /etc/shadow
root:$6$1ji5e8yglrZWAcI6$FONKr3qebZufQ.u0Mf/MbipzGw/MVvxS.vgXcy/duc4b/GU0U7tfe37wPQ4XJEXstqBuwvaJqq2/kY/g/783u/::0:99999:7:::
#每个字段含义解释:
第一字段:用户名
第二字段:密码加密字符串,加密算法为SHA512散列加密算法,如果密码位是“*”或者“!!”表示密码已过期
第三个字段:密码最后一次修改日期,日期从1970年1月1日起,每过一天时间戳加1
第四个字段:密码修改的期限,如果该字段为0表示随时可以修改密码,例如:该字段为10,代表10天之内不可以修改密
第五个字段:密码有效期
第六个字段:密码到期前警告时间(和第五个字段相比)
第七个字段:密码过期后的宽限天数(和第五个字段相比)
第八个字段:账号失效时间,日期从1970年1月1日起
第九个字段:保留#chage命令用于修改/etc/shadow文件信息,修改文件内容第三个字段(密码最后一次修改时间)
[root@localhost ~]# chage -d 0 user8

su命令

  • su命令用于切换当前用户身份到其他用户身份

  • 命令格式:su [-选项] [用户名]

#只切换用户身份,环境没有改变
[root@localhost ~]# su user1
[user1@localhost root]$ ls
ls: 无法打开目录.: 权限不够
[user1@localhost root]$ cd
[user1@localhost ~]$ exit
exit#切换用户身份,连同环境一起切换
[root@localhost ~]# su - user1
上一次登录:六 410 16:54:40 CST 2021pts/1 上
[user1@localhost ~]$ pwd
/home/user1#普通用户切换为root(需要输入root用户的密码)
[user1@localhost ~]$ su - root
密码:
上一次登录:六 410 16:05:17 CST 2021192.168.0.1pts/2 上

usermod修改用户属性

  • usermod 命令用于修改已存在用户的基本信息

  • LINUX教程。命令格式:usermod [-选项] 用户名

  • 常用选项:

    • -u 修改用户UID
    • -d 修改用户家目录(了解)
    • -g 修改用户基本组(了解)
    • -c 修改用户描述信息
    • -G 添加用户附加组
    • -s 修改用户shell
#修改用户UID(用户如果以登录系统,不允许修改)
[root@localhost ~]# usermod -u 1111 user1
[root@localhost ~]# id user1
uid=1111(user1) gid=1001(user1)=1001(user1)#修改用户描述信息
[root@localhost ~]# usermod -c xxoo@163.com user8#修改用户的附加组
[root@localhost ~]# usermod -G test user8
[root@localhost ~]# id user8
uid=1800(user8) gid=1800(user8)=1800(user8),1401(test)#修改用户的解释器
[root@localhost ~]# usermod -s /bin/bash user8

userdel删除用户

  • userdel 用于删除给定的用户以及与用户相关的文件,该命令若不加选项仅删除用户账号,不删除用户的家目录

  • 命令格式:userdel [-选项] 用户名

  • 常用选项:

    • -r 删除用户同时,并删除用户的家目录
#删除用户,仅删除账号,不删除家目录
[root@localhost ~]# userdel user8
[root@localhost ~]# ls /home
laowang  lisi  user1  user2  user4  user5  user8  xiaozhang
[root@localhost ~]# id user8
id: user8: no such user#删除用户,连同用户家目录一并删掉
[root@localhost ~]# userdel -r user4
[root@localhost ~]# ls /home
laowang  lisi  user1  user2  user5  user8  xiaozhang
[root@localhost ~]# id user4
id: user4: no such user

groupadd添加新组

  • groupadd 用于创建一个新的工作组,新组的信息将被添加到/etc/group文件中

  • vim 上一页下一页、命令格式:groupadd [-选项] 组名

  • 常用选项:

    • -g GID #指定组的GID
#创建组
[root@localhost ~]# groupadd -g 1555 student
[root@localhost ~]# cat /etc/group

/etc/group组信息文件

  • 组信息存放在/etc/group文件中
[root@localhost ~]# vim /etc/group
root:x:0:
#每个字段含义解释:组名:组密码占位符:GID:组中附加用户

/etc/gshadow组密码文件

  • 组密码信息存放在/etc/gshadow文件中
[root@localhost ~]# vim /etc/gshadow
root:::
#每个字段含义解释:组名:组密码:组内管理员:组中附加用户

groupmod修改组属性

  • groupmod 用于修改指定工作组属性

  • 命令格式:groupmod [-选项] 组名

  • 常用选项:

    • -g GID #修改组的GID
    • -n 新组名 #修改组名
#修改组名
[root@localhost ~]# groupmod -n stugrp student#修改组GID
root@localhost ~]# groupmod -g 1666 stugrp

gpasswd组管理命令

  • gpasswd 是Linux工作组文件/etc/group和/etc/gshadow管理工具,用于将用户添加到组或从组中删除

  • vim使用技巧?命令格式:gpasswd [-选项] 用户名 组名

  • 常用选项:

    • -a #将用户添加到工作组
    • -d #将用户从工作组中删除
#创建用户
[root@localhost ~]# useradd hary
[root@localhost ~]# useradd tom
[root@localhost ~]# useradd natasha
[root@localhost ~]# useradd kenji
[root@localhost ~]# useradd jack#讲用户加入到组
[root@localhost ~]# gpasswd -a hary stugrp
正在将用户“hary”加入到“stugrp”组中
[root@localhost ~]# gpasswd -a tom stugrp
正在将用户“tom”加入到“stugrp”组中
[root@localhost ~]# gpasswd -a kenji stugrp
正在将用户“kenji”加入到“stugrp”组中
[root@localhost ~]# gpasswd -a natasha stugrp
正在将用户“natasha”加入到“stugrp”组中
[root@localhost ~]# gpasswd -a jack stugrp
正在将用户“jack”加入到“stugrp”组中
[root@localhost ~]# #查看组文件信息
[root@localhost ~]# cat /etc/group
stugrp:x:1666:hary,tom,kenji,natasha,jack#将用户从组中删除
root@localhost ~]# gpasswd -d tom stugrp
[root@localhost ~]# gpasswd -d hary stugrp
正在将用户“hary”从“stugrp”组中删除
[root@localhost ~]# gpasswd -d jack stugrp
正在将用户“jack”从“stugrp”组中删除
[root@localhost ~]# gpasswd -d kenji stugrp
正在将用户“kenji”从“stugrp”组中删除
[root@localhost ~]# cat /etc/group

groupdel删除组

  • groupdel 用于删除指定工作组

  • 命令格式:groupdel 组名

[root@localhost ~]# groupdel stugrp

chmod权限管理

权限的重要性:
任何一个系统,权限都是非常重要的,如果没有权限的话,那系统的安全就没办法保障,特别是对于Linux这种多用户的系统来讲,通常一台机器有很多个用户都在使用的话,那我们就应该通过权限去控制这些用户在系统的操作

  • chmod(英文全拼:change mode)设置用户对文件的权限
  • 命令格式:chmod [-选项] 归属关系±=权限类别 文件…
  • 不常用选项:
    • -R 递归修改目录下所有的子文件与子目录的权限与父目录相同
  • 归属关系:u 所有者 g 所属组 o 其他人
  • 权限类别: r 读取 w 写入 x 执行 - 没有权限
  • 操作:+ 添加权限 - 去除权限 = 重新定义权限
  • 权限数字表示:r ---- 4 w ---- 2 x ---- 1 0 没有权限
#查看文件详细属性
[root@localhost ~]# ll hello
-        rw-      r--       r--       . 1 root  root  426 328 15:00 hello
文件类型  所有者权限 所属组权限 其他人的权限     所有者 所属组         #为文件所有者添加执行权限
[root@localhost ~]# chmod u+x hello
[root@localhost ~]# ll hello
-rwxr--r--. 1 root root 426 328 15:00 hello#为文件所属组添加写权限
[root@localhost ~]# chmod g+w hello
[root@localhost ~]# ll hello
-rwxrw-r--. 1 root root 426 328 15:00 hello#为文件其他人添加写权限
[root@localhost ~]# chmod o+w hello
[root@localhost ~]# ll hello
-rwxrw-rw-. 1 root root 426 328 15:00 hello#使用(逗号)可以同时为多个用户授权
[root@localhost ~]# chmod g+x,o+x hello
[root@localhost ~]# ll hello
-rwxrwxrwx. 1 root root 426 328 15:00 hello#去除所有者执行权限
[root@localhost ~]# chmod u-x hello
[root@localhost ~]# ll hello
-rw-rwxrwx. 1 root root 426 328 15:00 hello#去除所属组执行权限
[root@localhost ~]# chmod g-x hello
[root@localhost ~]# ll hello
-rw-rw-rwx. 1 root root 426 328 15:00 hello#去除其他人执行权限
[root@localhost ~]# chmod o-x hello
[root@localhost ~]# ll hello
-rw-rw-rw-. 1 root root 426 328 15:00 hello#同时去除ugo写权限
[root@localhost ~]# chmod u-w,g-w,o-w hello
[root@localhost ~]# ll hello
-r--r--r--. 1 root root 426 328 15:00 hello#重新定义所有者权限
[root@localhost ~]# chmod u=rwx hello
[root@localhost ~]# ll hello
-rwxr--r--. 1 root root 426 328 15:00 hello#重新定义所属组权限
[root@localhost ~]# chmod g=rwx hello
[root@localhost ~]# ll hello
-rwxrwxr--. 1 root root 426 328 15:00 hello#重新定义其他人权限
[root@localhost ~]# chmod o=rwx hello
[root@localhost ~]# ll hello
-rwxrwxrwx. 1 root root 426 328 15:00 hello#创建目录并设置目录权限
[root@localhost ~]# mkdir /test
[root@localhost ~]# ll -d /test
drwxr-xr-x. 2 root root 6 411 14:30 /test#为目录所属组添加写权限
[root@localhost ~]# chmod g+w /test
[root@localhost ~]# ll -d /test
drwxrwxr-x. 2 root root 6 411 14:30 /test#为目录其他人添加写权限
[root@localhost ~]# chmod o+w /test
[root@localhost ~]# ll -d /test
drwxrwxrwx. 2 root root 6 411 14:30 /test
[root@localhost ~]# #重新定义所有用户权限
[root@localhost ~]# chmod u=rwx,g=rx,o=rx /test
[root@localhost ~]# ll -d /test
drwxr-xr-x. 2 root root 6 411 14:30 /test#同时为所有用户定义相同权限
[root@localhost ~]# chmod ugo=rwx /test
[root@localhost ~]# ll -d /test
drwxrwxrwx. 2 root root 21 411 14:37 /test#权限数字定义方式
[root@localhost ~]# ll hello
-rwxrwxrwx. 1 root root 426 328 15:00 hello
所有者:rwx   4+2+1=7
所属组:r     4
其他人:r     4
[root@localhost ~]# chmod 744 hello
[root@localhost ~]# ll hello
-rwxr--r--. 1 root root 426 328 15:00 hello所有者:rw 4+2=6
所属组:rw 4+2=6
其他人:--- 0
[root@localhost ~]# chmod 660 hello
[root@localhost ~]# ll hello
-rw-rw----. 1 root root 426 328 15:00 hello所有者:rwx 4+2+1=7
所属组:wx  2+1=3
其他人:--- 0
[root@localhost ~]# touch /hello.txt
[root@localhost ~]# ll /hello.txt 
-rw-r--r--. 1 root root 0 411 14:45 /hello.txt
[root@localhost ~]# chmod 730 /hello.txt 
[root@localhost ~]# ll /hello.txt 
-rwx-wx---. 1 root root 0 411 14:45 /hello.txt#去除所有用户权限
[root@localhost ~]# chmod 000 /hello.txt 
[root@localhost ~]# ll /hello.txt 
----------. 1 root student 0 411 14:45 /hello.txt#递归修改目录下所有子文件与子目录权限
[root@localhost ~]# ll -d /test
drwxrwxrwx. 2 root root 21 411 14:37 /test[root@localhost ~]# mkdir /test/xxoo
[root@localhost ~]# ll -d /test/xxoo/
drwxr-xr-x. 2 root root 6 411 14:54 /test/xxoo/[root@localhost ~]# ll /test/abc.txt 
-rw-r--r--. 1 root root 0 411 14:37 /test/abc.txt
#默认用户在该目录下创建文件权限与父目录不一致#递归修改目录下所有子文件与子目录权限
[root@localhost ~]# chmod -R 777 /test
[root@localhost ~]# ll /test/abc.txt 
-rwxrwxrwx. 1 root root 0 411 14:37 /test/abc.txt
[root@localhost ~]# ll -d /test/xxoo
drwxrwxrwx. 2 root root 6 411 14:54 /test/xxoo#深入理解权限,
[root@localhost ~]# mkdir /test1
[root@localhost ~]# chmod 777 /test1
[root@localhost ~]# ll -d /test1
drwxrwxrwx. 2 root root 6 411 14:57 /test1#在该目录下创建文件与目录
[root@localhost ~]# touch /test1/root.txt
[root@localhost ~]# mkdir /test1/rootbak
[root@localhost ~]# chmod o=rx /test1
[root@localhost ~]# ll -d /test1
drwxrwxr-x. 2 root root 6 411 14:59 /test1
[root@localhost ~]# touch /test1/root.txt#普通用户对该目录如果拥有rwx权限是可以删除该目录下任何用户创建的文件(包括root)
[user1@localhost ~]$ cd /test1
[user1@localhost test1]$ ls
root.txt
[user1@localhost test1]$ ll root.txt 
-rw-r--r--. 1 root root 0 411 14:57 root.txt
[user1@localhost test1]$ rm -rf root.txt 
[user1@localhost test1]$ ls
rootbak
[user1@localhost test1]$ rm -rf rootbak/
[user1@localhost test1]$ ls
[user1@localhost test1]$ ll -d /test1
drwxrwxrwx. 2 root root 6 411 14:59 /test1总结:用户对文件拥有rwx权限(针对的是文件的内容)
r:查看文件内容
w:对文件内容拥有增删改权限,并不能删除文件,删除文件取决于对文件所在的目录有没有rwx权限
x:可以运行该文件2.用户对目录拥有rwx权限
r:查看目录下内容
w:在该目录创建文件,修改文件属性,删除任何用户的文件(包括root)
x:可以切换到该目录

umask预设权限

  • umask用于显示或设置创建目录的权限掩码
  • 命令格式:umask [-p] [-S] [mode]
root@localhost ~]# mkdir /test2
[root@localhost ~]# ll -d /test2
drwxr-xr-x. 2 root root 6 411 15:05 /test2
[root@localhost ~]# umask --help
umask: 用法:umask [-p] [-S] [模式]#查看目录默认权限掩码,以数字形式显示
[root@localhost ~]# umask -p
umask 0022#查看目录默认权限掩码,以字母形式显示
[root@localhost ~]# umask -S
u=rwx,g=rx,o=rx#设置目录默认权限掩码,为所属组添加写权限
[root@localhost ~]# umask g+w 
[root@localhost ~]# mkdir /test3
[root@localhost ~]# ll -d /test3
drwxrwxr-x. 2 root root 6 411 15:09 /test3#去除目录默认权限掩码
[root@localhost ~]# umask g-w 
[root@localhost ~]# mkdir /test4
[root@localhost ~]# ll -d /test4
drwxr-xr-x. 2 root root 6 411 15:10 /test4
---------------------------------------------------------
第一个0是特殊权限,第二个0是所有者的权限(没有被取出),2是可写(被去除了),只剩rx,可读可执行,
给某个目录设定权限,ugo+rwx即可,比如 umask g+w

chown归属关系管理

修改文件的所有者,更多时候是为了得到更高的权限。
普通用户从其他人身份(只对此文件有读取权限)转变成了所有者身份,对此文件就拥有读和写权限。

  • shell入门教程。chown(英文全拼:change owner)用于设置文件的所有者和所属组关系

  • 命令格式:

    • chown [-选项] 所有者:所属组 文档 #同时修改所有者和所属组身份
    • chown [-选项] 所有者 文档 #只修改所有者身份
    • chown [-选项] :所属组 文档 #只修改所属组身份
  • 常用选项:

    • -R 递归修改
#创建文件
[root@localhost ~]# chmod 744 /hello.txt 
[root@localhost ~]# ll /hello.txt 
-rwxr--r--. 1 root student 0 411 14:45 /hello.txt#修改文件所有者为user1用户
[root@localhost ~]# chown user1 /hello.txt 
[root@localhost ~]# ll /hello.txt 
-rwxr--r--. 1 user1 student 0 411 14:45 /hello.txt#修改文件所有者与所属组为lisi
[root@localhost ~]# chown lisi:lisi /hello.txt 
[root@localhost ~]# ll /hello.txt 
-rwxr--r--. 1 lisi lisi 4 411 15:26 /hello.txt#创建目录
[root@localhost ~]# mkdir /test5
[root@localhost ~]# ll -d /test5
drwxr-xr-x. 2 root root 6 411 15:30 /test5#修改目录所有者与所属组为lisi
[root@localhost ~]# chown lisi:lisi /test5
[root@localhost ~]# ll -d /test5
drwxr-xr-x. 2 lisi lisi 6 411 15:30 /test5[root@localhost ~]# touch /test5/root.txt
[root@localhost ~]# ll /test5/root.txt 
-rw-r--r--. 1 root root 0 411 15:31 /test5/root.txt#递归修目录下所有子文件与子目录归属关系
[root@localhost ~]# chown -R lisi:lisi /test5
[root@localhost ~]# ll /test5/root.txt 
-rw-r--r--. 1 lisi lisi 0 411 15:31 /test5/root.txt

SetUID特殊权限

  • SetUID(SUID):对于一个可执行的文件用了SUID权限后,普通用户在执行该文件后,临时拥有文件所有者的身份,该权限只在程序执行过程中有效,程序执行完毕后用户恢复原有身份

  • SetUID权限会附加在所有者的 x 权限位上,所有者的 x 权限标识会变成 s

  • 设置SetUID命令格式:chmod u+s 文件名

#搜索命令绝对路径
[root@localhost ~]# which passwd
/usr/bin/passwd
[root@localhost ~]# ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 27832 610 2014 /usr/bin/passwd[root@localhost ~]# which cat
/usr/bin/cat
[root@localhost ~]# ll /usr/bin/cat
-rwxr-xr-x. 1 root root 54160 1031 2018 /usr/bin/cat#普通用户使用cat命令是默认无法查看/etc/shadow文件内容
[lisi@localhost ~]$ cat /etc/shadow
cat: /etc/shadow: 权限不够#设置SUID权限
[root@localhost ~]# chmod u+s /usr/bin/cat
[root@localhost ~]# ll /usr/bin/cat
-rwsr-xr-x. 1 root root 54160 1031 2018 /usr/bin/cat#普通用户再次使用cat命令时临时获取文件所有者身份
[lisi@localhost ~]$ cat /etc/shadow#去除SUID权限
[root@localhost ~]# chmod u-s /usr/bin/cat
[root@localhost ~]# ll /usr/bin/cat
-rwxr-xr-x. 1 root root 54160 1031 2018 /usr/bin/cat[root@localhost ~]# which vim
/usr/bin/vim[root@localhost ~]# ll /usr/bin/vim
-rwxr-xr-x. 1 root root 2294208 1031 2018 /usr/bin/vim#为vim设置SUID权限
[root@localhost ~]# chmod u+s /usr/bin/vim
[root@localhost ~]# ll /usr/bin/vim
-rwsr-xr-x. 1 root root 2294208 1031 2018 /usr/bin/vim[root@localhost ~]# ll /etc/passwd
-rw-r--r--. 1 root root 2737 410 17:26 /etc/passwd[root@localhost ~]# chmod u-s /usr/bin/vim
[root@localhost ~]# vim /etc/passwd

SetGID特殊权限

  • 从入门到放弃下一句?SetGID(SGID):当对一个可执行的程序文件设置了SGID后,普通用户在执行该文件时临时拥有其所属组的权限,该权限只在程序执行过程中有效,程序执行完毕后用户恢复原有组身份

  • 当对一个目录作设置了SGID权限后,普通用户在该目录下创建的文件的所属组,均与该目录的所属组相同

  • SetGID权限会附加在所属组的 x 权限位上,所属组的 x 权限标识会变成 s

  • 设置SetGID命令格式:chmod g+s 文件名

[root@localhost ~]# mkdir /test6
[root@localhost ~]# chmod 777 /test6
[root@localhost ~]# ll -d /test6
drwxrwxrwx. 2 root root 6 411 15:59 /test6#为目录设置SGID权限
[root@localhost ~]# chmod g+s /test6
[root@localhost ~]# ll -d /test6
drwxrwsrwx. 2 root root 6 411 15:59 /test6
#SGID权限会附加在所属组执行权限位,所属组执行权限变为s[root@localhost ~]# touch /test6/1.txt
[root@localhost ~]# ll /test6/1.txt 
-rw-r--r--. 1 root root 0 411 16:00 /test6/1.txt#修改目录所属组为lisi组
[root@localhost ~]# chown :lisi /test6
[root@localhost ~]# ll -d /test6
drwxrwsrwx. 2 root lisi 19 411 16:00 /test6#SGID对目录设置后,在该目录下创建的任何文件都会继承父目录的所属组
[root@localhost ~]# touch /test6/2.txt
[root@localhost ~]# ll /test6/2.txt 
-rw-r--r--. 1 root lisi 0 411 16:01 /test6/2.txt

Sticky BIT特殊权限

  • Sticky BIT(SBIT):该权限只针对于目录有效,当普通用户对一个目录拥有rwx权限时,普通用户可以在此目录下拥有增删改的权限,应为普通用户对目录拥有rwx权限时,是可以删除此目录下的所有文件

  • 如果对一个目录设置了SBIT权限,除了root可以删除所有文件以外,普通用户就算对该目录拥有rwx权限,也只能删除自己建立的文件,不能删除其他用户建立的文件

  • python从入门到放弃、SBIT权限会附加在其他人的 x 权限位上,其他人的 x 权限标识会变成 t

  • 设置SBIT命令格式:chmod o+t 目录名

#为目录设置SBIT
[root@localhost ~]# chmod o+t /test
[root@localhost ~]# ll -d /test
drwxrwxrwt. 2 root root 6 411 16:07 /test[lisi@localhost test]$ ls
kenji.txt  laowang.txt  lisi.txt[lisi@localhost test]$ rm -rf *
rm: 无法删除"kenji.txt": 不允许的操作
rm: 无法删除"laowang.txt": 不允许的操作

find文件/目录查找命令

  • find 命令根据预设的条件递归查找文件或目录所在位置
  • 命令格式:find 查找路径 查找条件1 查找条件2 … [-exec 处理命令 {} ; ]
    • –exec 可接额外的命令来处理查找到结果
    • {} 代表find查找到的内容被放置{}中
    • ; 代表额外处理命令结束
  • 常用查找条件
    • -type 类型(f文件 d目录 l链接文件)
    • -name “文件名”
    • -iname 按文件名查找忽略大小写
    • -size 文件大小(k、M、G + 大于 - 小于)
    • -a (并且)两个条件同时满足
    • -o (或者)两个条件满足任意一个即可
    • -user 用户名
    • -mtime 按日期查找(+ 代表多少天之前 - 代表多少天之内,0代表24小时之内)
  • find命令范例
[root@localhost ~]# ls /var/log#按照类型查找,类型为文件
[root@localhost ~]# find /var/log -type f
[root@localhost ~]# ll boot.log-20210417
[root@localhost ~]# ll /var/log/boot.log-20210417
[root@localhost ~]# ll /var/log/vmware-network.2.log#按照类型查找,类型为目录
[root@localhost ~]# find /var/log -type d
[root@localhost ~]# ll -d /var/log/tuned
[root@localhost ~]# ll -d /var/log/qemu-ga#按照类型查找,类型为链接文件
[root@localhost ~]# find /var/log -type l
[root@localhost ~]# fin /etc/ -type l
[root@localhost ~]# find /etc/ -type l
[root@localhost ~]# ll /etc/scl/conf#按照名字查找
[root@localhost ~]# find /etc/ -name passwd
/etc/passwd
/etc/pam.d/passwd#按照名字查找,类型为文件
[root@localhost ~]# find /etc/ -name passwd -type f#按照名字查找,以tab结尾,类型为文件
[root@localhost ~]# find /etc/ -name '*tab' -type f#按照名字查找,以pass开头,类型为文件
[root@localhost ~]# find /etc/ -name 'pass*' -type f
[root@localhost etc]# find . -name '*.conf' -type f[root@localhost ~]# find /etc/ -name '*tab*' -type f#按照名字忽略大小写查找,类型为文件
[root@localhost ~]# find /etc/ -iname FSTAB -type f
/etc/fstab
[root@localhost ~]# find /etc/ -name FSTAB -type f#查找大于10k的文件
[root@localhost ~]# find /var/log -size +10k -type f
[root@localhost ~]# du -h /var/log/boot.log-20210417
16K	/var/log/boot.log-20210417#查找大于1M的文件
[root@localhost ~]# find /var/log -size +1M -type f
[root@localhost ~]# du -h /var/log/audit/audit.log
2.4M	/var/log/audit/audit.log[root@localhost ~]# find /home -size +1M -type f#查找小于1M的文件
[root@localhost ~]# find /var/log -size -1M -type f
[root@localhost ~]# du -h /var/log/spooler
0	/var/log/spooler#查找大于10k并且小于20k,类型为文件
[root@localhost ~]# find /var/log -size +10k -a -size -20k -type f#-o或者,当有多个条件时,满足任意其中一个即可
[root@thinkmo ~]# find /var/log -name "*.log" -o -size -10k -type f#查找属于lisi用户的文件/目录
[root@localhost ~]# find /home -user lisi#查找30天之前被修改过,类型为文件
[root@localhost ~]# find /var/log -mtime +30 -type f
[root@localhost ~]# find /var/log -mtime +10 -type f#查找10天之内被修改过,类型为文件
[root@localhost ~]# find /var/log -mtime -10 -type f
root@localhost ~]# find /var/log -mtime -30 -type f#查找30之前被修改过,类型为文件,拷贝到/opt目录下
[root@localhost ~]# find /var/log -mtime -30 -type f -exec cp {} /opt \;
-exec 可接额外的命令来处理查询结果
{}   find 查找的内容被放置在{}\   代表额外处理命令结束
cp把放置在尖括号中的内容拷贝到了opt下一份

持续更新中…

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/107306.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息