目录
第一章
Linux介绍
主要运用于服务器、桌面和行业定制。
1.1 特点
- 开源:可下载源码,定制开发,无版权限制
- 多用户:多个用户可以同时登陆操作系统进行操作,每个用户对自己的资源有特定的权限,互不影响
- 多任务:允许用户同时进行多个任务
- 稳定安全:读写权限控制;带保护的子系统;审计跟踪;核心授权
- 广泛的硬件支持,有丰富的设备驱动资源
- 可移植性:95%以上的代码是C语言编写,C语言是机器无关的高级语言,可移植。
Windows属于单用户多任务
1.2 分支
Ubuntu、Debian、centos、Redhat、suse
1.3 Linux系统目录结构
日常运维中,有一半以上的工作内容精力都是对文件的操作,Linux本身也是基于文件形式表示的os
在 Linux 世界里,一切皆文件
/bin:bin是binary的缩写,存放着经常使用的命令
/sbin:s就是super user的意思,这里存放着系统管理员的系统管理程序
/boot:存放着启动Linux的核心文件,包括一些连接文件和镜像文件
/etc:存放系统所需的配置文件
/home:表示除了root用户以外其他用户的家目录。类似于Windows下的User/用户目录
/root:该目录为系统管理员(超级权限者)的用户主目录
/var:非常重要的目录,程序产生的日志都会被记录到/var/log目录下
/media:Linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后会把识别的设备挂载到这个目录下
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统,我们可以将外部的存储挂载到/mnt/上,然后进入该目录就可以查看内容了。
/opt:这是给主机额外安装软件所摆放的目录
/usr/local:这是另一个给主机额外安装软件所安装的目录,一般是通过编译源码的方式安装的程序。
Linux 目录总结一下
- linux 是以文件的形式管理我们的设备,因此 linux 系统,一切皆为文件。
- linux 的各个目录存放的内容是规划好,不用乱放文件。
- linux 的目录中有且只要一个根目录 /
1.4 Linux系统启动过程
(1)启动过程分为五个阶段:
- 内核的引导
- 运行init
- 系统初始化
- 建立终端
- 用户登录系统
(2)Linux的7个运行级别(runlevel):
- 0:停机状态,默认不能为0,否则不能正常启动
- 1:单用户工作状态,root权限,用于系统维护,禁止远程登录
- 2:多用户状态(无NFS)
- 3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
- 4:保留,未使用
- 5:登陆后进入图形GUI模式
- 6:系统正常关闭并重启,默认不能为6
(3)用户登录的三种方式:
- 命令行登录
- ssh登录
- 图形界面登录
第二章 Linux基本指令
2.1 指令标准格式
# 指令主体 (空格) 【选项】 (空格) 【操作对象】
一个指令可以包含多个选项和多个操作对象
2.2 基础指令
1、ls 指令
含义:ls (list)
用法1:#ls
含义:列出当前工作目录下的所有文件/文件夹的名称
用法2:#ls 路径
含义:列出指定路径下的所有文件/文件夹的名称
路径分为绝对路径和相对路径:
- 相对路径:在相对路径中通常会用到2个符号“./”【表示当前目录下】、“../”【上一级目录下】。
- 绝对路径:绝对路径不需要参照物,直接从根“/”开始寻找对应路径;
用法3:#ls 选项 路径
含义:在列出指定路径下的文件/文件夹的名称,并以指定的格式进行显示。
常见的语法:
#ls -l 路径 l表示list,表示以详细列表的形式进行展示
#ls -la 路径 表示显示所有的文件/文件夹(包含了隐藏文件/文件夹)
用法4:#ls -lh 路径
含义:列出指定路径下的所有文件/文件夹的名称,以列表的形式并且在显示文档大小的时候以可读性较高的形式显示
2、pwd指令
用法:#pwd (print working directory,打印当前工作目录)
3、cd指令
命令:#cd (change directory,改变目录)
作用:用于切换当前的工作目录的
语法:#cd 路径
cd ~ 回到当前用户的家目录
cd .. 返回上个目录
4、mkdir指令
指令:mkdir (make directory,创建目录)
语法1:#mkdir 路径 【路径,可以是文件夹名称也可以是包含名称的一个完整路径】
语法2:#mkdir -p 路径
含义:当一次性创建多层不存在的目录的时候,添加-p参数,否则会报错
语法3:#mkdir 路径1 路径2 路径3 …. 【表示一次性创建多个目录】
5、touch指令
指令:touch
作用:创建文件
语法:#touch 文件路径 【路径可以是直接的文件名也可以是路径】
6、cp指令
指令:cp (copy,复制)
作用:复制文件/文件夹到指定的位置
语法:#cp 被复制的文档路径 文档被复制到的路径
案例:使用cp命令来复制一个文件夹 cp -r ./a ./test
注意:当使用cp命令进行文件夹复制操作的时候需要添加选项“-r”【-r表示递归复制】,否则目录将被忽略
7、mv指令
指令:mv (move,移动,剪切)
作用:移动文档到新的位置
语法:#mv 需要移动的文档路径 需要保存的位置路径
在Linux中重命名的命令也是mv,语法和移动语法一样。
8、rm指令
指令:rm (remove,移除、删除)
作用:移除/删除文档
语法:#rm 选项 需要移除的文档路径
选项:
- -f:force,强制删除,不提示是否删除
- -r:表示递归
其中*称之为通配符,意思表示任意的字符,Linux*,则表示只要文件以Linux开头,后续字符则不管。
9、vim指令
指令:vim (vim是一款文本编辑器)
语法:#vim 文件的路径
作用:打开一个文件(可以不存在,也可以存在)
10、输出重定向
一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技术。#ls -la >ls.txt
>:覆盖输出,会覆盖掉原先的文件内容
>>:追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加
11、cat指令
作用1:cat有直接打开一个文件的功能。
语法1:#cat 文件的路径
作用2:cat还可以对文件进行合并
语法2:#cat 待合并的文件路径1 待合并的文件路径2 …. 文件路径n > 合并之后的文件路径
第三章 进阶指令
1、df指令
作用:查看磁盘的空间
语法:#df -h -h表示以可读性较高的形式展示大小
2、free指令
作用:查看内存使用情况
语法:#free -m -m表示以mb为单位查看
3、head指令
作用:查看一个文件的前n行,如果不指定n,则默认显示前10行。
语法:#head -n 文件路径 【n表示数字】
4、tail指令
作用1:查看一个文件的未n行,如果n不指定默认显示后10行
语法:#tail -n 文件的路径 n同样表示数字
5、less指令
作用:查看文件,以较少的内容进行输出,按下辅助功能键(数字+回车、空格键+上下方向键)查看更多
语法:#less 需要查看的文件路径 在退出的只需要按下q键即可。
6、wc指令
作用:统计文件内容信息(包含行数、单词数、字节数)
语法:#wc -lwc 需要统计的文件路径
-l:表示lines,行数
-w:表示words,单词数 依照空格来判断单词数量
-c:表示bytes,字节数
7、date指令(重点)
作用:表示操作时间日期(读取、设置)
- 语法1:#date 输出的形式:2018年 3月 24日 星期六 15:54:28
- 语法2:#date +%F (等价于#date “+%Y-%m-%d” ) 输出形式:2018-03-24
- 语法3:#date “+%F %T” 引号表示让“年月日与时分秒”成为一个不可分割的整体
等价操作#date “+%Y-%m-%d %H:%M:%S”
输出的形式:2018-03-24 16:01:00
语法4:获取之前或者之后的某个时间(备份)
#date -d “-1 day” “+%Y-%m-%d %H:%M:%S”
符号的可选值:+(之后) 或者 - (之前)
单位的可选值:day(天)、month(月份)、year(年)
- %F:表示完整的年月日
- %T:表示完整的时分秒
- %Y:表示四位年份
- %m:表示两位月份(带前导0)
- %d:表示日期(带前导0)
- %H:表示小时(带前导0)
- %M:表示分钟(带前导0)
- %S:表示秒数(带前导0)
8、cal指令
作用:用来操作日历的
语法1:#cal 等价于 #cal -1 直接输出当前月份的日历
语法2:#cal -3 表示输出上一个月+本月+下个月的日历
语法3:#cal -y 年份 表示输出某一个年份的日历
9、clear/ctrl + L指令
作用:清除终端中已经存在的命令和结果(信息)。
语法:clear 或者快捷键:ctrl + L
需要注意的是,该命令并不是真的清除了之前的信息,而是把之前的信息的隐藏到了最上面,通过滚动条继续查看以前的信息。
10、管道(重要)
管道符:|
作用:管道一般可以用于“过滤”,“特殊”,“扩展处理”。
语法:管道不能单独使用,必须需要配合前面所讲的一些指令来一起使用,其作用主要是辅助作用。
①过滤案例(100%使用):需要通过管道查询出根目录下包含“y”字母的文档名称。
#ls / | grep y
针对上面这个命令说明:
①以管道作为分界线,前面的命令有个输出,后面需要先输入,然后再过滤,最后再输出,通俗的讲就是管道前面的输出就是后面指令的输入;②grep指令:主要用于过滤
第四章 高级指令
1、hostname指令
作用:操作服务器的主机名(读取、设置)
语法1:#hostname 含义:表示输出完整的主机名
语法2:#hostname -f 含义:表示输出当前主机名中的FQDN(全限定域名)
2、id指令
作用:查看一个用户的一些基本信息(包含用户id,用户组id,附加组id…),该指令如果不指定用户则默认当前用户。
语法1:#id 默认显示当前执行该命令的用户的基本信息
语法2:#id 用户名 显示指定用户的基本信息
3、whoami指令
作用:“我是谁?”显示当前登录的用户名,一般用于shell脚本,用于获取当前操作的用户名方便记录日志。
语法:#whoami
4、ps -ef指令(重点)
指令:ps
作用:主要是查看服务器的进程信息
选项含义:
-e:等价于“-A”,表示列出全部的进程
-f:显示全部的列(显示全字段)
列的含义:
UID:该进程执行的用户id;
PID:进程id;
PPID:该进程的父级进程id,如果一个程序的父级进程找不到,该程序的进程称之为僵尸进程(parent process ID);
C:Cpu的占用率,其形式是百分数;
STIME:进行的启动时间;
TTY:终端设备,发起该进程的设备识别符号,如果显示“?”则表示该进程并不是由终端设备发起;
TIME:进程的执行时间;
CMD:该进程的名称或者对应的路径;
5、top指令(重点)
作用:查看服务器的进程占的资源(100%使用)
语法:
进入命令:#top (动态显示)
退出命令:按下q键
6、du -sh指令
作用:查看目录的真实大小
语法:#du -sh 目录路径
选项含义:
-s:summaries,只显示汇总的大小
-h:表示以高可读性的形式进行显示
7、find指令
作用:用于查找文件(其参数有55个之多)
语法:#find 路径范围 选项 选项的值
选项:
-name:按照文档名称进行搜索(支持模糊搜索)
-type:按照文档的类型进行搜索
文档类型:“-”表示文件(在使用find的时候需要用f来替换),“d”表示文件夹
8、service指令(重点)
作用:用于控制一些软件的服务启动/停止/重启
语法:#service 服务名 start/stop/restart
9、kill指令(重点)
作用:表示杀死进程 (当遇到僵尸进程或者出于某些原因需要关闭进程的时候)
语法:#kill 进程PID (语法需要配合ps一起使用)
与kill命令作用相似但是比kill更加好用的杀死进程的命令:killall
语法:#killall 进程名称
10、ifconfig指令(重点)
作用:用于操作网卡相关的指令。
简单语法:#ifconfig (获取网卡信息,获取本机IP地址)
11、reboot指令
作用:重新启动计算机
语法1:#reboot 重启
语法2:#reboot -w 模拟重启,但是不重启(只写关机与开机的日志信息)
12、shutdown指令
作用:关机 (慎用)
语法1:#shutdown -h now “关机提示” 或者 #shutdown -h 15:25 “关机提示”
案例:设置Linux系统关机时间在12:00
如果想要取消关机计划的话,则可以按照以下方式去尝试:
①针对于centos7.x之前的版本:ctrl+c
②针对于centos7.x(包含)之后的版本:#shutdown -c
- 除了shutdown关机以外,还有以下几个关机命令:
- #init 0
- #halt
- #poweroff
14、uname指令
作用:获取计算机操作系统相关信息
语法1:#uname 获取操作系统的类型
语法2:#uname -a all,表示获取全部的系统信息(类型、全部主机名、内核版本、发布时间、开源计划)
15、netstat -tnlp指令
作用:查看网络连接状态
语法:#netstat -tnlp
选项说明:
- -t:表示只列出tcp协议的连接;
- -n:表示将地址从字母组合转化成ip地址,将协议转化成端口号来显示;
- -l:表示过滤出“state(状态)”列中其值为LISTEN(监听)的连接;
- -p:表示显示发起连接的进程pid和进程名称;
16、man指令
作用:manual,手册(包含了Linux中全部命令手册,英文)
语法:#man 命令 (退出按下q键)
第五章 vim编辑器
1,vi介绍
Vi编辑器是所有Unix及Linux系统下标准的编辑器,vi和vim都是Linux中的编辑器,不同的是,vim比较高级,可以视为vi的升级版本。vi使用于文本编辑,但是vim更适用于coding(写代码的)。
Vim重点是光标的移动,模式切换,删除,查找,替换,复制,粘贴,撤销命令的使用
2,vim三种模式(重点)
Vim中存在三种模式(大众的认知):
命令模式:
在该模式下是不能对文件直接编辑,可以输入快捷键进行一些操作(删除行,复制行,移动光标,粘贴等等)【打开文件之后默认进入的模式】;
编辑模式(输入模式)
在该模式下可以对文件的内容进行编辑
末行模式(尾行模式)
可以在末行输入命令来对文件进行操作(搜索、替换、保存、退出、撤销、高亮等等)
Vim的打开文件的方式(4种,要求掌握的就前三种):
#vim 文件路径 作用:打开指定的文件
#vim +数字 文件的路径 作用:打开指定的文件,并且将光标移动到指定行
#vim +/关键词 文件的路径 作用:打开指定的文件,并且高亮显示关键词
#vim 文件路径1 文件路径2 文件路径3 作用:同时打开多个文件
第六章 Linux自有服务
自有服务,即不需要用户独立去安装的软件的服务,而是当系统安装好之后就可以直接使用的服务(内置)。
一、运行模式
运行模式也可以称之为运行级别。
在linux中存在一个进程:init (initialize,初始化),进程id是1。
查看进程:#ps -ef|grep init
该进程存在一个对应的配置文件:inittab(系统运行级别配置文件,位置/etc/inittab)
- 0 — 表示关机级别(不要将默认的运行级别设置成这个值)
- 1 — 单用户模式
- 2 — 多用户模式,不带NFS(Network File Syetem)
- 3 — 多用户模式,完全的多用户模式(不带桌面的,纯命令行模式)
- 4 — 没有被使用的模式(被保留模式)
- 5 — X11,完整的图形化界面模式
- 6 — 表示重启级别(不要将默认的运行级别设置成这个值)
与该级别相关的几个命令:
- #init 0 表示关机
- #init 3 表示切换到不带桌面的模式
- #init 5 切换到图形界面
- #init 6 重启电脑
注意:init指令需要超级管理员的权限,普通用户无法执行。
2,用户与用户组管理(重点)
Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个惟一的用户名和各自的密码。
用户在登录时键入正确的用户名和密码后,就能够进入系统和自己的主目录。
要想实现用户账号的管理,要完成的工作主要有如下几个方面:
- 用户账号的添加、删除、修改以及用户密码的管理。
- 用户组的管理。
注意三个文件:
- /etc/passwd 存储用户的关键信息
- /etc/group 存储用户组的关键信息
- /etc/shadow 存储用户的密码信息
-
(1)用户管理
①添加用户
常用语法:#useradd 选项 用户名
常用选项:
-g:表示指定用户的用户主组,选项的值可以是用户组的id,也可以是组名
-G:表示指定用户的用户附加组,选项的值可以是用户组的id,也可以是组名
-u:uid,用户的id(用户的标识符),系统默认会从500之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义【类似于腾讯QQ的自选靓号情况】
-c comment:添加注释
验证是否成功:
a. 验证/etc/passwd的最后一行,查看是否有zhangsan的信息;
b. 验证是否存在家目录(在Centos下创建好用户之后随之产生一个同名家目录);
②修改用户
常用语法:#usermod 选项 用户名
Usermod:user modify,用户修改
常用选项:
-g:表示指定用户的用户主组,选项的值可以是用户组的id,也可以是组名
-G:表示指定用户的用户附加组,选项的值可以是用户组的id,也可以是组名
-u:uid,用户的id(用户的标识符),系统默认会从500之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义【类似于腾讯QQ的自选靓号情况】
-l:修改用户名
③设置密码
Linux不允许没有密码的用户登录到系统,因此前面创建的用户目前都处于锁定状态,需要设置密码之后才能登录计算机。
常用语法:#passwd 用户名
在设置密码的时候也是没有任何输入提示的,放心输入,确保两次输入的密码一致,按下回车即可。
切换用户需要注意的事项:
a. 从root往普通用户切换不需要密码,但是反之则需要root密码;
b. 切换用户之后前后的工作路径是不变的;
c. 普通用户没有办法访问root用户家目录,但是反之则可以;
(2)用户组管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
文件结构:
用户组名:密码:用户组ID:组内用户名
①用户组添加
常用语法:#groupadd 选项 用户组名
常用选项:
-g:类似用户添加里的“-u”,-g表示选择自己设置一个自定义的用户组ID数字,如果自己不指定,则默认从500之后递增;
②用户组编辑
常用语法:#groupmod 选项 用户组名
常用选项:
-g:类似用户修改里的“-u”,-g表示选择自己设置一个自定义的用户组ID数字
-n:类似于用户修改“-l”,表示设置新的用户组的名称
③用户组删除
常用语法:#groupdel 用户组名
注意:当如果需要删除一个组,但是这个组是某个用户的主组时,则不允许删除;如果确实需要删除,则先从组内移出所有用户。
3,ssh服务
ssh(secure shell,安全外壳协议),该协议有2个常用的作用:远程连接协议、远程文件传输协议。
协议使用端口号:默认是22
可以是被修改的,如果需要修改,则需要修改ssh服务的配置文件:
#/etc/ssh/ssh_config
端口号可以修改,但是得注意2个事项:
a. 注意范围,端口范围是从0-65535;
b. 不能使用别的服务已经占用的端口;
1、远程终端
终端工具主要帮助运维人员连接远程的服务器,常见终端工具有:Xshell、secureCRT、Putty等。以putty为例:
①获取服务器ip地址,可以通过ifconfig(Windows中的指令为ipconfig)命令进行查看,然后顺手测试ip的连接相通性
2、SSH服务文件传输
可视化的界面传输工具:Filezill
通过命令行工具来传输文件/文件夹 工具:PSCP.exe
4、设置主机名
回顾:
#hostname
#hostname -f FQDN(全限定域名)
FQDN:(Fully Qualified Domain Name)全限定域名:同时带有主机名和域名的名称。(通过符号“.”)
例如:主机名是bigserver,域名是mycompany.com,那么FQDN就是bigserver.mycompany.com。
全限定域名可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名的一种完全表示形式
全域名在实际中是非常有用的。电子邮件就使用全域名作为收信人的电子邮件地址,如janicejones@ acmecompany. com,其中收信人为janicejones,跟在收信人名字后面是符号@,@后面是邮件服务器的全域名,或者说是邮件服务器所在企业的域名,最后是顶层域名.com。. com意味着acmecompany是一个商业机构
①临时设置主机名(立竿见影),需要切换用户使之生效
#hostname 设置的主机名
②永久设置主机名(需要重启)
先找到一个文件
/etc/sysconfig/network 【主机名的配置文件】修改其中的HOSTNAME为自己需要设置的永久主机名
③修改linux服务器的hosts文件,将yunwei指向本地(设置FQDN)
Hosts文件的位置:/etc/hosts
问题:不设置FQDN会怎么样?
①很多开源服务器软件(例如Apache)则无法启动,或出现报错;
②方便记忆,看到主机名对其作用有一个初步判断;
③如果不设置则会影响本地的域名的解析(本地访问);
5,chkconfig
作用:相当于windows下“安全卫士”、“电脑管家”之类的安全辅助工具提供“开机启动项”的一个管理服务。
在linux下不是所有的软件安装完成之后都有开机启动服务,有的可能需要自己去添加。除此之外还可以查看和删除。
①开机启动服务查询
#chkconfig --list
其中0-6表示各个启动级别
例如:以httpd为例,其3级别为关闭(off),则表示其在3启动形式下默认开机不启动
5对应的也是关闭,则表示其在桌面环境下也是开机不启动。
再例如:kdump服务,在2,3,4,5的级别下默认开机启动的,其他级别下默认开机不启动
②删除服务
#chkconfig --del 服务名
③添加开机启动服务
#chkconfig --add 服务名 【必须要保证服务正常运行,才可以添加】
④设置服务在某个级别下开机启动/不启动【重点命令】
#chkconfig --level 连在一起的启动级别 服务名on/off
案例:设置httpd服务在3,5级别下默认开机启动
chkconfig --level 35 httpd on
案例:设置httpd服务在5的级别下默认开机不启动
chkconfig --level 5 httpd off
6,ntp服务
作用:ntp主要是用于对计算机的时间同步管理操作。
时间是对服务器来说是很重要的,一般很多网站都需要读取服务器时间来记录相关信息,如果时间不准,则可能造成很大的影响。
同时服务器时间方式有2个:一次性同步(手动同步)、通过服务自动同步。
①一次性同步时间(简单)
#ntpdate 时间服务器的域名或ip地址
ntpdate 120.25.108.11
②设置时间同步服务
服务名:ntpd
启动ntpd服务
#service ntpd start 或者 /etc/init.d/ntpd start
7,rpm管理(重点)
作用:rpm的作用类似于windows上的电脑管家中“软件管理”、安全卫士里面“软件管家”等产品,主要作用是对linux服务器上的软件包进行对应管理操作,管理分为:查询、卸载、安装。
①查询某个软件的安装情况
#rpm -qa|grep 关键词
选项:
- -q:查询,query
- -a:全部,all
②卸载某个软件
#rpm -e 软件的名称
安装软件的命令:
#rpm -ivh 软件包完整名称
选项:
- -i:install,安装
- -v:显示进度条
- -h:表示以“#”形式显示进度条
8、cron/crontab计划任务(重点)
crontab是用来定期执行程序的命令
语法:#crontab 选项
常用选项:
-l:list,列出指定用户的计划任务列表
-e:edit,编辑指定用户的计划任务列表
-u:user,指定的用户名,如果不指定,则表示当前用户
-r:remove,删除指定用户的计划任务列表
①列出
crontab -l
②编辑计划任务(重点)
计划任务的规则语法格式,以行为单位,一行则为一个计划:
分 时 日 月 周 需要执行的命令
例如:如果想要每天的0点0分执行reboot指令,则可以写成
0 0 * * * reboot
Crontab权限问题:本身是任何用户都可以创建自己的计划任务。
但是超级管理员可以通过配置来设置某些用户不允许设置计划任务 :
配置文件位于(黑名单):
/etc/cron.deny 里面写用户名,一行一个
还有一个配置文件:(白名单)
/etc/cron.allow (本身不存在,自己创建)
注意:白名单优先级高于黑名单,如果一个用户同时存在两个名单文件中,则会被默认允许创建计划任务。
第七章 Linux的权限管理操作
一、权限概述
总述:Linux系统一般将文件可存/取访问的身份分为3个类别:owner、group、others,且3种身份各有read、write、execute等权限。
在Linux中分别有读、写、执行权限:
读权限-r:
对于文件夹来说,读权限影响用户是否能够列出目录结构
对于文件来说,读权限影响用户是否可以查看文件内容
写权限-w:
对文件夹来说,写权限影响用户是否可以在文件夹下“创建/删除/复制到/移动到”文档
对于文件来说,写权限影响用户是否可以编辑文件内容
执行权限-x:
一般都是对于文件来说,特别脚本文件。
Owner身份(文件所有者,默认为文档的创建者)
Group身份(与文件所有者同组的用户)
Others身份(其他人,相对于所有者)
Root用户(超级用户)
查看文件的属性
#ls -l 路径 【ls -l 等价于 ll】
十位字符表示含义:
第1位:表示文档类型,取值常见的有“d表示文件夹”、“-表示文件”、“l表示软连接”、“s表示套接字”等等;
第2-4位:表示文档所有者的权限情况,第2位表示读权限的情况,取值有r、-;第3位表示写权限的情况,w表示可写,-表示不可写,第4位表示执行权限的情况,取值有x、-。
第5-7位:表示与所有者同在一个组的用户的权限情况,第5位表示读权限的情况,取值有r、-;第6位表示写权限的情况,w表示可写,-表示不可写,第7位表示执行权限的情况,取值有x、-。
第8-10位:表示除了上面的前2部分的用户之外的其他用户的权限情况,第8位表示读权限的情况,取值有r、-;第9位表示写权限的情况,w表示可写,-表示不可写,第10位表示执行权限的情况,取值有x、-。
二、权限设置
语法:#chmod 选项 权限模式 文档
注意事项:
常用选项:
-R:递归设置权限 (当文档类型为文件夹的时候)
权限模式:就是该文档需要设置的权限信息
文档:可以是文件,也可以是文件夹,可以是相对路径也可以是绝对路径。
注意点:如果想要给文档设置权限,操作者要么是root用户,要么就是文档的所有者。
给谁设置:
- u:表示所有者身份owner(user)
- g:表示给所有者同组用户设置(group)
- o:表示others,给其他用户设置权限
- a:表示all,给所有人(包含ugo部分)设置权限
如果在设置权限的时候不指定给谁设置,则默认给所有用户设置
权限字符:
- r:读
- w:写
- x:表示执行
- -:表示没有权限
权限分配方式:
- +:表示给具体的用户新增权限(相对当前)
- -:表示删除用户的权限(相对当前)
- =:表示将权限设置成具体的值(注重结果)【赋值】
例如:需要给anaconda-ks.cfg文件(-rw-------.)设置权限,要求所有者拥有全部的权限,同组用户拥有读和执行权限,其他用户只读权限。
答案:
①#chmod u+x,g+rx,o+r anaconda-ks.cfg
②#chmod u=rwx,g=rx,o=r anaconda-ks.cfg
提示:当文档拥有执行权限(任意部分),则其颜色在终端中是绿色。
#chmod ug=rwx 形式,如果有两部分权限一样则可以合在一起写的
例如:如果anaconda-ks.cfg文件什么权限都没有,可以使用root用户设置所有人都有执行权限,则可以写成
①#chmod +x anaconda-ks.cfg
②#chmod a=x anaconda-ks.cfg
③#chmod a+x anaconda-ks.cfg
2、数字形式
经常会在一些技术性的网页上看到类似于#chmod 777 a.txt 这样的一个权限,这种形式称之为数字形式权限(777)。
读:r 4
写:w 2
执行:x 1
没有任何权限:0
例如:需要给anaconda-ks.cfg设置权限,权限要求所有者拥有全部权限,同组用户拥有读执行权限,其他用户只读。
全部权限(u):读+写+执行=4+2+1=7
读和执行(g):读+执行=4+1=5
读权限(o):读=4
由上得知权限为:754
#chmod 754 anaconda-ks.cfg
面试题:用超级管理员设置文档的权限命令是#chmod -R 731 aaa,请问这个命令有没有什么不合理的地方?
拥有者:7=4+2+1=读+写+执行
同组用户:3=2+1=写+执行
其他用户:1=1=执行
注意:在写权限的时候千万不要设置类似于上面的这种“奇葩权限”。如果一个权限数字中但凡出现2与3的数字,则该权限有不合理的情况。
在Linux中,如果要删除一个文件,不是看文件有没有对应的权限,而是看文件所在的目录是否有写权限,如果有才可以删除。
三、属主与属组设置
属主:所属的用户(文件的主人)
属组:所属的用户组
1、chown(重点)
作用:更改文档的所属用户
语法:#chown -R username 文档路径
2、chgrp(了解)
作用:更改文档的所属用户组
语法:#chgrp -R groupname 文档的路径
思考,如何通过一个命令实现既可以更改所属的用户,也可以修改所属的用户组呢?
答:可以实现的,通过chown命令
语法:#chown -R username:groupname 文档路径
第八章 Linux网络基础
1、ping
作用:检测当前主机与目标主机之间的连通性(不是100%准确,有的服务器是禁ping)
语法:#ping 主机地址(ip地址、主机名、域名等)
该命令可以跨平台,windows下也可以使用,语法一致。(区别在于Linux下默认一直发送,windows下默认发送4个数据包)
2、netstat
作用:表示查看网络的连接信息
语法:#netstat -tnlp (-t:tcp协议,-n:将字母转化成数字,-l:列出状态为监听,-p:显示进程相关信息)
#netstat -an (-a:表示全部,-n:将字母转化为数字)
TCP/IP协议需要使用这个命令。
3、traceroute
作用:查找当前主机与目标主机之间所有的网关(路由器,会给沿途各个路由器发送icmp数据包,路由器可能会不给响应)。
该命令不是内置命令,需要安装,但是目前的已经安装好了(之前选了开发工具)。
语法:#traceroute 主机地址
扩展:在windows下也有类似的命令:tracert 主机地址
4、arp
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取(MAC)物理地址的协议。
常用语法:#arp -a 查看本地缓存mac表
#arp -d 主机地址 删除指定的缓存记录
5、tcpdump(了解)
作用:抓包,抓取数据表
常用语法:
#tcpdump 协议 port 端口
#tcpdump 协议 port 端口 host 地址