一、文件系统命令
1. FHS
1.1 FHS:文件系统层次化标准
1.2 拓扑:倒置的树形结构,一切都从根目录(/)开始
1.3 常见一级目录存储文件功能
/boot:存储开机所需文件,如:内核、镜像、菜单的配置文件
/dev:以文件的形式存储设备及接口,如:硬盘、光驱等
/bin:存储命令程序及配置文件
/lib:开机时用到的函数及数据
/root:root账户的家目录,相当于~
/var:存储系统产生的日志文件
/media:用于挂载设备(光驱)的目录
/user:存储应用程序的安装目录
/etc:配置文件存储目录
1.4 注意:目录名称区分大小写,FHS意义在于按照功能进行分类存储文件
2. 文件操作命令
2.1 新建目录命令
格式:mkdir -参数 目录名称
参数:
-p:创建递归目录(包含下级目录的多级目录)
-m:对新建的目录设置存取权限
例:

2.2 新建文件命令
格式:touch -参数 文件名
例1:touch n{1,2,3,4,5,6,7,8}.txt

例2:

例3:
touch test.c
vim test.c
#include<stdio.h> int main(void){ printf("Hello World"); return 0; }gcc test.c
ls -a

./a.out
2.3 删除命令
格式:rm -参数 文件名
参数:
-r:删除目录
-f:强制删除,不确认

2.4 pwd命令:显示绝对路径
2.5 cp拷贝命令
格式:cp -参数 源文件 目标文件
参数:
-r:拷贝目录
-p:保留原始文件属性
-d:若为链接文件,则保留链接文件属性
注意:
若目标为目录,则拷贝到目录中
若目标为文件且不存在,则正常拷贝
若目标为文件且名称不同,则改名后拷贝
2.6 mv移动文件命令
格式:mv -参数 源文件 目标文件
注意:
若目标为目录,则剪切移动到目录中
若目标为文件,则修改名称(无同名目录)
2.7 大容量文件生成命令
格式:dd if=数据来源 of=新文件名 count=数据块个数 bs=单个块容量
功能:按照指定容量制作大文件,数据来源一般为算法设备或光驱
if=/dev/zero:zero为可输出指定容量大小的数据0
if=/dev/sr0:光驱(cdrom)
例:
制作400MB大文件:dd if=/dev/zero of=xin.txt count=2 bs=200MB
制作光盘镜像:dd if=/dev/sr0 of=centos7_x86_64.iso
2.8 file命令
作用:查看文件类型
格式:file 文件名
文件类型
empty:空文件
ASCII File:ASCII文件
character special:字符设备文件
block special:块设备文件
directory:目录
link:链接文件
2.9 cat命令
作用:输出文本内容
格式:cat 文件名
参数:
-n:显示行号
-b:排除空行,非空行显示行号,从1开始显示
将文件显示内容输出到另一文件
touch temp.txt
cat /etc/passwd > temp.txt
cat temp.txt
文档合并:

2.10 tac命令
作用:倒序查看文件内容
格式:tac 文件名

2.11 more命令
作用:翻页查看文件内容,适用于内容较多的文件
格式:more 文件名
参数
-s:将输出文件中的空行减少为1个空行
-p:先清屏后显示
-数字:如-10,表示1屏显示10行,包括空行
例:
more -sp /etc/passwd
more -5 /etc/passwd
注意:
点击空格进行翻页浏览
点击回车进行换行浏览
点击q键退出浏览
2.12 less命令
作用:同more,使用键盘上下键浏览
2.13 head命令
作用:显示文本文件的前n行
格式:head -数字 文件名
2.14 wc命令
作用:统计文本文件内容的个数
格式:wc -参数 文件名
参数
-l:显示行数
-w:显示单词数
-c:显示字节数
不加参数全显示
例:显示文件前十行后统计字节数

2.15 stat命令
作用:显示文件的存储信息
格式:stat 文件名
3. 文件查找命令
作用:按照条件查找文件
格式:find 查找路径 查找条件 操作
查找条件:
文件名称
-name:按照文件名检索,文件名最好加上双引号
通配符:
*:表示任意内容匹配任意次数
?:表示任意内容匹配一次



以扩展名查询文件
find /etc -name "*.cfg"


文件属性
-user:按照所有者进行匹配(root账户或普通账户)
find ~ -user "root"

find ~ -name "a*" -user "root"(检索以a开头且归属于root账户的文件)

find / -name "*e" -o -user "ZHIYUAN"(检索以e结尾或归属于ZHIYUAN账户的文件)
设备
-type b/d/c/p/l/f:按照文件类型检索(块设备、目录、字符设备、管道设备、链接文件、文本文件)
find /dev -type b (检索块设备文件)
find ~ -type d (检索目录)
权限
-perm:按照权限检索
find /dev -perm 777
时间
-mtime:按照修改文件时间检索
-atime:按照访问文件时间检索
-ctime:按照修改权限时间检索
注意:-n表示n天以内,+n表示n天以前
例:find / -mtime -10 -empty(检索10以内未修改的空文件)
容量
-size:按照容量来检索(k、M、G)
find /dev -type c -size -10k(检索/dev目录下的容量小于10k的字符设备文件)
find / -size +100M(检索根目录下容量大于100M的文件)
4. 文件内容过滤命令
作用:在一个文件中按照查找字段进行过滤内容
格式:grep -参数 查找条件 文件名
参数:
-n:显示检索内容的行号
-i:忽略字母大小写
-v:根据检索关键字进行反向显示
-c:统计符合条件的行数
-A数字:如-A3,显示符合条件的当前行和以下3行,向下遍历(4行)
-B数字:如-B3,显示符合条件的当前行和以上3行,向上遍历(4行)
-C数字:如-C2,显示符合条件的当前行以及上下2行(5行)
例:
检索包含“root” 的行信息:grep -n "root" /etc/passwd

检索passwd文件中不能登录的信息:grep -n “/sbin/nologin” /etc/passwd

检索passwd文件中能登录的信息:grep -n -v "/sbin/nologin" /etc/passwd

检索包含“ssh”字段的行以及上5行:grep -nB5 "ssh" /etc/passwd

检索包含“ftp”的行及上下两行:grep -nC2 "ftp" /etc/passwd

检索不能登录账户的行数:grep -c "/sbin/nologin" /etc/passwd


检索包含大小写字母d的信息:grep -ni "d" /etc/passwd

正则表达式
概念:为了处理大量文本或字符串而定义的一套规则方法
特点:
通过定义特殊符号来描述模糊查找关键字,可以快速过滤、替换、输出字符串
检索时是按行为单位进行处理
使用[ ]字符集表示
[ab]:检索包含或者 b的行信息,[]中只能表示一个内容
例:检索包含字母d或者D的信息:grep

例:检索包含字母o的信息:grep -n [o] /etc/passwd
[^]:根据关键字检索后反向显示(反向着色)
例:检索不包含字母o的信息:grep -n [ ^o ] /etc/passwd
例:检索不以r开头且包含oot的信息:grep -n [ ^r ]oot /etc/passwd

[-]:[0-9] 表示数字,[a-z] [A-Z]表示小写或大写字母,[a-zA-Z]表示字母
例:检索包含7-9的信息:grep -n [7-9] /etc/passwd

例:检索包含大写字母:grep -n [A-Z] /etc/passwd

行首及行尾
^:表示行首
例:检索以“root”开头的行信息:grep -n "^root" /etc/passwd

例:检索以#开头的行信息:grep -n "^#" /etc/sos.conf

例:检索以[开头的信息:grep -n "^\[" /etc/sos.conf(注意:\转义)

$:表示行尾
例:检索以数字结尾的信息:grep -n [0-9]$ /etc/sos.conf

例:检索空白行:grep -n ^$ /etc/sos.conf

例:检索非空行:grep -nv ^$ /etc/sos.conf

正则通配符
点(.):表示一个任意字符
例:检索以r开头,t结尾的中间2个字符的信息:grep -n "r..t" /etc/passwd
星号(*):重复前面字符 0次或多次
例:检索至少包含2个字母o的信息:grep -n "ooo*" /etc/passwd

转义字符
作用:由于某些字符有特殊作用,若使用该字符原来的功能,则需要使用\将其特殊功能去掉,称为转义

例:检索以点结尾的字符:grep -n "\.$" tt.txt
区间字符
格式:\{n1,n2\}
分析:由于{}有特殊作用,需要使用\进行转义,n1==n2时,可以简写为\{n1\},表示执行n1次
例:检索包含两个o的信息:grep -n "o\{2\}" /etc/passwd

例:检索包含两个到五个o的信息:grep -n "o\{2,5\}" /etc/passwd

5. 文档内容替换命令
作用:进行文本内容的批量替换
格式:tr 原字符 结果字符
例:将passwd文件中的小写字母改为大写:cat /etc/passwd | tr [a-z] [A-Z]

例:grep -n "root" ~/passwd | tr [a-z] [A-Z]

6. 打包压缩命令
作用:将文件或目录进行打包、压缩、解压缩
分类:
*.gz:由gzip程序进行压缩、解压缩
*.bz2:由bz2程序压缩、解压缩
*.tar:只是打包文件
*.tar.gz:使用tar打包后进行gzip压缩
注意:*.tar.bz2 和 *.tar.xz 也是打包压缩文件
tar命令
格式:tar -参数 文件名 目标及存储路径
参数:
-c:创建压缩文件
-x:解压缩文件
-v:显示时间进度
-f:目标文件名
-p:保留原始文件的属性及权限
-t:查看压缩包的内容
-P:使用绝对路径进行压缩
常用参数:
-cvf:压缩
-xvf:解压缩
例:tar -cvf rootfile.tar.gz /root
tar -xvf rootfile.tar.gz
注意:参数c和参数x不能同时使用
7. 管道符与重定向符
重定向
分类:
输入重定向:默认来源于键盘
输出重定向:默认到屏幕
符号:
命令 < 文件:将文件作为命令的标准输入
命令 > 文件:将标准输出重定向为文件(覆盖清空原有内容)
注意 >> 表示追加,会保留原有内容
管道符
符号:|
格式:命令1|命令2|命令3.......
作用:将前一个命令的输出结果作为下一个命令的标准输入
8. 环境变量
作用:用来定义系统运行环境的相关参数
一般使用大写英文字母
PATH环境变量
作用:存储Linux系统命令解释器bash及程序的路径
查看:ehco $PATH
常见环境变量
HOME:存储家目录的绝对路径
HISTSIZE:记录history命令的历史命令条数
LANG:记录语系
MAIL:邮箱文件
执行命令过程
第一步:判断是否以绝对路径或者相对路径来书写命令,若为绝对路径则立即执行
第二步:判断命令名是否为别名
第三步:使用bash解释器判断命令是外部命令还是内部命令
第四步:通过PATH查询路径执行
查看环境变量:$
格式:$ 变量名
全局变量:
作用:所有账户都生效的变量,默认定义的为局部变量
格式:export 变量名
例:
在root账户下:
export NIC=/etc/sysconfig/network-scripts/ifcfg-ens33
cat $NIC
在普通账户下
su ZHIYUAN
cat $NIC
二、 用户账户及权限
1. root账户
root账户为默认的系统管理员账户,拥有完整权限
使用原则:生产活动中尽量不使用root账户,应使用普通账户临时分配权限来使用
2. UID
账户ID是管理账户的一种手段,相当于账户的“身份证编号”,具有唯一性
编号原则
系统使用无符号整数进行编号,范围:[0,4294967294]
UID分类
系统管理员账户:[0,999],root账户UID为0
普通账户:从1000开始编号,连续编号,即使管理员编号未使用,普通账户也不可占用
查看:/etc/passwd
id命令
作用:显示账户的UID值
格式:id 账户名
注意:UID不能相同
3. 新建账户
格式: useradd -参数 账户名
参数:
-d:指定账户家目录,默认普通账户家目录为:/home/账户名
-e:设置账户到期失效时间,时间格式:YYYY-MM-DD(如:2020-10-08)
-u:指定账户的UID值
-g:指定一个初始用户的工作组(工作组必须已存在)
-G:指定一个或多个扩展组
-N:不创建与账户同名的基本工作组
例:useradd test1
4. 设置账户密码
格式:passwd -参数 账户名
参数:
-l:锁定账户,禁止登录
-u:解除锁定,允许登录
-d:允许用户可以用空格密码登录
-e:强制用户在在下次登录时修改密码
注意:
密码输入时不回显
密码应超过8字符
密码应使用数字、字母、符号组成
密码应定期更换
例1:新建账户、设置密码、注销账户、重新登录
useradd test2
passwd test2 (输入两次密码)
logout
登录test2账户
例2:新建账户test3,UID=5555,工作组为test1,家目录为/home/tmp
useradd test3 -u 5555 -g test1 -d /home/tmp(/homt/tmp需要新建)
passwd test3(输入两次密码)
logout
登录test3账户
pwd
id test3
例3:设置账户为不可登录状态
vim /etc/passwd
定位倒数几行的普通账户,点击i键,将本行尾部的/bin/bash修改为/sbin/nologin
点击ESC键,冒号,wq保存并退出
logout
尝试登录被修改账户
root账户密码的破解
reboot重启系统
在内核选择界面点击键盘上下键,再点击e键
进入内核登录编辑界面,定位Linux16所在行,找到ro修改为rw init=/sysroot/bin/bash
按下Ctrl+X
进入紧急救援模式后输入chroot /sysroot
passwd修改密码(输入两次密码,方块为汉字不能显示)
设置selinux 使其密码修改生效:touch /.autorelabel
按下Ctrl+D
reboot重启
5. 删除账户
格式:userdel -参数 账户名
参数:
-f:强制删除
-r:同时删除账户及家目录
6. 工作组(group)
意义:将相同属性及权限的账户作为一组,组内账户属性等信息相同
Linux系统为了方便管理数据,引入了层级管理机制:公司(系统)->部门(工作组)->员工(账户)-> 文件(权限)
分类
基本工作组:创建账户时一同创建同名的工作组
扩展组:可以将账户加入到其他工作组中
查看:more /etc/group
GID:工作组编号,规则同UID
创建工作组
格式:groupadd -参数 工作组名
参数:-g ,自定义工作组GID,默认从1000开始
删除工作组
格式:groupdel 工作组名
注意:若工作组中已存在账户,必须先移除再删除工作组,否则无法删除工作组
7. 文件权限
文件归属者
文件拥有者(账户)
所属组(工作组)
其它账户
权限的意义
限制用户操作,规范命令使用,将破坏性限制在一定范围
类别
普通文件(-)
可读(r):可以读取到文件中的内容
可写(w):可以编辑修改删除文件内容
可执行(x):可以运行一个脚本
目录(d)
可读(r):可以读取目录中的文件列表
可写(w):可以读取目录内容,修改目录名称,增删目录中的文件
可执行(x):可以进入该目录(cd命令)
查看权限方法:
ls -l(ll同):查看目录内的文件权限信息
ls -ld:查看当前目录的权限信息
显示内容分析:
第一列描述文件类别,- 表示普通文件,d为目录
rw-r--r--:三个一组,分别对应账户、工作组、其他账户对该文件拥有的权限,- 表示无权限
1:链接数
root root:该文件对应的账户及所属工作组
权限数字表示法
原则:
r:4
w:2
w:1
小结:
组合
rwx:4+2+1->7(完整权限)
rw-:4+2->6(可读可写不可执行)
r-x:4+1->5(可读可执行不可写)
r--:4(可读不可写不可执行)
-wx:2+1->3(不可读可写可执行)
-w-:2(可写)
--x:1(可执行)
---:0(无权限)
例:764、642、153、731的字符描述
rwxrw-r--
rw-r---w-
--xr-x-wx
rwx-wx--x
例:rwxrw-r-- 、rw--w--wx 、rw-r--r--数字描述
rwxrw-r--:764
rw--w--wx:623
rw-r--r--:644
修改文件权限命令chmod
格式:chmod -参数 权限 文件或目录名
例:touch tmp.cfg(新建文件默认权限644)
chmod 777 tmp.cfg
chown命令
作用:设置文件所有者及工作组
格式:chown -参数 账户名:工作组 文件或目录名
例: chown ZHIYUAN:ZHIYUAN tmp.cfg
文件隐藏权限
原则:文件一般包含默认权限和隐藏权限,隐藏权限默认状态下无法查看,若权限足够但无法删除,此时应考虑该文件是否有隐藏权限
lsattr命令
作用:查看文件隐藏权限
格式:lsattr 文件或目录名
chattr命令
作用:设置文件隐藏权限
格式:chattr 参数 文件或目录名
参数
i:表示文件无法修改(目录中不能新建和删除)
a:仅允许追加内容,不可以覆盖、删除
s:从硬盘中彻底删除,不可恢复,会使用0填充文件所在存储空间
S:文件变更后同步到磁盘
注意:参数前若有加号(+)或减号(-),则表示增加或撤销功能
例:设置不可删除权限

8. 账户切换命令
格式:su -参数 账户名
常用:su - 账户名
注意:
减号(-)表示完全切换,重新建立系统环境变量,不保留原有环境参数
root账户切换到普通账户,不需要输入密码,反之需要重新验证密码
9. sudo命令
作用: 给普通账户提供额外的权限完成原本root账户才能实现功能,将权限控制在某个命令或文件上,降低安全风险
sudo配置文件分析
原则:必须在root账户下配置后才可使用
格式:visudo
方法:
visudo
输入后定位第99行即:root ALL=(ALL) ALL
该参数意义为:账户名 允许使用的主机=(以谁的身份) 执行命令列表
点击i键输入:普通账户名 ALL=(ALL) ALL
输入冒号,wq保存并退出
提权方法:
格式: sudo -参数 命令名称
例:新建账户访问 /etc/shadow


原文作者:絷缘
作者邮箱:zhiyuanworkemail@163.com
原文地址:https://blog.zyblog.xyz/archives/linuxming-ling-xue-xi-san
版权声明:本文为博主原创文章,转载请注明原文链接作者信息
