Linux

学习学习

Posted by lll-yz on April 1, 2021

Linux

Linux文件和目录

文件目录结构树:
  • 在Linux系统中,目录被组织成一个:单根倒置树结构,文件从根目录开始,用/来表示,然后再在根目录下创建其他的目录。

cVMVQx.md.png

Linux重要目录介绍:
  • / : 根目录,位于Linux文件目录结构的顶层,一般根目录下只存放目录,不存放文件,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在应该分区中。
  • /home : 普通用户主目录,当新建账户时,都会分配给这个用户目录,建议单独分区,并分配额外空间用于存储用户数据。
  • /boot : 用于存放系统启动引导文件,内核文件。
  • /root : 该目录时Linux系统管理员(超级用户) root的宿主目录。
  • /tmp : 存放系统运行过程中使用的一些临时文件。
  • /var : 存放系统中经常需要变换的一些文件,如系统日志文件,用户邮箱目录等。
  • /etc : 存放Linux系统及各种程序的配置文件,配置文件比较多的程序在/etc目录中建立独立的子目录,用于存放程序的配置文件。
文件和目录权限:

在Linux中我们可以使用llls -l命令来显示应该文件的属性权限以及文件所属的用户和组。

[root@www/]# ls -l
total 64
dr-xr-xr-x	2 root root 4096 Dec 14	2012 bin
dr-xr-xr-x	4 root root 4096 Apr 19	2012 boot
......

Linux对普通文件的权限说明:

  • r : 可读,对文件有阅读的权限。
  • w : 可写,对文件有修改内容的权限(删除文件自身受父目录权限的影响)。
  • x : 可执行,对文件表示具有执行文件的权限。

Linux对目录的权限说明:

  • r : 可读,表示具有浏览目录的权限。
  • w : 可写,表示具有修改目录内文件的权限。
  • x : 可执行,表示具有进入目录的执行权限。

cVldRs.png

设置文件权限:

1.Linux文件权限有两种设置方法,一种是数字,一种是符号。

2.Linux文件的基本权限就有九个,分别是owner/group/others,三种身份各有自己的read/write/execute权限。

3.文件的权限字符为:[-rwxrwxrwx],这九个权限是三个一组的。其中,我们可以使用数字来代表各个权限,各权限的分数对照如下:

  • r(可读)=4,w(可写)=2,x(执行)=1。

例如:

  • 同一组(owner/group/others) 三个权限(rwx)累加:

    owner = rw = 4 + 2 = 6 grou p= r = 4 other = r = 4

-rw-r--r--. 1 das das 54 9月	 3 10:30 test.md

文件和目录特殊权限:

Linux用户类型和组

用户分为三类:
  • 超级用户:(root) 对本机有至高无上的权限。
  • 普通用户:管理员root创建的用户,一般在自己的宿主目录有绝对权限。
  • 虚拟用户:存在Linux中,满足文件或程序运行的需要创建的用户,不能登录,不能使用。
用户组:
  • 具有相同特征的用户的集合。一个组可以包含多个用户,每个用户也可以属于不同的组。
  • 用户组的目的方便管理员对用户进行集中管理。用户组也分为三类:系统组、私有组和标准组。
用户及用户组配置文件:
  • /etc/passwd : 记录操作系统用户及其属性信息。
  • /etc/shadow : 用户影子口令文件;记录所有用户的密码信息。
  • /etc/group : 记录用户组及其属性的信息。
  • /etc/gshadow : 记录用户组及其相关属性密码信息。
UID和GID:
  • 概念:Linux 登录主机时我们输入用户名,但系统里不会认识用户名的,而是通过/etc/passwd文件里用户名对应的 UIDGID 识别的。
  • UID:每个用户对应一个UID号,UID在本机的操作系统里是唯一的。
  • GID:每个组用户会对应一个GID号,GID在本机的操作系统里是唯一的。

UID的限制:

cVG9w6.md.png

用户及用户组状态命令:

1.su 用户名 – 切换用户

2.id 用户名 – 显示用户的UID,GID

3.whoami – 显示当前用户名称

4.groups –显示用户所属组

5.sudo – 临时使用root权限

Linux服务管理

介绍:

服务 (service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求,因此我们又称为守护进(daemon)。

基本的类型有包括系统服务(.service)、数据监听与交换的插槽档服务(.socket)、储存系统状态的快照类型、提供不同类似执行等级分类的操作环境(.target)等。

service管理指令:
  • 在Centos7.0以前:

    service 服务名 start stop restart reload status
  • 在Centos7.0以后不再使用service,而是systemctl

    systmctl [command] [unit] unit–>服务名称或进程

  • command 主要有:

    start:立刻启动后面接的 unit

    stop:立刻关闭后面接的 unit

    restart:立刻关闭后启动后面接的 unit

systemctl [command] [unit]:

​ command 主要有:

  • reload:不关闭后面接的 unit 的情况下,重新载入配置文件,让设置生效。
  • enable:设置下次开机时,后面接的 unit 自启。
  • disable:设置下次开机时,后面的 unit 不会被启动。
  • status:目前后面接的这个 unit 的状态(正在执行、开机默认执行否、登录等信息)。
  • is-active:目前有没有正在运行中。

Linux vim编辑器

vim 常见命令:
  • :w – 将编辑的数据写入硬盘文件中。
  • :w filename – 将编辑的数据存储为另一个文件。
  • :q – 离开vi。
  • :wq – 存储后离开,加上!为强制。
  • :q! – 修改后不想保存,强制离开。

Linux 防火墙

防火墙具备一些有效的隔离功能,能够对经过防火墙的网络包按照一定的规则进行检查,从而控制网络包的进入进出,以达到限网络访问的一些目的。Linux操作系统,在内核级别就已经集成了防火墙功能,也就是Netfilter组件。而我们在日常生产中使用的iptables则是系统提供给我们的软件工具而已。

Centos操作系统用来管理防火墙的软件工具是iptables,而Centos7中,系统又提供了更为强大的firewalld工具。两者的使用方式相似,都是将写好的规则送往netfilter,告诉内核如何去处理信息包。但是在使用的过程中一定要注意,iptables结合firewalld二者选其一即可,避免冲突。

  • 开启iptables:systemctl start iptables
  • 关闭iptables:systemctl stop iptables
  • 查看iptables现有规则:iptables -L -n
  • 开放22端口:iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  • 禁用23端口:iptables -A INPUT -p tcp --dport 23 -j DROP
  • 添加信任网络:iptables -A INPUT -p tcp -s 1.1.1.1 -j ACCEPT
  • 删除某个信任IP:iptables -D INPUT -p tcp -s 1.1.1.1 -j ACCEPT

Linux 日志

Linux日志大多是以明文存储,一般存储在/var/log目录中,Linux系统主要有三个日志子系统:连接时间日志,进程统计日志,错误日志。

Linux中可以配置日志文件,需要修改日志文件syslog.conf配置,通常是不用配置,除非特殊使用人群。

日志文件介绍:

**boot.log: ** 录了系统在引导过程中发生的事件,就是Linux系统开机自检过程显示的信息。

**lastlog: ** 记录最后一次用户成功登录的时间、登录IP等信息。

**messages: ** 记录Linux操作系统常见的系统和服务错误信息。

**secure: ** Linux系统安全日志,记录用户和工作组变坏情、用户登录认证情况

**btmp: ** 记录Linux登录失败的用户、时间以及远程IP地址。

**syslog: ** 只记录警告信息,常常是系统出问题的信息,使用lastlog查看。

**wtmp: ** 该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件还有其他一系列服务日志,只有对应的服务存在时才会有对应的日志。

Linux 常用命令

关机/重启
关机:shutdown
参数:
		-h now //现在关闭系统
		-h hours:minutes //按预定时间关闭系统,若超过今天的时间戳,则隔天才会关闭
		-c //取消按预定时间关闭系统
		-h + minutes //多少分钟后自动关机
		-r + 30 //30分钟后关机
		-k now 'this system will reboot' //仅仅发出警告信息,不会关机
重启:reboot
ls 命令

描述:列举当前目录或指定目录下所有文件。

参数:

​ -a: 显示当前目录下所有文件,包括隐藏文件。

​ -l : 以列表的方式显示文件详细信息。

mkdir/rmdir 命令
mkdir test  //创建test文件夹
rmdir test  //删除test文件夹  只能删除空文件夹
cd 命令
cd 目录  //进入指定目录
cd ..	//返回上层目录
cd ~	//返回家目录
cd /	//返回根目录
touch 命令
touch test  //创建test文件
cp命令

描述:复制目标文件/文件夹

实例:

将当前目录 test/ 下的所有文件复制到新目录 newtest 下:

cp –r test/ newtest

参数:

​ -a: archive的意思,若要复制的文件为目录,则复制整个目录。

​ -d: 若源文件为连接文件(link file),则复制连接文件属性而非文件本身。

​ -f: 强制(force),若有重复或其他疑问时,不会询问用户,而强制复制。

​ -i: 若目标文件(destination)已存在,在覆盖时会先询问是否真的操作。

​ -l: 建立硬连接(hard link)的连接文件,而非复制文件本身。

​ -p: 与文件的属性一起复制,而非使用默认属性。

​ -r: 递归复制,用于目录的复制操作。

​ -s: 复制成符号连接文件(symbolic link),即”快捷方式”文件。

​ -u: 若目标文件比源文件旧,更新目标文件。

mv 命令

描述:移动文件/文件夹到指定位置

参数:

​ -f: 强制直接移动而不询问。

​ -i: 若目标文件(destination)已经存在,就会询问是否覆盖。

​ -u: 若目标文件已经存在,且源文件比较新,才会更新。

mv test(文件) test1(文件要移动到的文件)
cat 命令

描述:显示文件内容(以只读方式打开)

参数:-n – 显示行号

cat 文件名
>/» 命令

>

描述:输出重定向,会覆盖文件内容。

比如输入一条命令,默认行为是将结果输出到屏幕。但有时候我们需要将输出的结果保存到文件,就可以用重定向。

cat test3 > test1/txt  //将查看到的test3内容赋予txt

»

描述:输出重定向,不会覆盖文件内容,而是追加到文件内容尾部

同上。

ln 命令

描述:创建链接文件

参数:

​ -i: 交互模式,文件存在则提示用户是否覆盖。

​ -s: 软链接(符号链接)。

​ -d: 允许超级用户制作目录的硬链接。

​ -b: 删除,覆盖以前建立的链接。

​ 软链接(符号链接):ln -s source target

​ 硬链接(实体链接):ln source target

find 命令

描述:从指定目录向下递归遍历所有子目录,列举出指定条件的文件。

参数:

​ -name: 按照指定的文件名查找文件。

​ -user: 查找指定用户的所有文件。

​ -size: 设置要查找的文件的大小(+num 大于 -num 小于 num 等于)

gzip/gunzip 命令

gzip 文件名 //压缩文件 (-r :递归压缩)。

gunzip 文件名 //解压文件

ifconfig 查看网卡与配置信息

ps 命令

描述:查看进程信息。

参数:

​ -A:所有的进程均显示出来,与-e具有同样的效用。

​ -a: 显示现行终端机下的所有进程,包括其他用户进程。

​ -u: 以用户为主的进程状态。

​ -x: 通常与 a 整个参数一起使用,可列出较完整的信息。

Linux 开机启动项

某些脚本和服务会随着开机而后台自动启动和运行。

开机启动的两种方法:

​ 一、添加开机自启动服务(只需要两条命令):

systemctl enable redis.service   //设置redis服务为开机自启服务
systemctl start redis.service	//启动redis服务

​ 二、添加开机自启脚本:

1.赋予脚本可执行权限(/opt/script/shell.sh 是你的脚本路径)。

2.打开/etc/rc.d/rc.local/etc/rc.local文件,在末尾添加如下内容。

3.在centos7中,/etc/rc.d/rc.local的权限被降低了,所以需要执行如下命令赋予其可执行权限。

chmod + x /opt/script/shell.sh
su -user -c '/opt/script/shell.sh'
chmod + x /etc/rc.d/rc.local