Linux命令学习(三)
一、文件系统命令
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 (检索目录)
- -type b/d/c/p/l/f:按照文件类型检索(块设备、目录、字符设备、管道设备、链接文件、文本文件)
-
权限
- -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的文件)
- -size:按照容量来检索(k、M、G)
-
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
-
小结:
权限项 读 写 执行 读 写 执行 读 写 执行 字符表示法 r w x r w x r w x 数字表示法 4 2 1 4 2 1 4 2 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://zhiyuandnc.github.io/xc3aA90Gk/
版权声明:本文为博主原创文章,转载请注明原文链接作者信息