这几篇博文主要记录博主的Linux 学习之路,用作以后回顾和参考。大家可以选择略过也可以作参考。
(一)Linux 初步笔记
(二)Linux 进阶笔记(一)
(三)Linux 进阶笔记(二)
(四)Shell 编程进阶笔记
OSI(开放系统互联(Open System Interconnection))的设计目的:
OSI模型的设计目的是成为一个所有销售商都能实现的开放网路模型,来克服使用众多私有网络模型所带来的困难和低效性。OSI是在一个备受尊敬的国际标准团体的参与下完成的,这个组织就是ISO(国际标准化组织)。
相同点:
不同点:
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” 命令可以修改网卡信息,该文件中的内容如下(蓝色显示的内容表示不需要修改的部分):
主机名配置文件: /etc/sysconfig/network
DNS 配置文件: /etc/resolv.conf
if down [网卡设备名] :-> 禁用某一个网卡设备名
ifup [网卡设备名] :-> 启用该网卡设备
netstat [选项] :-> 查看网络状态
[选项] :
- -t :列出tcp 协议端口
- -u :列出udp 协议端口
- -n :不使用域名与服务名,使用IP 地址和端口号
- -l :仅列出在监听状态的网络服务
- -a :列出所有的网络连接
netstat -rn :-> 查看网关 与route -n 同
nslookup [主机名或ip] :-> 进行域名与IP 地址解析
ping [IP或域名] -c 3 :->探测指定IP 或域名的网络状况b并指定ping 包的次数为3
telnet [域名或IP] [端口] :->远程管理与端口探测命令
traceroute [域名] :->路由跟踪命令
traceroute -n [IP] :->使用IP 进行路由跟踪,速度更快
ssh [用户名]@ip :->远程管理指定的服务器
scp -r [用户名]@ip:[远程文件路径] [本地路径] :->从远程服务器上下载文件到本地(递归下载文件)
scp -r [本地文件] [用户名]@ip:[上传路径] :->本地上传文件到远程服务器
①优点:
开源,如果有足够的能力可以修改源码
可以自由选择所需要的功能
软件是编译安装,所以更加稳定效率更高
卸载方便
①缺点:
安装步较多,容易出现错误
编译时间过长,安装比二进制包时间较长
因为是编译安装,所以在出错的时候对新手不太友好
②优点:
包管理系统简单,只通过几个命令就可以实现包的安装,升级与卸载
安装速度比源码包快得多
②缺点:
经过编译,不再可以看到源码
功能选择不如源码包灵活
依赖性较强
所有的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 安装时,会自动进行安装并解决依赖性的问题。
ls /etc/yum.repos.d/ :->列出所有yum 源文件,默认只有CentOS-Base.repo 源文件是生效的
光盘yum 源搭建:
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 为例):
一般的权限有所有者、所属组、其他人这三种,当这三种满足不了我们的需求的时候就可以使用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::---
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
二:命令执行者要对程序有可执行(x)权限
三:命令执行者在执行的时候会切换身份从而具备执行的条件(这个身份一般是root)
四: SetUID 权限只有在程序执行的过程中有效,也就意味着身份只有在执行特定命令的时候才会改变
以用户修改密码为例:
所有的用户密码都保存在/etc/shadow 文件中,通过查看基本权限可以看出普通用户对密码不具备的任何权限,但是在查看用户密码命令时,普通用户有着可读可执行的权限。再看前面的权限详细信息,有一个s,所以普通用户在进行修改密码的时候会切换到root 用户,从而获得修改密码的权限,但是在密码修改完成后会失去root 权限变成普通用户的权限。
[root@localhost ~]# ll /etc/shadow
----------. 1 root root 1059 12月 22 17:32 /etc/shadow
[root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 2月 22 2012 /usr/bin/passwd
SetUID 相关命令:
chmod 4775 [文件名]:-> 设置SetUID 的命令
chmod u+s [文件名] :-> 同上
chmod 0775 [文件名]:-> 取消etUID
chmod u-s [文件名] :->取消用户文件的SetUID
PS:除了系统默认的SetUID 之外最好不要设置。
SetUID 针对文件的功能:
一:只有可执行的二进制文件才能设置SetGID 权限
二:命令执行者要对该文件有x 权限
三:程序在执行的时候用户组的身份升级为该程序文件所属组的身份
四:只有在执行的过程中有效
以用户执行locate 命令为例:
从下面可以看出普通用户不具有locate 命令的任何权限,之所以普通用户可以执行locate 命令,是因为用户在执行locate 命令的时候会切换自己的用户组为slocate 组,从而获得执行该命令的权限,但是在执行完命令之后,用户的组身份又会变成自己的所属组。
[root@localhost ~]# ll /var/lib/mlocate/mlocate.db
-rw-r-----. 1 root slocate 2843985 12月 17 15:39 /var/lib/mlocate/mlocate.db
[root@localhost ~]# ll /usr/bin/locate
-rwx--s--x. 1 root slocate 42032 8月 24 2010 /usr/bin/locate
SetUID 针对目录的功能:
一:普通用户必须对目录具有r 、x 权限才可以进入到该目录并查看该目录下的文件
二:普通用户在这个目录下所属组的身份会变成该目录的所属组
三:若普通用户对此目录拥有w 权限时,当普通用户在该目录下创建文件时,该文件默认的所属组会变成该文件目录的所属组
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 属性,那么只允许在目录中建立和修改文件,但是不允许修改