Linux介绍
Linux,是一种免费使用,开源和自由传播的类UNIX操作系统。是一个多用户,多任务,支持多线程和多CPU的操作系统。它支持32位和64位硬件。是一个性能稳定的多用户网络操作系统。
linux下的目录介绍(CentOS7)
根目录:一般只存放目录,不存放文件,原则上不修改(删除)根目录下的内容,否则可能造成系统崩溃。
bin:存放可执行的二进制文件的目录(所有用户都能执行),比如常用的命令:cat,ls等。有些系统会存在sbin目录,顾名思义,就是给超级用户用的目录,该目录所有命令只能通过root权限用户执行。
boot:存放Linux系统启动时用到的一些文件(一定不能删除)。比如:系统引导管理器:/boot/grub
dev:存放Linux系统下的设备文件。访问该目录下某个文件,相当于访问某个设备,比如挂载光驱:mount /dev/cdrom /media;
/**
* 挂载,将光盘挂载到media目录。
* 挂载是linux本身的文件目录与硬件设备的文件目录合二为一的过程
* /
mount /dev/cdrom /media
// 卸载
umount /dev/cdrom
// 查询
df -h
// 查看卸载时报错 target is busy。 谁在占用(yum install -y psmisc)
fuser -mv /media
// 将占用media进程kill掉
fuser -kv /media
etc:系统默认存放配置文件的地方,比如:etc/init.d,/etc/sysconfig。 不建议在此存放可执行文件。
home:普通用户的家目录。新增用户账号时,用户的家目录都存放在此目录下。~表示当前目录的家目录, ~xxx表示xxx家目录;
opt:给主机额外安装软件所放置的目录;
root:系统管理员root的家目录。
tmp:临时目录,比如文件上传(文件不是很重要,操作空间大)。
var:存放经常修改的数据,比如程序运行的日志文件等。
usr:用户自己的软件安装处。
mnt: 测试目录,用于了存放测试数据。
输入输出错误重定向
输入重定向:将输入的内容写入到指定的文件中去。
输出重定向:将输出的内容写入到指定的文件中去。
错误重定向:将错误的内容写入到指定的文件中去。
一般系统中不允许我们将错误内容打印到控制台,而是写入到文件中持久化起来。
文件描述符
名称 | 文件描述符 | 用途 |
---|---|---|
stdin | 0(可以省略) | 标准输入 |
stdout | 1(可以省略) | 标准输出 |
stderr | 2(不可省略) | 标准错误输出 |
- 输入重定向: <
- 输出重定向: > (覆盖写入),>> (追加写入)
// 将查询到的数据,输出到wp.txt中
ps -ef |grep nginx > wp.txt
- 错误重定向: llll 2
// 将打印的信息不打印到控制台,
llll 2 > wp.txt
管道符
管道符:将管道符左侧的输出结果传输给右侧作为参数。
ps -ef |grep -v grep |grep nginx // 去掉当前grep查询nginx对应的进程
VI编辑器
vi编辑器是一款强大的编辑器,vim是vi的升级款,可以显示不同的字体颜色(不过很多Linux不自带vim,需要自行下载)。
- 命令模式:不可编辑模式,在插入模式按esc后,或者进入编辑文件后未按“i”之前。
$ #移动到这一行的行尾
gg #移动到文档第一行行首
G #移动到文档最后一行行首
x #删除内容,删除一个字符
dd #删除游标所在的那一整行
u #复原原来的操作
v #选中范围
y #复制选中范围
p #粘贴
- 插入模式:按住键盘的 “i”
- 底行模式:前提是得在命令模式,输入 : 进入。
# 都需要先输入 :
n #n为数字。光标移动到第n 行
/ #寻找内容
%s/word1/word2/g #从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2
n1,n2s/word1/word2/g #n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代
为 word2
set nu #显示行号
set nonu #取消行号
q! #强制离开不保存
wq #离开并保存
wq! #强制离开并保存
! #暂时离开(可以在!后输入Linux命令,比如查询,查看某个文件)
用户和用户组管理
Linux是一个多用户、多任务的操作系统。一个Linux系统,可以有多个用户同时登录并进行工作,互不干扰。这是windows做不到的。
1. Linux用户分类:
- 超级管理员 root: 拥有完全的权限。root的UID是0
- 普通用户:权限有一定的限制,可以登录系统。一般可以执行/usr/local/bin或者/bin或者/usr/bin或者自己家目录的命令。无法越权执行命令。普通用户的UID: 500-60000(CentOS6),1000-60000(CentOS7)
- 系统用户:一般不会登录系统,是用来维持某个服务程序。 系统用户UID:1-499(CentOS6),1-1000(CentOS7)
2.用户的配置文件:
- 账号信息:/etc/passwd
- 密码信息:/etx/shadow
// 密码文件中
用户 密码占位符 UID GID 用户描述 用户的家目录 登录后使用shell的解释
lighthouse : x : 1000 : 1000 : : /home/lighthouse : /bin/bash
/sbin/nologin #是不可登录的
/bin/bash #可以登录
3.添加用户(useradd):
- -u #指定用户UID
- -d #指定用户家目录
- -g #指定用户所属组
- -r #指定用户是系统用户
- -s #用户登录shell解释器
- -M #不创建家目录
// 创建一个test用户,指定UID 10032 指定家目录为/home/test 指定所属组为root,指定可以登录
useradd -u 10032 -d /home/test -g 0 -s /bin/bash test
登录用户时出现以下信息如何解决:
如下:
bash-4.2$
bash-4.2$
解决:复制相关信息到家目录
cp -r /etc/skel/.bash* /home/用户名/
4.删除用户(userdel):
# 删除 test用户
userdel test #不会删家目录
userdel test -r # 删除家目录
5.修改用户(usermod):
- -u #指定用户UID
- -d #指定用户主目录
- -g #指定用户所属组
usermod -u 10003 test
7.给用户设置密码(passwd):
passwd test
echo "123456" | passwd --stdin test # 将test 密码设置为123456
7.新增用户组(groupadd):
8.删除用户组(groupdel):
文件属性和权限修改
1.文件属性
# 查看文件属性
ls -lrti
137121 -rw-r--r--. 1 root root 242916 Sep 8 14:40 dnf.log
第一列:i节点;i节点可以理解文件id,一个i节点号可以对应多个文件,一个文件只能对应一个i节点号
第二列:文件的类型与权限
-:代表的是文件;d:代表是目录; l:软链接文件 ;b:代表块设备;c:代表的是硬件设备(键盘)
rw-------:分为三列 rw- --- ---,第一列为所属者的权限,第二列为所属组的权限,第三列为其它的权限
r:表示读权限 ;w:表示写权限;x:表示执行权限
4:表示读权限 ;2:表示写权限;1:表示执行权限
第三列:有多少文件名链接到这个节点(硬链接)
第四列:文件的所有者
第五列:文件的所属组
第六列:文件当前的大小,单位默认为B
第七列:创建或最后一次修改的时间
第八列:文件名
2.权限修改
- 修改文件的权限命令chmod:
chmod -R 777 /home/test/* # 递归修改test文件目录下所有的文件和目录 -R代表递归 7代表rwx,所以777就是所有人都能读写操作,
chmod u+x /home/test/xxx.log # u修改所有者. u+x 给所有者增加执行权限
chmod g+x,o-w xxx.log # g修改所属组,o修改其他权限。 给所属组增加执行权限,给其他权限减去写权限。
软链接&硬链接
软链接:文件有类似于Windows的快捷方式。文件实际上是一个文本文件,其中包含的有另一文件的位置信息。如果源文件删除,则软链接不能用了
硬连接:指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。如果文件删了,硬链接还能用。
1.创建软链接&硬链接:
ln -s /var/log/xxx.log /usr/local #文件名必须要用绝对路径,否则容易读不到
ln /var/log/xxx.log /usr/local #文件名必须要用绝对路径,否则容易读不到
文件归档
归档:简称打包,是指把多个文件组合到一个文件中,好处是文件数目变少了,有利于文件的传输以及备份。归档工具:tar 可以将多个文件合并为一个文件
压缩:是利用速算法将文件有损或者无损的处理,目的是为了节约空间和提高传输速率。压缩工具:gzip,xz等
解压缩命令。
- gzip: 压缩比率低,压缩速率快。只能压缩文件,不能压缩目录。 扩展后缀 .gz。
gzip rest.txt # 不保留源文件压缩,压缩后rest.txt会被删除,压缩包名rest.txt.gz
gzip rest.txt > rest.txt.gz # 可选是否保留源文件压缩,Y,覆盖不保留,N,不覆盖保留。 > 重定向
gzip -c rest.txt > rest.txt.gz # 保留原文件压缩
gunzip rest.txt.gz # 不保留源文件解压
gzip -d rest.txt.gz # 不保留源文件解压
gunzip -c rest.txt.gz > rest.txt # 保留源文件解压,
注意:
#注意,不能写成gzip rest.txt > rest.gz 这样改变了文件后缀,解压会出现问题。
gzip rest.txt > rest.gz # 错误
- xz: 压缩速度慢,压缩比率高。可以压缩目录和文件。 拓展名.xz
xz rest.txt # 不保留源文件压缩
xz -c rest.txt > rest.txt.xz # 保留源文件压缩
unxz rest.txt.xz # 不保留源文件的解压
xz -d -k rest.txt.xz # 保留原文件的解压
xz -d rest.txt.xz # 不保留源文件解压
tar:归档与压缩命令。
- -c 创建新文件(必须)
- -f 指定文件格式(必须)
- -v 显示详细过程
tar -cvf rest.tar rest # -cvf:创建新文件以及格式,显示压缩过程 rest.tar:归档的新文件名 rest:被归档的目录或者文件
- -z 以gzip方式归档压缩
tar -zcvf rest.tar.gz rest
- -J 以xz方式进行归档压缩
tar -Jcvf rest.tar.xz rest
- -v 解压操作
tar -xf rest.tar.xz
- -C 指定解压路径
tar -xf rest.tar.xz -C /tem/test # 指定解压路径
安装命令
安装好Linux系统后,会有一些命令需要我们自己安装,这边就以netstat与ifconfig命令为例。
#比如找不到telnet命令
[root@VM-12-14-centos ~]# telnet 127.0.0.1 3306
-bash: telnet: command not found
# 安装telnet命令
yum -y install xinetd telnet telnet-server
# 安装netstat与ifconfig命令
yum -y install net-tools
防火墙
在centos7 之前默认采用的防火墙是iptables,而在centos 7则是采用firewall。本质上firewall是iptables的一个升级。
1.查看防火墙服务状态:
# 查看防火墙状态(方法1)
systemctl status firewalld
# Active: active 表示防火墙是启动的
Active: active (running) since Fri 2022-09-09 11:39:37 CST; 3h 31min ago
Docs: man:firewalld(1)
Main PID: 2524191 (firewalld)
Tasks: 2 (limit: 47456)
Memory: 29.2M
CGroup: /system.slice/firewalld.service
└─2524191 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid
Sep 09 11:39:36 VM-12-14-centos systemd[1]: Starting firewalld - dynamic firewall daemon...
Sep 09 11:39:37 VM-12-14-centos systemd[1]: Started firewalld - dynamic firewall daemon.
Sep 09 11:39:37 VM-12-14-centos firewalld[2524191]: WARNING: AllowZoneDrifting is enabled. This is considered an inse>
# 查看防火墙状态(方法2)
firewall-cmd --state
2.重启防火墙:
#关闭防火墙(已经配置了服务)
systemctl stop firewalld.service
#打开防火墙
systemctl start firewalld.service
#重启防火墙
systemctl restart firewalld.service
3.查看防火墙开放端口规则:
firewall-cmd --list-port
#查看端口是否被监听
netstat -tunlp |grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3343/sshd
tcp6 0 0 :::22 :::* LISTEN 3343/sshd
4.开放和关闭端口:
# --permanent表示永久生效,否则重启后失效
# --add-port开放端口
# 80/tcp 端口/端口的协议
#需要reload才有效
firewall-cmd --permanent --add-port=80/tcp
# 重启防火墙
firewall-cmd --reload
# 关闭端口
#不需要reload
firewall-cmd --remove-port=80/tcp
5.SELinux(Security-Enhanced Linux):它属于增强型防火墙。SELinux提供了非常强大的功能,当然也非常复杂,当然如果能够灵活运用,可以大大提高系统的安全性。
SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。
SELinux工作模式:
- enforcing::强制模式。违反selinux 规则的行为将会被阻止并记录到日志中去
- permissive:宽容模式。违反selinux 规则的行为将会记录到日志中去
- disabled:关闭模式。
SELinux配置文件路径:/etc/selinux/config