TODO List
Centos Ubuntu
Linux 文件和目录管理
cd: 切换目录
cd 选项
~ : 当前用户的主目录 ~用户名:指定用户的主目录 - : 上次所在的目录 . : 当前目录 ..: 上级目录
pwd:显示当前路径
whoami:当前登陆的用户
ls: 查看目录下文件
ls 选项 文件
-a: 全部文件 -A: 全部不包括. .. -d: 目录本身 -f: 以文件名排序 -F: 再文件或目录后加上类型的指示符号 -h: 以易读方式显示 -i:显示inode节点信息
-n: 以UID和GID代替用户名和群组 -r: 将排序结果反向输出 -R: 列出目录下所有文件 -S: 以文件容量大小排序 -t: 以时间排序 -l: 使用长格式列出文件和目录信息
ls:
第一列: 权限 第二列:计数(硬连接数) 第三列:所有者 第四列:所属组 第五列:大小 第六列:文件修改时间 第七列: 文件名和目录名
mkdir:创建目录文件夹
mkdir 选项 文件目录名
-p: 递归创立目录 -m: 自定义目录权限
rmdir: 删除空目录
rmdir 选项 文件目录名
-p:递归删除空目录 rmdir
touch:创建文件及修改文件时间戳
touch 选项 文件名
选项: -a:访问时间 -c:时间参数 -d:修订日期 -m:修改时间 -t:修订时间
ln:在文件之间建立链接(硬链接和软链接)
ln 选项 源文件 目标文件
-s:建立软链接文件,不加-s 则建立硬链接
-f:强制 如果目标文件存在,则删除后再建立链接文件
cp:复制文件和目录
cp 选项 源文件 目标文件
-a:相当于 -d -p -r 的集合
-d:如源文件为软链接,则复制出的目标文件也为软链接
-i:询问 是否覆盖
-l:把目标文件建立为源文件的硬链接,而不是复制源文件
-s:把目标文件建立为源文件的软连接,而不是复制。。。
-p:复制后目标文件保留源文件的属性 所有者、所属组、权限和时间
-r:递归复制,用于复制父母
-u:若目标文件比源文件有差异,则使用该选项更新目标文件,用于对文件的升级和备用
rm:删除文件或目录
rm 选项 文件或目录
-f: 强制删除
-i: 删除前给出提示
-r: 递归删除,用于目录
mv:移动文件或改名
mv 选项 文件或目录
-f:强制覆盖,不询问,直接覆盖
-i:交互移动,询问是否覆盖
-n:如果目标文件已存在,不会覆盖移动,也不询问
-v: 显示文件或目录移动过程
-u: 若目标文件存在,两者相比,源文件更新,对目标文件进行升级
打包(归档)和压缩
tar:打包
tar 选项 源文件或目录
-c:将多个文件或目录打包
-A:追加tar文件到归档文件
-f:指定包的文件名
-v:显示打包过程
-x:对tar包做 解压
-C:指定解压包位置
-z:压缩和解压缩”.tar.gz”
-j:压缩和解压缩”.tar.bz2”
tar.gz: -zxvf -zcvf
tar.bz2: -jxvf -jcvf
zip: 压缩文件和目录
zip 选项 压缩包名 源文件或源目录列表
-r: 递归压缩目录,所有文件以及目录全部压缩
-m: 压缩后,删除源文件
-v: 显示详细的压缩过程
-q: 不显示命令执行过程
-压缩级别: 1~9 -1 代表压缩速度最快 -9 代表压缩效果更好
-u: 更新压缩文件,往压缩文件添加新文件
unzip:解压zip文件
unzip 选项 压缩包名
-d 目录: 将压缩文件解压到指定目录下
-n: 解压时不覆盖存在的文件
-o: 解压时覆盖已经存在的文件,无需确认
-v: 查看压缩文件的详细信息
-t: 测试有无损坏,并不解压
-x 文件列表: 解压文件,但不包含文件列表中指定的文件
gzip:压缩文件或目录
gzip 选项 源文件
-c:将压缩数据输出到标准输出中,保留源文件
-d:对压缩文件解压
-r:递归压缩指定目录下以及目录下的所有文件
-l:对每一个压缩文件 显示字段 压缩文件大小 未压缩大小 压缩比 未压缩名称
-数字 :指定压缩等级, -1 等级最低,压缩比最差
gunzip:解压缩文件或目录
gunzip 选项 文件
-r:递归处理,解压缩指定目录下所有文件
-c:把解压缩后的文件输出到标准设备
-f:强制解压缩文件,不理会是否已存在
-l:列出压缩文件内容
-v:显示命令执行过程
-t:测试压缩文件是否正常,不做任何操作
bzip2:压缩文件 bz2格式
bzip2 选项 源文件
-d: 执行解压缩
-k: 解压缩完成后,删除源文件,要保留源文件,需使用此选项
-f:再解压或解压缩时,若同名,默认不覆盖,此选项会强制覆盖现有文件
-t:测试压缩或解压缩的完整性
-v:显示详细信息
-数字: -1 等级最低,压缩比最差 -9 压缩比最高
bunzip2 bz2 格式的及压缩命令
bunzip2 选项
-k: 解压缩后,默认删除压缩文件,若要保留,使用此参数
-f: 解压缩时,若同名,默认不覆盖,若要覆盖,使用此参数
-v: 显示命令执行过程
-L: 列出压缩文件内容
三剑客 grep sed awk
cat: 连接文件并打印输出到标准输出设备
cat 选项 文件名
-A:列出所有隐藏符号
-E: 列出每行结尾的回车符$
-n:对输出的所有行进行编号
-b:只对非空行进行编号
-T:把Tab键 ^| 显示
-V:列出特殊字符
-s:连续2行以上的空白行,替换为1行的空白行
>: 合并
>>:追加
more:分屏显示文件内容
more 选项 文件名
-f:计算行数 实际的行数,
-p:清屏后显示内容
-c:先显示内容再清楚旧的资料
-s:连续两行以上的空白行,就替换为一行的空白行
-u:不显示下引号
+n:从第n行开始显示文件内容,n代表数字
-n:一次显示的行数,n表示数字
交互指令及功能
h或?: 帮助信息
q或Q : 退出
v: 在当前行启动一个编辑器
:f 显示当前文件的文件名和行号
!<命令>:在子shell中执行指定命令
回车:向下移动一行
空格:向上移动一行
Ctrl+l:刷新屏幕
=: 显示当前行的行号
‘: 转到上一次搜索开始的地方
Ctrl+f: 向下滚动一页
.:重复上次输入的命令
/字符串:搜索指定的字符串
d:向下移动半页
b:向上移动半页
head:显示文件开头的内容
head 选项 文件名
-nK: K表示行数,除了文件最后K行外,显示剩余的全部内容
-cK: K表示字节,除了文件最后K字节,显示剩余全部的内容
-v: 显示文件名
less: 查看文件内容
less 选项 文件名
-N: 显示每行的行号
-S: 行过长时舍弃超出部分
-e: 文件显示结束后,自动离开
-g: 只标志最后搜索到的关键词
-Q: 不使用警告音
-i: 忽略搜索时的大小写
-m: 显示类似more的百分比
-f: 强迫打开特殊文件
-s: 显示连续行为一行
-b: 设置缓冲区的大小
-o: 将less输出的内容保存到指定文件中
-x: 将tab键显示为规定的数字空格
交互指令及功能
/ ? n N b d h|H q|Q y 空格键 回车键 PgDn PgUp
Ctrl + f Ctrl + b Ctrl + d Ctrl + u j k G g ZZ v [
] p u
tail: 显示文件结尾的内容
tail 选项 文件名
-nK: K指行数,从文件的第K行开始输出
-cK: K指字节数,从文件第K个字节开始输出
-f: 输出文件变化后新增加的数据
grep: 查找文件内容 正则表达式
正则表达式的通配符
c* : 匹配0个空白或多个字符c(c为任一字符)
. : 匹配任何一个字符,只能是一个字符
[xyz]:匹配方括号中的任意一个字符
[^xyz]:匹配除方括号中字符外的所有字符
^ : 锁定行的开头
$ : 锁定行的结尾
需结合反斜杠 ,
grep 命令基本格式:
grep 选项 模式 文件名
-c :列出文件中包含模式的行数
-i :忽略模式中的字母大小写
-l :列出带有匹配行的文件名
-n :在每一行的最前面列出行号
-v :列出没有匹配模式的行
-w :把表达式当作一个完整的单字符来搜寻,忽略部分匹配的行
sed 根据脚本命令处理文本文件中的数据,命令从命令行输入,或存储在一个文本文件中,此命令执行数据顺序: 1.每次仅读取一行内容 2. 根据规格命令匹配并修改数据 3.将执行结果输出
sed 选项 脚本命令 文件名
-e 脚本命令: 将其后跟的脚本命令添加到已有的命令中
-f 脚本命令文件: 将其后文件中的脚本命令添加到已有的命令中
-n : 所有脚本指定执行完毕后,自动输出处理后的内容,需使用print来输出
-i : 直接修改源文件,慎用!
sed 脚本命令
sed s 替换脚本命令: [address]s/pattern/reloacement/flags
address : 指定要操作的具体行 pattern :需要替换的内容 replacement:要替换的新内容
sed s 命令 flags 标记及功能
n : 1-512 之间数字,表示指定要替换的字符串出现第n次时才进行替换
g : 匹配到的所有内容进行替换
p : 打印与替换命令中指定的模式匹配的行 与-n选项使用
w file :将缓冲区中的内容写道指定的file文件中
& : 用正则表达式匹配到的内容进行替换
n : 匹配第n个字串,该字串之前在pattern中用 () 指定
: 转义
sed d 替换脚本命令
需要删除文本中的特定行,用d脚本命令,删除指定行中的所有内容,如忘记指定具体行,删删除所有内容
[address]d
sed a | sed i 脚本命令
a 表示在指定行的后面附加一行,i表示在指定行的前面插入一行
[address]a(i或) 新文本内容
sed c 替换脚本命令
c 表示将指定行中的所有内容,替换成该选项后面的字符串
[address]c用于替换的新文本
sed y 转换脚本命令
y 转换命令唯一可以处理单个字符
[address]y/inchars/outchars/
sed p 打印脚本命令
p 搜索符号条件的行,输出该行的内容
[address]p
sed w 脚本命令
w 将文本中指定行的内容写入文件
[address]w filename
sed r 脚本命令
r 将一个独立文件的数据插入到当前数据流的指定位置
[address]r filename
sed q 退出脚本命令
q 使sed命令在第一次匹配任务结束后,退出sed程序
sed 脚本命令的寻址方式
两种:
1.[address]脚本命令
2.address{
多个脚本命令
}
awk 文本数据处理工具
基本格式:
awk 选项 '脚本命令' 文件名
-F fs :指定以fs作为输入行的分隔符,默认以分隔符为空格或制表符
-f file :从脚本文件中读取awk脚本指令,取代直接在命令行中输入指令
-v var=val:在执行前,设置一个变量var,初始值为 val
awk 使用数据字段变量
$0 :代表整个文本行
$1 : 代表文本行的第1个数据字段
$2 : 。。。第2个数据字符按
$n : 代表第n个数据字段
awk 脚本命令使用多个命令
awk '{
$a = "some text"
print $0
}'
awk 从文件中读取程序
awk -F: -f awk.sh /etc/passwd
awk BEGIN 关键字
awk 'BEGIN' {print "text"}
awk END 关键字
awk 'ENG' {print "text"}
软件安装相关
RPM 包安装、卸载、升级
/etc/ :配置文件安装目录
/usr/bin/ :可执行的命令安装目录
/usr/lib/ :程序所使用的函数库保存位置
/usr/share/doc/ :基本的软件使用手册保存位置
/usr/share/man/ :帮助文件保存位置
RPM 包的安装
rpm -ivh 包名
-i :安装(install)
-v :显示详细信息(verbose)
-h :打印 # 显示安装进度(hash)
rpm -ivh x.rpm xx.rpm xxx.rpm
rpm 选项 包名
-nodeps : 不检测依赖性安装
-replacefiles :替换文件安装
-replacepkgs :替换软件包安装
-force :强制安装
-test :测试安装
-prefix :指定安装路径
软件的启动和管理
service 服务名 start | stop | restart | status
stat: 启动服务
stop: 停止服务
restart: 重启服务
status: 查看服务状态
检测端口:
netstat -tlun | grep 80
RPM 包的升级
rpm -Uvh 包名 : 如没安装过则直接安装
rpm -Fvh 包名 : 如没有安装,则不安装
RPM 包的卸载 (e 时 erase)
rpm -e 包名
RPM 命令查询软件包 (-q, -qa, -i ,-p, -l, -f ,-R )
rpm 选项 查询对象
-q :表示查询, query
-qa :查询系统中所有安装的软件包
-qi :查询软件包的详细信息 i = information
-ql :查询软件包的文件列表
-qf :查询系统文件属于哪个RPM包
-qR :查询软件包的依赖关系
RPM 包验证和数字证书(数字签名)
rpm 包校验
-Va :校验系统中已安装的软件包
-V :校验已安装的包名
-Vf :校验某个系统文件是否被修改
提取RPM包文件(cpio命令)
cpio 用于从归档包中存入和读取文件
cpio 选项
-o : 指 copy-out 模式,把数据备份到文件库中
-v : 显示备份过程
-c : 使用较新的protable format 存储方式
-B : 设定输入/输出块为5120Bytes,而不是模式的512Bytes
-i : 指 copy-in ,把数据从文件库中恢复
-d : 还原时自动新建目录
-u : 自动使用较新的文件覆盖较旧的文件
-p : 指复制模式
YUM 源配置
Yum 源配置文件: /etc/yum.repos.d/ , 文件扩展名为:”*.repo”
参数:
[base]: 容器名称
name:容器说明
mirrorlist:镜像站点
baseurl:源服务器的地址
enable:此容器是否生效, 不写或写enable表示生效,0为不生效
gpgcheck:为1表示RPM的数字证书生效,0为不生效
gpgkey:数字证书的公钥文件保存位置
Yum 查询、安装、升级、卸载
yum list : 列出已安装的和可安装的软件名
yum list 包名 : 查询安装情况
yum search 关键字 : 查找与关键字相关的所有软件包
yum info 包名 : 查询执行软件包的详细信息
Yum 安装命令
yum -y install 包名
install : 安装
-y : 自动回答yes
Yum 升级命令
yum -y update : 升级所有软件包
yum -y update 包名 : 升级特定的软件包
Yum 卸载命令
yum remote 包名 :卸载指定的软件包
Yum 查询软件组包含的软件
yum groupinfo 软件组名 : 查询软件组包含的软件
Yum 安装软件组
yum groupinstall 软件组名 : 安装指定软件组,组名由grouplist查询出来
Yum 卸载软件组
yum groupremove 软件组名 : 卸载指定软件组
Linux 源码包安装和卸载
首先安装 gcc 和 make
rpm -q gcc | yum -y install gcc
rpm -q make | yum -y install make
下载源码包,如: xxx.tar.gz
解压: tar -zxvf xxx.tar.gz
进入解压目录
检测系统环境是否符合安装要求: ./configure
定义需要的功能选项:
./configure –prefix=安装路径
执行 ./configure–help 查询支持的功能
编译: make
正式安装软件: make install
重装:在make前,要执行 make clean ,他会清空 Makefile 文件或编译产生的 .o 头文件
Linux 源码包卸载
rm -rf /usr/local/xxx : 删除软件的安装目录,删除前需停止服务
Linux 源码包快速升级
使用补丁更新源码包: 省去./configure 生成新的 Makefile文件,还省去了编译
Linux 补丁文件的生成和使用
diff 选项 old new
-a : 将任何文档当作文本文档处理
-b : 忽略空格造成的不同
-B : 忽略空白行造成的不同
-l : 忽略大小写造成的不同
-N : 比较两个目录时,如某个文件只在一个目录,则另一个目录视为空
-r : 比较目录时,递归比较子目录
-u : 使用同一输出格式
1. 创建两个文件
mkdir test | cd test | vi old.txt | vim new.txt
2. 利用diff命令,比较两个文件(old.txt 和 new.txt)的不同,并生成补丁文件 (txt.patch),执行一下代码:
diff -Naur /roor/test/old.txt /root/text/new.txt < txt.patch
给软件打入补丁
1. 下载补丁文件
2. 复制补丁文件到源码包解压目录中 cp xxx.diff 软件包名
3. 给旧软件打入补丁 cd 软件目录 | vi xxx.diff
4. 重新编译 软件包源码 make
3. 安装 软件 make install
Linux 用户和用户组管理
UID 和 GID (用户ID 和 组ID)
/etc/passwd
系统用户配置文件,存储系统所有用户的基本信息,所有用户有读操作
表达的含义:
用户名: 密码:UID(用户ID) :GID(组ID) :描述性信息 : 主目录 : 默认Shell
用户名: 代表用户身份的字符串
密 码 :x 表示此用户设有密码, 真正的密码保存在 /etc/shadow 文件中
UID : 用户ID,识别不同的用户 0~65535
0 : 超级用户
1 ~ 499 : 系统用户
500 ~ 65535 : 普通用户
GID : Group ID ,组ID
初始组: 如:建立用户lamp的同时,建立 lamp组作为lamp用户的初始组
附加组: 指用户可以加入多个其他的用户组,并拥有这些组的权限
描述性信息:
主目录: 用户登陆后有操作权限的访问目录,用户的主目录
默认的Shell:Linux的解释器,用户和Linux内核沟通的桥梁,默认 bash /bin/bash
/etc/shadow (影子文件)
用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的款期时间:账号失效时间:保留字段
忘记密码:
1.重启进入单用户模式, 系统会提供root权限的bash 接口,用 passwd命令修改账号密码;
2.通过挂载根目录,修改 /etc/shadow,将账户的root密码清空
/etc/group
用户组配置文件,用户组的所有信息存放在此文件中
组名:密码:GID:该用户组中的用户列表
/etc/gshadow
组名:加密密码:组管理员:组附加用户列表
初始组和附加组
添加新用户: useradd user
添加新群组: groupadd group
将用户xxx加入到xxx群组: usermod -G group user
查找: grep ‘user’ /etc/passwd /etc/group /etc/gshadow
一个用户可以所属多个附加组,但只能有一个初始组
查看用户所属全部群组:
gourps
/etc/login.defs :创建用户的默认设置文件
useradd : 添加新的系统用户
useradd 选项 用户名
-u UID : 手工指定用户的UID,UID 不要小于500
-d 主目录 : 手工指定用户的主目录,必须是绝对路径,注意权限
-c 用户说明 : 手工指定 /etc/passwd 文件中各用户信息中第5哥字段的描述性内容,可随意配置
-g 组名 : 手工指定用户的初始组
-G 组名 : 指定用户的附加组
-s shell :手工指定用户的登录 Shell ,默认是 /bin/bash
-e 日期 : 指定用户的失效日期 格式为 “YYYY-MM-DD” /etc/shadow 文件的第八个字段
-o : 允许创建的用户的UID 相同,例如:useradd -u 0 -o usertest
-m : 建立用户时强制建立用户的家目录
-r : 创建系统用户 UID 在 1 ~ 499
/etc/default/useradd 文件
passwd :修改用户密码
passwd 选项 用户名
-S :查询用户密码的状态 = /etc/shadow
-l :暂时锁定用户
-u :解锁用户
–stdin :通过管道符输出的数据作为用户的密码,主要用于批量添加用户
-n : 天数 不能修改密码期限 /etc/shadow 第4个字段
-x : 天数,设置密码有效期 第5个字段
-w : 天数 用户密码过期的警告天数 第6个字段
-i : 日期,用户密码失效日期 第7个字段
usermod : 修改用户信息
usermod 选项 用户名
-c : 用户说明:修改用户的说明信息 修改 /etc/paswd 文件目标用户信息的第5个字段
-d : 主目录: 修改用户的主目录 6
-e : 日期:修改用户的失效日期 8
-g : 组名:修改用户的初始组 4
-u : UID: 修改用户的UID 3
-G : 组名:修改用户的附加组,把用户加入其他用户组
-l : 修改用户名称
-L : 临时锁定用户
-U : 解锁用户
-s : shell: 修改用户的登录Shell
chage : 修改用户密码状态
chage 选项 用户名
-l : 列出用户的详细密码状态
-d : 日期 /etc/shadow 第3个字段
-m : 天数 修改密码最短保留天数 第4个字段
-M : 天数 修改密码的有效期 第5个字段
-W : 天数 修改密码过期前的警告天数 第6个字段
-i : 天数 修改密码过期后的宽限天数 第7个字段
-E : 日期 修改账号失效日期 第8个字段
userdel : 删除用户
userdel -r 用户名
-r : 在删除用户的同时删除用户的家目录
id : 查看用户的UID 和GID
id 用户名
su : 用户间切换
su 选项 用户名
- : 当前用户不仅切换为指定用户的身份,刚工作环境也切换为此用户的环境包括 PATH变量、MAIL变量等,可省略用户名,默认为root
-l : 同-,但后面需要添加欲切换的使用者账号
-p : 切换为指定用户的身份,但不改变当前的工作环境
-m : 同 -p
-c : 仅切换用户执行一次命令,执行后自动切换回来
su 和 su - 的区别
工作环境
groupadd : 添加用户组
groupadd 选项 用户
-g GID : 指定组ID
-r : 创建系统群组
groupmod : 修改用户组
groupmod 选项 用户名
-g GID : 修改组ID
-n 新组名 : 修改组名
groupdel : 删除用户组
groupdel 组名
gpasswd : 把用户添加进组或从组中删除
gpasswd 选项 组名
: 选项为空时,给群组设置密码,仅root用户可用
- A user1,… : 将群组控制权交给 user1,… 等用户管理, 是将 user1,等用户为群组的管理员,仅root用户可用
-M user1,… :将user1等加入到群组中,仅root可用
-r : 移除群组的密码,仅root可用
-R : 让群组的密码失效,仅root可用
-a user : 将user 用户加入到群组中
-d user : 将user 用户从群组中移除
newgrp : 切换用户的有效组
newgrp 组名
权限管理
针对不同的用户,设置不同的文件访问权限,包括读、写、删除等
ls -al // 查看文件或目录的权限信息
chgrp:修改文件和目录的所属组
chgrp [-R] 所属组 文件名(目录名)
-R: 递归 修改 所属组
chown:修改文件和目录的所有者和所属组
chown [-R] 所有者 文件后目录
-R: 递归 修改 所有者
chown [-R] 所有者:所属组 文件或目录
权限位
文件权限 3 种, 文件 读(r), 写(w), 执行(x)
每行的第一列表示权限,共11位,第一位表示具体类型,最后以为收SELinux安全规则管理
读、写、执行 共 9 位字符
rw- r– r– // 所有者、所属群组、其他用户
r : 4
w : 2
x : 1
chmod: 修改文件或目录的权限
chmod [-R] 权限值 文件名
-R :递归 设定 权限
chmod [字母 u、g、o、a ] +|-|= r|w|x 文件或目录
u:用户
g:群组
o:其他
a:所有
+:加入
-:删除
=:设定
umask: 令新建文件和目录拥有默认权限
umask // 默认值:root用户 0022, 普通用户:0002
默认权限由4个八进制数组成,第一个数代表所有者的特殊权限 (SetUID, SetGID, Sticky BIT) 最后3位022 才是真正用到的umask权限 可转换为 — -w- -w-
文件或目录初始权限 = 文件或目录最大默认权限 - umask权限
文件最大默认权限是666:-rw-rw-rw- 666 - 033 = 633
目录最大权限默认是777 drwxrwxrwx 777 - 022 = 755
默认权限修改方法:
umask 022 umask 033
ACL 访问控制权限
三种身份: 文件所有者、所属群组、其他用户
三种权限: 读 r 、 写 w 、 访问 x
权限前的字符,表示文件的具体类型,d:目录,-:普通文件,|:表示连接文件,b:设备文件
ACL:Access Control List (访问控制列表),ACL可实现单一用户设定访问文件的权限,除了传统方式,还可以用ACL进行设定
mount :查看系统挂载的分区
dumpe2fs -h /dev/sda1 // dumpe2fs 查询指定分区文件系统详细信息
-h:仅显示超级块中的信息,不显示磁盘块组的信息
mount -o remount,acl / // 重新挂载根分区,并加入ACL权限,针对分区
ACL权限设置(setfacl 和 getfacl)
getfacl 文件名 // 查看文件或目录设定的ACl权限信息
setfacl 选项 文件名 // 设定用户或群组对指定文件的访问权限
-m : 设定ACl权限 // setfacl -m u:user:rx /dir
-x : 删除指定用户 // setfacl -x u:user /dir
-b : 删除所有的ACL权限 // setfacl -b /dir
-d : 设定默认ACL权限 // setfacl -m d:u:user:rwx 文件名 群组: d:g:group:rwx
-R : 递归设定ACL权限 // setfacl -m u:user:rwx -R /dir
-k : 删除默认ACL权限
mask: 有效权限
指用户或群组能拥有的最大ACL权限,给用户或群组设定的ACl权限不能超过mask规定的权限范围,超出部分无效
SetUID(SUID)文件特殊权限
仅适用于可执行文件,对设有SUID的文件有执行权限,执行此文件时,会以文件所有者的身份去执行,执行结束,身份的切换也消失
chmod u-s /usr/bin/passwd : 取消SetUID
SUID 特点:
只有可执行文件才能设定SetUID权限,对目录无效
对文件拥有执行(x)权限
执行文件时,以文件所有者的身份执行
SetUID 权限只在文件执行过程有效,执行完毕,也消失
不要轻易设置SetUID权限,有重大安全隐患
Stick BIT (SBIT)文件特殊权限
仅对目录有效,设定SBIT权限,目录下创建的文件和目录,只有自己和root有修改和删除权限
Chattr:修改文件系统的权限属性
chattr [+-=] [属性] 文件或目录
+:添加属性 -:移除拥有的属性 =:设定一些属性
i:对文件设定i属性,不允许删除、改名、添加、修改。 对目录设置i属性,只能修改,不能建立、删除文件
a:文件:只增加数据,不能修改、删除。 目录:在目录中只建立和修改文件,不能删除文件
u:文件或目录:删除时,内容保存,能恢复。防止意外删除文件或目录
s:与u相反,删除文件或目录,会彻底删除,不可恢复
lsattr:查看文件系统属性
lsattr 选项 文件或目录名
-a:不带文件或目录,显示所有文件和目录,包括隐藏
-d: 目录:列出本身的隐藏属性,布列出包含文件或子目录的隐藏属性
-R: 与-d相反, 目录:连同子目录隐藏信息数据一并显示
sudo:系统权限管理
sudo [-b] [-u 新使用者账号] 要执行的命令
-b:将后续的命令放到背景中让系统自行运行,对当前shell无影响
-u: 后面+切换的用户名,无用户名则为root
-l: sudo -l,用于显示当前用户可用sudo执行命令
文件系统管理
Centos6.3 默认为Ext4
兼容Ext3
最大1EB文件系统和16TB文件
无限数量子目录
Extents 连续数据块概念
多块分配、延迟分配、持久项分配
快速FSCK、日志校验、无日志模式、在线碎片整理、inode增强、默认穷barrier等
支持的文件系统
Ext:最早的文件系统
Ext2:1993年发布,最大支持16TB分区,2TB文件
Ext3:带日志功能
Ext4:上面以写
swap:交换分区,类似虚拟内存,当内存不够时,交换分区代替,必须分区
NFS: 网络文件系统Network File System,本地通过挂载使用远程共享的资源
iso9660:关盘的标准文件下体哦那个
fat: 类windows fatl6文件系统
vfat:类windows fat32文件系统 最大支持32G文曲和4G文件啊你
NTFS: windows 所有,2TB分区 64G文件
ufs:Sun公司系统Solaris SunOS采用的文件系统
proc:内存的虚拟文件系统,/proc
sysfs: =proc
tmpfs: 基于内存的虚拟文件系统,可使用swap交换分区
df:查看文件系统硬盘使用情况
df 选项 目录或文件名
-a:显示所有系统信息
-m: 以MB显示容量
-k:以KB显示
-h: 以KB、MB、GB等自行显示
-T:显示分区的文件系统名称
-i: 不用硬盘容量显示,以含有inode的数量显示
du: 统计目录或文件所占磁盘空间大小
du 选项 目录或文件名
-a: 显示每个子文件的磁盘占用量,默认统计子目录的磁盘占用量
-h: 人性化显示磁盘占用量
-s: 统计总磁盘占用量,不列出子目录和子文件的磁盘占用量
mount: 挂载Linux系统外的文件
mount
-l:mount显示系统已挂载的设备信息, -l 额外显示卷标名称
-a: 自动检查 /etc/fstab 文件中有无疏漏被挂载的设备文件,有,则自动挂载。开机主动读取/etc/fstab 文件中的内容
mount -t系统类型 -L卷标名 -o特殊选项 -n设备文件名挂载点
-t:系统类型,指欲挂载的文件系统类型:Ext2、Ext3、Ext4等
-L: 卷标名 利用文件系统的卷标名称进行挂载
-n:系统将实际挂载的情况写入 /etc/mtab 文件中。若不写入,使用此选项
-o:特殊选项:可指定挂载的额外选项,如读写权限、同步异步
umount:卸载文件系统
umount 设备文件名或挂载点
fsck:检测和修复文件系统
fsck 选项 分区设备文件名
-a: 自动修复,不提示
-r: 互助的修复模式,会询问
-A: 按照/etc/fstab 配置文件的内容,检查文件内罗列的全部文件系统
-t 文件系统类型: 指定要检查的文件系统类型
-C: 显示检查分区的进度条
-f: 强制检测
-y: 自动修复=-a,但有些文件系统只支持-y
dumpe2fs:查看文件系统信息
dumpe2fs -h 文件名
-h: 仅列出superblock(超级块)的数据信息
fdisk: 给硬盘分区
fdisk -l :列出系统分区 最高支持2TB的硬盘分区
fdisk 设备文件名
创建分区
parted:创建分区
parted 硬盘设备文件名
具体操作见 交互命令
mkfs: 格式化分区(为分区写入文件系统)
mkfs -t 文件系统格式 分区设备文件名
mke2fs:格式化硬盘(给硬盘写入文件系统)
mke2fs 选项 分区设备文件名
-t 文件系统: 指定格式化为如: ext2、ext3、ext4
-b 字节:指定block大小
-i 字节:指定字节 inode 的比例
-j: 建立带有ext3 日志功能的文件系统
-L 卷标名: 给文件系统设置 大专栏 Linux卷标名
swap: 分区及作用
交换分区
建立swap分区的步骤
1. 分区 fdisk或parted
2. 格式化 mkswap 格式化为 swap分区
3. 使用swap分区
分区:fdisk /dev/sdb
格式化: mkswap /dev/sdb1
使用: 加入swap分区 swapon 分区设备文件名
高级文件系统管理
磁盘配额、 LVM(逻辑卷管理)、 RAID(磁盘阵列)
磁盘配额:限制普通用户在分区中使用的容量和文件个数
LVM: 在不停机和不损失数据的情况下修改分区带线啊哦
RAID:有多块硬盘或分区组成,拥有数据冗余功能,在某块硬盘或分区损坏时,硬盘或分区保存的数据不丢失
磁盘配额
Linux系统中限制特定的普通用户或用户组在指定的分区上占用的磁盘空间或文件个数
满足磁盘配额的条件:
1. 内核支持 grep CONFIG_QUOTA /boot/conrrfig-2…el6.i686
2. 安装Quota工具 rpm -qa | grep quota
3. 支持磁盘配额的分区必须开启磁盘配额功能
常见概念
用户配额和组配额
磁盘容量限制和文件个数限制
软限制和硬限制
宽限时间
磁盘配额启动的前期准备(设置挂载参数usrquota和grpquota)
添加方式:
1. 手动添加挂载参数:
mount -o remout,usrquota,grpquota /home
mount | grep home
2. 修改/etc/fstab文件。将挂载参数写入配置中
vi /etc/fstab
LABEL = /home /home ext3 defaults.usrquota,grpquota 1 2
umount /home
mount -a
mount | grep home
quotacheck:扫描文件系统并建立Quota记录文件
quotacheck [-avugfM] 文件系统
-a:扫描所有在/etc/mtab 中含有quota支持的filesystem,此参数后边的文件系统可不写
-u:针对使用者扫描文件与目录的使用情况,会创建 aquota.user
-g:针对群组扫描文件与目录的使用情况,会创建aquota.group
-v:显示扫描的详细过程
-f:强制扫描文件系统,并写入新的quota记录文件
-M:强制以读写的方式扫描文件系统,特殊情况下使用
quotaon:开始磁盘配额限制
quotaon [-avug]
quotaon [-vug] 文件系统名称
-a:根据/etc/mtab 文件中对文件系统的配置,启动相关的Quota服务
-u:针对用户启动Quota
-g:针对群组启动Quota
-v:显示启动服务过程的详细信息
quotaoff:关闭磁盘配额限制
quotaoff [-avug]
quotaoff [-vug] 文件系统名称
-a:根据/etc/mtab 文件,关闭已启动的Quota服务,如不使用-a选项,则后面需要明确协商特定的文件系统名称
-u:关闭针对用户启动的Quota服务
-g:关系针对群组启动的Quota服务
-v:显示服务过程的详细信息
edquota:修改用户(群组)的磁盘配额
edquota [-u用户名] [-g群组名]
edquota -t
edquota -p 源用户名 -u 新用户名
-u 用户名:进入配额的Vi编辑界面,修改针对用户的配置值
-g 群组名:修改针对群组的配置值
-t: 修改配额参数中的宽限时间
-p: 将源用户(或群组)的磁盘配额设置,复制给其他用户(或群组)
edquota 命令配额限制信息
文件系统 filesystem:针对哪个文件系统或分区
磁盘容量 blocks: quota自己算的,单位为Kbytes,不要手动修改
磁盘容量的软限制 soft: 超过此限制值,登陆时会收到警告信息
磁盘容量的硬显示 hard: 要求用户使用的磁盘空间不超此限制值,单位为KB
文件数量 inodes: 当文件数量超过此值,会发出警告
文件数量的硬限制 hard: 用户拥有的文件数量不超此值
setquota:非交互式设置磁盘配额
setquota -u 用户名 容量软限制 容量硬限制 个数软限制 个数硬限制 分区名
quota和repquota查询磁盘配额方法
quota 查询用户或用户组的配额
quota 选项 用户名或组名
-u 用户名: 查询用户配额
-g 组名 : 查询组配额
-v: 显示详细信息
-s: 以习惯单位显示容量大小 如 M、G
repquota 查询整个分区的配额情况
repquota 选项 分区名
-a: 依据/etc/mtab 文件查询配额,如不加-a,就得加分区名
-u: 查询用户配额
-g: 查询组配额
-v: 显示详细信息
-s: 以易读单位显示容量大小
LVM逻辑卷管理机制(硬盘分区管理机制)
LVM:Logical Volume Manager,逻辑卷管理,Linux下对硬盘分区的一种管理机制
物理卷(Physical Volume, PV):真正的物理硬盘或分区
卷组(Volume Group, VG):将多个物理卷组成了卷组,把卷组想象为一块逻辑硬盘
逻辑卷(Logical Volume, LV):逻辑卷可被格式化和写入数据,可想象为分区
物理扩展(Physical Extend,PE):PE保存数据的最小单元,默认是4MB
建立LVM的步骤:
1. 把物理硬盘分成分区
2. 把物理分区建立为物理卷PV
3. 把物理卷整合为卷组VG
4. 把卷组划分为逻辑卷LV
PV物理卷:创建、查看、删除
1. 建立所需的物理分区,方式使用fdisk交互命令
建立物理卷;
pvcreate 设备文件名
查看物理卷:
pvscan
pvdisplay
删除物理卷:
pvremove /dev/sdb7
VG卷组:创建、激活、查看、扩容、减小、删除
建立卷组:
vgcreate [-s PE 大小] 卷组名 物理卷名
激活卷组:
激活:vgchange -a y 卷组名
停用:vgchange -a n 卷组名
查看卷组:
vgscan : 查看系统中是否有卷组
vgdisplay: 查看卷组的详细状态
增加卷组容量:
vgextend scvg /dev/sdb7
减少卷组容量:
vgreduce scvg /dev/sdb7
删除卷组:
vgremove scvg
LV逻辑卷:创建、查看、调整大小、删除
建立逻辑卷:
lvcreate 选项 -n 逻辑卷名 卷组名
-L:容量,逻辑大小,单位为MB、GB、TB
-l:个数,按照PE个数指定逻辑大小
-n:逻辑卷名
查看逻辑卷:
lvscan : 查看系统中是否拥有逻辑卷
lvdisplay : 查看逻辑卷的详细信息
调整逻辑卷大小:
lvresie 选项 逻辑卷的设备文件名
-L: 容量
-l: 个数
删除逻辑卷:
lvremove 逻辑卷的设备文件名
LVM(逻辑卷管理) 删除
RAID(磁盘列阵)
图形界面配置RAID
mdadm配置RAID
启动管理
1 | 启动流程: |
系统服务管理
服务是后台运行的应用程序,提供本地系统或网络的功能,Service,Daemon:守护神、守护进程
守护进程:为了实现服务、功能的进程,是服务在后台运行的真实进程
系统服务及分类
[服务分类](http://c.biancheng.net/uploads/allimg/181024/2-1Q02413195AP.jpg)
软件安装方式:1. RPM包 2. 源码包
服务分为两种:
独立的服务:可自动启动,不依赖管理服务,如 Nginx服务、FTP服务等
基于Xinetd的服务:依靠管理服务来调用,管理服务是xinetd服务,是系统的超级守护进程,作用:管理不能独立启动的服务,当有客户端请求时,先请求xinetd服务,由xinetd服务去唤醒相对应的服务。
查询已安装的服务与区分服务
RPM包默认安装到系统默认位置,可被服务管理命令(service、chkconfig)识别
chkconfig –list 服务名 // 管理RPM包默认安装服务的自启动命令,列出所有服务的自启动状态
Linux端口及查询方法
协议:
面向连接的可靠的TCP协议(Transmission Control Protocol,传输控制协议)
面向无连接的不可靠的UDP协议(User Datagram Protocol, 用户数据报协议)
查询系统中已启动的服务:
netstat 选项
-a: 列出系统中所有网络连接,包括:网络服务、监听的网络服务、Socket套接字
-t: 列出TCP 数据
-u: 列出UDP 数据
-l: 列出正在监听的网络服务(不包含已连接的网络服务)
-n: 用端口号来显示而不用服务名
-p: 列出该服务的进程ID(PID)
执行结果字段解析:
Proto: 数据包的协议
Revc-Q:收到的数据已在本地接受缓冲
Send-Q:对方没有收到的数据包数量
Local Address:本地IP:端口,通过端口知道本机开启的服务
Foreign Address:远程主机:端口,
State: 连接状态,已建立连接(ESTABLISED)和监听(LISTEN)
PID/Program name: 进程ID和进程命令
Socket套接字的解析:
Proto:协议,一般是Unix
RefCnt: 连接到此Socket的进程数量
Flags:连接标识
Type: Socket访问类型
State:状态 Listening:监听 Connected:已建立连接
l-Node:程序文件的i节点号
Path:Socket程序的路径、或者相关数据的输出路径
独立服务的启动管理(RPM包的启动与自启动)
两种方式:
1. 使用/etc/init.d/ 目录中的启动脚本来启动独立的服务
/etc/init.d/独立服务名 start|stop|status|restart|…
start:启动服务
stop :停止服务
status:服务状态
restart:重启服务
2. 使用service命令来启动独立的服务
service 只是一个脚本,调用/etc/init.d/ 中的启动脚本来启动独立服务
service 独立服务名 start|stop|restart|…
–status-all :列出所有独立服务的启动状态
独立服务的自启动管理
三种方式:
1. 使用chkconfig服务自启动管理命令
chkconfig –list // 查询自启动状态
chkconfig –list | grep nginx
chkconfig [–level 运行级别][独立服务名][on|off]
–level:设定在哪个运行级别中开机自启动(on),关闭自启动(off)
chkconfig –level 2345 nginx on // 修改2345这4个级别为启用
/etc/init.d/nginx status // 查看服务状态
2. 修改 /etc/rc.d/rc.local 文件,设置服务自启动
修改 rc.local 文件,添加服务的启动命令,注:/etc/rc.d/rc.local 和 /etc/rc.local 文件时软连接,修改哪个都可以,这个文件中的命令会在启动时调用
vi /etc/rc.d/rc.local
/etc/rc.d/init.d/nginx start
# 在文件中加入nginx的启动命令
好处:
1. 集中管理
2. 服务启动唯一性,不管哪种方式都通过 /etc/rc.d/rc.local 文件实现
3. 使用ntsysv 命令管理自启动
ntsysv:调用窗口模式管理服务的自启动
ntsysv [–level 运行级别]
ntsysv –level 234
# 设定234级别的服务自启动
Linux基于xinetd服务的管理方法
基于xinetd服务的启动
xinetd 服务的配置文件保存在 /etc/xinetd.d/ 目录中
telnet: /etc/xinetd.d/telnet
如果要启动telnet服务,只需把 /etc/xinetd.d/telnet 文件中的disable=yes 改为 disable=no ,disable:代表取消
基于xinetd服务的自启动
1. 使用chkconfig 命令管理自启动
chkconfig 服务名 on|off
2. 使用ntsysv命令管理自启动
Linux源码包服务管理(启动与自启动)
源码包服务的启动管理:
/usr/local/apache2/bin/apachectl start|stop|restart|status|…
源码包服务的自启动管理:
vim /etc/rc.d/rc.local // 修改自启动文件
touch /var/lock/subsys/local /usr/local/apache2/bin/apachectl start
# 加入源码包服务的标准启动命令
让源码包服务被服务管理命令识别:
1. 卸载RPM包默认安装的apache服务
yum -y remove httpd
2. 安装源码包的apache服务,并启动
/usr/local/apache2/bin/apachectl start
netst -tlun | grep 80
3. 让源码包安装的apache服务能被service命令管理启动
ln -s /usr/local/apache2/bin/apachectl /etc/init.d/apache
# 把源码包的启动脚本连接到 /etc/init.d/目录中,能被service命令管理
4. 让源码包安装的apache服务能被chkconfig命令管理自启动
vi /etc/init.d/apache
# 修改源码包安装的apache服务的启动脚本,此文件是软连接,实际修改的是源码包的启动脚本
chkconfig: 运行级别 启动顺序 关闭顺序
chkconfig –add apache
chkconfig –list | grep apache
5. 让ntsysv命令可以管理源码包安装的apache服务
把服务的启动脚本链接到/etc/init.d/目录中,在启动脚本中加入:
#chkconfig:运行级别 启动顺序 关闭
#description:说明
然后使用: chkconfig –add 服务名
chkconfig 选项服务名
-add: 把服务加入chkconfig命令的管理中
-del: 把服务从chkconfig命令的管理中删除
chkconfig -del|httpd
Linux常见服务类被及功能
acpid: 电源管理接口
anacron: 系统的定时任务,是cron的子系统
alsasound: alsa声卡驱动
apmd: 电源管理模块
atd:指定系统在特定时间执行某个任务,只能执行一次
auditd:审核子系统
autofs:让服务器可自动挂载网络中其服务器的共享数据,挂载NFS服务
avahi-daemon:avahi是zeroconf协议的实现
bluetooth:蓝牙设备支持
capi:仅对ISND设备用户有用
chargen-dgram:使用UDP协议的chargen server,类远程打字功能
chargen-stream: 同上
cpuspeed:调整CPU频率
crond:系统定时任务
cvs:版本控制系统
… More
常见服务
Linux 命令行快捷键
Tab:补全
Ctrl + c : 中断命令或进程
Ctrl + z : 同 & ,将程序送到后台
Ctrl + d : 退出终端
Ctrl + l : 清空终端
Ctrl + a : 光标移到行首
Ctrl + e : 光标移到行尾
Ctrl + u : 擦除整行命令
Ctrl + k : 擦除所在未到行尾
Ctrl + y : 粘贴擦除的命令
Ctrl + p : 查看上一个命令,可看历史命令
Ctrl + n : 下一个命令
Ctrl + h : 擦除前面一个字符
Ctrl + r : 搜索历史命令
Ctrl + 左右键: 在单词间跳转
Ctrl + t : 交换光标所在处的两个字符的位置
esc + b : 移到单词的开头
esc + f : 移到单词的结尾
esc + w : 删除光标前的字符
esc + t : 颠倒光标所在处相邻字符位置
Ctrl + x + u : 按Ctrl 同时按 x u,撤销操作
Bang(!)命令:
!! : 执行上一条命令
^foo^bar : 把上一条命令的foo替换为bar,并执行
!wget : 执行最近的以 wget 开头的命令
!wget:p : 仅打印最近的以wget开头的命令,但不执行
!$ : 上一条命令的最后一个参数
!* : 上一条命令的所有参数
!*p : 执行上一条命令的所有参数
^abc : 删除上一条命令中的abc
!-n : 执行前 n 条命令, eg:!-3 执行前3条命令