Linux 进阶笔记(一)

这几篇博文主要记录博主的Linux 学习之路,用作以后回顾和参考。大家可以选择略过也可以作参考。

(一)Linux 初步笔记
(二)Linux 进阶笔记(一)
(三)Linux 进阶笔记(二)
(四)Shell 编程进阶笔记

Linux 网络管理

OSI(开放系统互联(Open System Interconnection))的设计目的:
      OSI模型的设计目的是成为一个所有销售商都能实现的开放网路模型,来克服使用众多私有网络模型所带来的困难和低效性。OSI是在一个备受尊敬的国际标准团体的参与下完成的,这个组织就是ISO(国际标准化组织)。

(一)OSI 七层模型

Linux 进阶笔记(一)_第1张图片

  • 物理层(physical layer):物理层是OSI分层结构体系中最重要、最基础的一层,它建立在传输媒介基础上,起建立、维护和取消物理连接作用,实现设备之间的物理接口。物理层只接收和发送一串比特(bit)流,不考虑信息的意义和信息结构。物理层包括对连接到网络上的设备描述其各种机械的、电气的、功能的规定。
  • 数据链路层(date link layer):在物理层提供比特流服务的基础上,将比特信息封装成数据帧Frame,起到在物理层上建立、撤销、标识逻辑链接和链路复用以及差错校验等功能。通过使用接收系统的硬件地址或物理地址来寻址。建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的传输,同时为其上面的网络层提供有效的服务。
  • 网络层(network layer):网络层也称通信子网层,是高层协议之间的界面层,用于控制通信子网的操作,是通信子网与资源子网的接口。在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点,确保数据及时传送。网络层将解封装数据链路层收到的帧,提取数据包,包中封装有网络层包头,其中含有逻辑地址信息源站点和目的站点地址的网络地址。
  • 传输层(transport layer):传输层建立在网络层和会话层之间,实质上它是网络体系结构中高低层之间衔接的一个接口层。用一个寻址机制来标识一个特定的应用程序(端口号)。传输层不仅是一个单独的结构层,它还是整个分层体系协议的核心,没有传输层整个分层协议就没有意义。传输层的数据单元是由数据组织成的数据段(segment)这个层负责获取全部信息,因此,它必须跟踪数据单元碎片、乱序到达的数据包和其它在传输过程中可能发生的危险。
  • 会话层(session layer):这一层也可以称为会晤层或对话层,在会话层及以上的高层次中,数据传送的单位不再另外命名,统称为报文。会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。如服务器验证用户登录便是由会话层完成的。
  • 表示层(presentation layer):表示层向上对应用层提供服务,向下接收来自会话层的服务。表示层是为在应用过程之间传送的信息提供表示方法的服务,它关心的只是发出信息的语法与语义。表示层要完成某些特定的功能,主要有不同数据编码格式的转换,提供数据压缩、解压缩服务,对数据进行加密、解密。例如图像格式的显示,就是由位于表示层的协议来支持。
  • 应用层(application layer):网络应用层是通信用户之间的窗口,为用户提供网络管理、文件传输、事务处理等服务。其中包含了若干个独立的、用户通用的服务协议模块。网络应用层是OSI的最高层,为网络用户之间的通信提供专用的程序。应用层的内容主要取决于用户的各自需要,这一层设计的主要问题是分布数据库、分布计算技术、网络操作系统和分布操作系统、远程文件传输、电子邮件、终端电话及远程作业登录与控制等。
    PS:图片与介绍来自百度百科。

(二)TCP/IP 四层模型

Linux 进阶笔记(一)_第2张图片

  • 网络接口层:网络接口层与OSI 参考模型中的物理层与数据链路层相对应。它负责监视数据在主机和网络之间的交换。事实上,TCP/IP 本身未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP 的网络接入层进行连接。地址解析协议(ARP) 就是工作在此层,及OSI 参考模型的数据链路层。
  • 网际层:网际层对于OSI 参考模型的网络层,主要解决主机到主机的通信问题。它所包含的协议设计数据包在整个网络上的逻辑传输。该层有三个主要的协议:网际协议(IP)、互联网组管理协议(IGMP)和互联网控制报文协议(IXMP)。
  • 传输层:传输层对应于OSI 参考模型的传输层,为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完成性。运输层主要有两个主要的协议:传输控制协议(TCP)、用户数据报协议(UDP)。
  • 应用层:应用层对应于OSI 参考模型的高层,为用户提供所需要的各种服务,比如:FTP、Telnet、DNS 等。

(三)TCP/IP 模型与OSI模型 之间的比较

相同点:

  1. OSI 参考模型和TCP/IP 参考模型都采用了层次结构的概念
  2. 都能提供面向连接和无连接两种通信服务机制

不同点:

  1. OSI 是七层结构,TCP/IP 是四层结构
  2. TCP/IP对可靠性要求更高
  3. OSI 模型是在协议开发前设计的,具有通用性。TCP/IP 是在协议集的基础上建立的模型,不适用于非TCP/IP 网络
  4. 实际市场应用不同,TCP/IP 已经成为“实际上的国际标准”

TCP/IP 文件传输协议中数据封装的过程:
Linux 进阶笔记(一)_第3张图片

(四)Linux 下进行网络配置

ifconfig :-> 查看网络状态
ifconfig eth0 [ip地址] netmask [子网掩码]:-> 临时配置eth0 网卡的IP地址与子网掩码
setup :-> 进入图形化界面配置IP 地址(在支持该命令的前提下),配置完成后执行 “service network restart”命令

Linux 下使用文件永久配置IP 地址:
网卡信息文件:/etc/sysconfig/network-scripts/ifcfg-eth0
       执行 “vi /etc/sysconfig/network-scripts/ifcfg-eth0” 命令可以修改网卡信息,该文件中的内容如下(蓝色显示的内容表示不需要修改的部分):

Linux 进阶笔记(一)_第4张图片
主机名配置文件: /etc/sysconfig/network
DNS 配置文件: /etc/resolv.conf

(五)Linux 下网络环境查看命令

if down [网卡设备名] :-> 禁用某一个网卡设备名
ifup [网卡设备名] :-> 启用该网卡设备
netstat [选项] :-> 查看网络状态
[选项] :

  • -t :列出tcp 协议端口
  • -u :列出udp 协议端口
  • -n :不使用域名与服务名,使用IP 地址和端口号
  • -l :仅列出在监听状态的网络服务
  • -a :列出所有的网络连接

netstat -rn :-> 查看网关 与route -n 同
nslookup [主机名或ip] :-> 进行域名与IP 地址解析

(六)Linux 下网络测试命令

ping [IP或域名] -c 3 :->探测指定IP 或域名的网络状况b并指定ping 包的次数为3
telnet [域名或IP] [端口] :->远程管理与端口探测命令
traceroute [域名] :->路由跟踪命令
traceroute -n [IP] :->使用IP 进行路由跟踪,速度更快

(七)SSH 远程管理命令

ssh [用户名]@ip :->远程管理指定的服务器
scp -r [用户名]@ip:[远程文件路径] [本地路径] :->从远程服务器上下载文件到本地(递归下载文件)
scp -r [本地文件] [用户名]@ip:[上传路径] :->本地上传文件到远程服务器

Linux 软件安装管理

(一)软件包分类:①源码包、②二进制包

①优点:
       开源,如果有足够的能力可以修改源码
       可以自由选择所需要的功能
       软件是编译安装,所以更加稳定效率更高
       卸载方便
①缺点:
      安装步较多,容易出现错误
      编译时间过长,安装比二进制包时间较长
      因为是编译安装,所以在出错的时候对新手不太友好
②优点:
       包管理系统简单,只通过几个命令就可以实现包的安装,升级与卸载
       安装速度比源码包快得多
②缺点:
       经过编译,不再可以看到源码
       功能选择不如源码包灵活
       依赖性较强

(二)rpm 命令管理

所有的rpm 包都在系统的光盘中
rmp 包的依赖性:树形依赖、环形依赖、模块依赖
rpm 相关命令:

rpm -ivh [包全名] :-> rpm 安装
选项:

  • -i(install) : 安装
  • -v(verbose) : 显示详细信息
  • -h(hash) : 显示进度

rpm -Uvh [包全名]:-> rpm 安装如果已经安装了软件包表示更新,没安装则执行安装命令
rpm -e [包名] :-> rpm 卸载软件包
rpm -q [包名] :-> 查询包是否安装
rpm-qa :-> 查询所有已经安装的rpm 包,可以使用管道符帮助查询
rpm -qi [包名] :-> 查询安装的软件包的信息
rpm -qip [包全名] :-> 查询未安装的软件包的信息
rpm -ql [包名] :-> 查询rpm 安装包文件的安装位置
rpm -qlp [全包名] :-> 查询未安装的rpm 包文件将要安装的位置
rpm -qf [系统文件名] :->查询系统文件属于哪个rpm 包
rpm -V [已安装的包名] :->进行包检验,是否与初始安装的文件一致
rpm2cpio [包全名] | cpio -idv .[文件绝对路径]:->从rpm 包中提取文件到当前文件路径下,注意.不能省略代表当前目录

(三)yum 在线安装

yum 在线安装的好处:将所有的软件包放到官方的服务器上,当进行yum 安装时,会自动进行安装并解决依赖性的问题。

ls /etc/yum.repos.d/ :->列出所有yum 源文件,默认只有CentOS-Base.repo 源文件是生效的

CentOS-Base.repo 源文件中的大概内容介绍:
Linux 进阶笔记(一)_第5张图片

光盘yum 源搭建:

  1. 因为所有的yum 包都在光盘中,所以先将光盘挂载代/mnt 目录下
  2. 使默认 CentOS-Base.repo yum 源文件失效(只需要改名即可)
  3. 修改CentOS-Media.repo 源文件中的 baseurl 为光盘挂载点地址并将enabled 的值修改为1

yum 命令:

yum list :-> 查询所有可用软件包列表
yum search [关键字] :-> 查询服务器上所有和关键字相关的包
yum -y install [包名] :-> yum 安装命令
yum -y update [包名] :->安装包升级,注意:如果不加包名将升级所有包及内核
yum -y remove [包名] :-> 卸载安装包
yum grouplist :-> 列出所有可用的软件组列表
yum groupinstall [组名] :-> 安装指定的软件组
yum groupremove [组名] :-> 删除指定的软件组

(四)源码包安装

源码包与rpm 包安装后的区别:
      安装位置不同;rpm包不建议指定安装位置,安装目录由提供软件包的作者决定(他们觉得哪个位置下合适就安装在哪个目录下,所以提供了 rpm -e [包名] 命令卸载安装的rpm 包);源码包建议安装目录:/user/local/软件名,没有卸载命令,直接删除安装目录。
源码包的安装过程(以Apache 为例):

  1. 下载源码包
  2. 对源码包进行解压
  3. 进入解压缩目录
  4. 执行 ./configure –prefix=/usr/local/apache ,执行安装位置为/usr/local/apache 下
  5. 执行 make 编译命令,如果报错可以执行以下make clean 命令后再执行make 命令
  6. 执行make install ,编译安装
  7. 执行 /usr/local/apache/bin/apachectl start,启动Apache
  8. 关闭防火墙,进行访问

晒一下结果(嘿嘿嘿):
这里写图片描述

特殊权限管理

(一)ACL 权限

一般的权限有所有者、所属组、其他人这三种,当这三种满足不了我们的需求的时候就可以使用ACL权限。

dumpe2fs -h /dev/sda5 :-> 查看分区ACL 权限是否开启
mount -o remount, acl / :-> 重新挂载根分区,在挂载时加入ACL 权限
cat /etc/fstab :-> 修改配置文件永久开启分区ACL 权限(在默认的情况下是开启的)
mount -o remount / :-> 修改后重新挂载,使修改生效
setfacl -m u:[用户名]:[用户权限r、w、x] [文件] :-> 给指定用户添加对某个文件的ACL 权限
setfacl -m g:[组名]:[组权限r、w、x] [文件] :-> 给指定的组添加对某个文件的ACL 权限
getfacl [文件名]:-> 查看指定文件的ACL 权限
setfacl -x u:[用户名] [文件名]:-> 删除指定用户的ACL 权限
setfacl -x g:[组名] [文件名]:-> 删除指定组的ACL 权限
setfacl -b [文件名] :-> 删除文件的所有ACL 权限
setfacl -m u:[用户名]:[用户权限r、w、x] -R [目录名] :-> 递归给目录及目录下文件设定ACL 权限(要注意权限溢出的问题)
setfacl -m d:u:[用户名]:[用户权限r、w、x] -R [目录名] :->在该文件目录下新建的文件都会继承该文件目录的ACL 权限

本地做的一个测试,然后查看其ACL 权限信息

[root@localhost home]# getfacl test
# file: test    
# owner: zhangsan
# group: stu
user::rwx
user:Jas:r-x
group::rwx
mask::rwx
other::---

(二)sudo 权限

visudo:-> root 用户下可以通过该命令编辑配置文件赋予普通用户所没有的权限命令
sudo -l :-> 普通用户执行该命令可以查看被赋予的可以执行的命令

下面是该配置文件中的一条语句:

root    ALL=(ALL)       ALL
[1]     [2]  [3]         [4]  

[1]:表示用户名
[2]:被管理主机的地址
[3]:可用的身份
[4]授权命令(注意权限命令最好是绝对路径)

%wheel[表示组名]    ALL=(ALL)       ALL 
(同上)

举例(赋予某个用户关机的命令):
①:执行"visudo" 命令,在该配置文件中添加一行数据
②:-[用户名] ALL=(ALL) /sbin/shutdown -r now
③:普通用户执行 sudo /sbin/shutdown -r now 命令即可

(三)SetUID

SetUID 的功能:
      一:只有可执行的二进制程序才可以是指SetUID
      二:命令执行者要对程序有可执行(x)权限
      三:命令执行者在执行的时候会切换身份从而具备执行的条件(这个身份一般是root)
      四: SetUID 权限只有在程序执行的过程中有效,也就意味着身份只有在执行特定命令的时候才会改变

以用户修改密码为例:
      所有的用户密码都保存在/etc/shadow 文件中,通过查看基本权限可以看出普通用户对密码不具备的任何权限,但是在查看用户密码命令时,普通用户有着可读可执行的权限。再看前面的权限详细信息,有一个s,所以普通用户在进行修改密码的时候会切换到root 用户,从而获得修改密码的权限,但是在密码修改完成后会失去root 权限变成普通用户的权限。

[root@localhost ~]# ll /etc/shadow 
----------. 1 root root 1059 1222 17:32 /etc/shadow

[root@localhost ~]# ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 30768 222 2012 /usr/bin/passwd

SetUID 相关命令:

chmod 4775 [文件名]:-> 设置SetUID 的命令
chmod u+s [文件名] :-> 同上
chmod 0775 [文件名]:-> 取消etUID
chmod u-s [文件名] :->取消用户文件的SetUID

PS:除了系统默认的SetUID 之外最好不要设置。

(四)SetGID

SetUID 针对文件的功能:
      一:只有可执行的二进制文件才能设置SetGID 权限
      二:命令执行者要对该文件有x 权限
      三:程序在执行的时候用户组的身份升级为该程序文件所属组的身份
      四:只有在执行的过程中有效

以用户执行locate 命令为例:
      从下面可以看出普通用户不具有locate 命令的任何权限,之所以普通用户可以执行locate 命令,是因为用户在执行locate 命令的时候会切换自己的用户组为slocate 组,从而获得执行该命令的权限,但是在执行完命令之后,用户的组身份又会变成自己的所属组。

[root@localhost ~]# ll /var/lib/mlocate/mlocate.db 
-rw-r-----. 1 root slocate 2843985 1217 15:39 /var/lib/mlocate/mlocate.db

[root@localhost ~]# ll /usr/bin/locate
-rwx--s--x. 1 root slocate 42032 824 2010 /usr/bin/locate

SetUID 针对目录的功能:
      一:普通用户必须对目录具有r 、x 权限才可以进入到该目录并查看该目录下的文件
      二:普通用户在这个目录下所属组的身份会变成该目录的所属组
      三:若普通用户对此目录拥有w 权限时,当普通用户在该目录下创建文件时,该文件默认的所属组会变成该文件目录的所属组

(五)Sticky BIT

Sticky BIT 粘着位作用
      一:粘着位只对当前目录有效
      二:普通用户对该目录至少拥有w 权限一般是有7 权限
      三:如果没有粘着位,由于普通用户拥有w 权限,所以删除该目录下的所有文件,包括其他用户创建的文件。一旦赋予了粘着位,除了root 用户可以删除所有文件,普通用户就算拥有w 权限,也只能删除自己创建的文件,但是不能删除其他用户创建的文件
粘着位相关命令:

chmod 1775 [目录名]:-> 设置粘着位
chmod o+t [目录名]:-> 同上
chmod 0775 [目录名]:-> 取消粘着位
chmod o-t [目录名] :-> 同上

(六)不可改变的权限

相关命令:

chattr [+-=][选项] [文件或目录]:->设置某些不可改变的权限
[选项]:

  • i(insert) : 如果对文件设置 i 属性,那么不允许对文件进行删除、改名、也不能添加和修改文件中的数据;如果对目录设置i 属性,那么只能修改目录下的文件数据,但是不允许删除和创建文件
  • a(append) :如果对文件设置a 属性,那么只能在文件中添加数据,但是不能修改也不能删除数据,可以使用echo 命令添加数据;如果对目录设置a 属性,那么只允许在目录中建立和修改文件,但是不允许修改

你可能感兴趣的:(Linux)