vi,find,bash,磁盘管理,chmod

作业(练习)内容:

1、总结文本编辑工具vim的使用方法;

Vim :全屏编辑器,模式化编辑器

Vim模式:

编辑模式(命令模式)

输入模式

末行模式

模式转换:

编辑--à输入:

i:在当前光标所在字符的前面,转为输入模式;

a:在当前光标所在字符的后面,转为输入模式;

o:在当前光标所在的下方,新建一行,并转为输入模式;

I:在当前光标所在行的行首,转换为输入模式

A:在当前光标所在行的行尾,转换为输入模式

O:在当前光标所在行的上方,新建一行,并转为输入模式:

打开文件

#vi /tmp/grub2.cfg

Vi +#:打开文件,并定位于第#行

Vi + :打开文件,定位至最后一行

Vi +/PSTTERN: 打开文件,定位至第一次被PATTERN匹配到的行的行首

默认处于编辑模式

关闭文件

末行模式关闭文件

:q 不保存退出

:wq 保存退出

:q! 强制不保存退出

:w 保存

:w! 强行保存

:wq --à:x

2编辑模式下退出

zz:保存并退出

vim的末行模式

(1) 地址,定界

:start_pos,end_pos

#:第#行;

#,#

#,+#

.:当前行

$:最后一行

%: 全文,相当于1,$

/pat1/:第一次被此模式所匹配到的行;

#,/pat1/

/pat1/,/pat2/

后可跟编辑命令:

d, y

w, r

(2) 查找

/PATTERN:向尾部进行

?PATTERN:向首部进行

n: 与命令同方向

N:与命令反方向

(3) 查找替换

s: 在末行模式下,在地址定界的范围内完成查找替换操作;

s/要查找的内容/替换为的内容/修饰符

要查找的内容:可使用模式

替换为的内容:不能使用模式,但可以使用后向引用符号,以引用前面模式中的分组括号所匹配到的内容;

\1,\2, ...

&:引用“要找的内容”匹配到的整个内容;

修饰符:

i:忽略大小写

g:全局替换

/:用于分隔符,所以,要查找的内容或替换为的内容中出现此符号,要使用\对其转义,使用格式:\/

分隔符可替换为其它字符:例如@,#等;

1、总结文件查找命令find的使用方法;

find命令:实时查找;查找速度略慢;精确查找;

find [OPTION]... [查找路径] [查找条件] [处理动作]

查找路径:默认为当前路径;

查找条件:指定的查找标准,可以根据文件名、大小、属主属组、类型等进行;默认为找出指定路径下的所有文件;

处理动作:对符合条件的文件做什么操作;默认为输出至屏幕;

查找条件:

根据文件名进行查找:

-name "文件名称": 支持使用glob;

*, ?,[]

-iname "文件名称":不区分字符大小写,支持使用glob;

-regex "PATTERN":以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称;

根据属主、属组查找:

-user USERNAME: 查找属主为指定用户的文件;

-group GROUPNAME:

-uid UserID: 查找文件的属主指定uid的文件;

-gid GroupID:

-nouser: 查找没有属主的文件;

-nogroup:查找没有属组的文件;

根据文件类型进行查找:

-typeTYPE

f:普通文件

d:目录

l:符号链接

b:块设备

c:字符设备

p:命名管道

s:套接字

组合查找条件:

与条件:-a

或条件:-o

非条件:-not, !

!A-o !B = !(A -a B)

!A-a !B = !(A -o B)

根据文件大小来查找:

-size[+|-]#UNIT

单位:k, M, G

#UNIT:(#-1,#]

+#UNIT:(#,+oo)

-#UNIT:[0,#-1]

根据时间戳:

以“天”为单位

-atime[+|-]#

#:[#,#+1)

+#:[#+1,oo]

-#:[0,#)

-mtime

-ctime

以“分钟”为单位

-amin

-mmin

-cmin

根据权限:

-perm[/|-]MODE

MODE:精确权限匹配

/MODE:任何一类对象(u,g,o)的任何一位权限符合条件即可;隐含或条件;

/400

-MODE:为每一类对象指定的每一位权限都必须同时存在方为符合条件;隐含与条件;

处理动作:

-print: 默认处理动作

-ls:类似于对查找到的每个文件做"ls -l"的操作;

-delete:删除查找到的文件;

-fls/path/to/somefile:查找到的文件的详细路径信息保存至指定文件中;

-okCOMMAND {} \;

对每个文件执行指定的命令之前需要用户事先确认;

-execCOMMAND {} \;

无需用户确认;

2、总结bash环境变量的相关内容;

配置文件,生效范围划分,存在两类:

全局配置:

/etc/profile,/etc/profile.d/*.sh

/etc/bashrc

个人配置:

~/.bash_profile

~/.bashrc

按功能划分,存在两类:

profile类:为交互式登录的shell提供配置

/etc/profile,/etc/profile.d/*.sh

~/.bash_profile

功用:

(1) 定义环境变量,例如PATH、PS1

(2) 运行命令或脚本

bashrc类:为非交互式登录shell提供配置

/etc/bashrc

~/.bashrc

功用:

(1) 定义命令别名;

(2) 定义本地变量;

变量:内存空间,变量名

类型:

环境变量:作用范围当前shell进程及其子进程

本地变量:作用范围当前shell进程

局部变量:作用范围仅为当前shell进程中某代码片断(通常为函数上下文)

位置变量:$1, $2

特殊变量:$?

变量定义方式:

bash内置变量:可直接调用,内置了许多环境变量,例如PATH等

自定义变量:

变量赋值:变量名=值

bash弱类型:

变量存储数据时,默认均采用字符形式;任何变量可以不经声明,直接引用;

120:24bits

120:8bits

定义本地变量:

name=value

查看:set

定义环境变量:

exportname=value

declare -xname=value

查看:env, printenv, export

撤消变量:

unset name

引用变量:

${name},$name

bash中的引用符号:

‘‘: 强引用,变量替换不会发生

"":弱引用

``: 命令引用

3、总结Linux文件系统上的特殊权限(SUID、SGID、Sticky)的知识点;

SUID:

(1) 任何一个可执行程序文件能不能启动为进程:取决于发起者对程序文件是否有执行权限;

(2) 启动为进程之后,其属主不是发起者,而程序文件自己的属主;这种机制即为SUID;

权限设定:

chmodu+s FILE...

chmodu-s FILE...

注意:

s: 属主原本拥有x权限;

S: 属主原本无x权限;

SGID:

默认情况下,用户创建文件时,其属级为此用户所属的基本组;

一旦某目录被设定了SGID权限,则对此目录拥有写权限的用户在此目录中创建的文件所属的组为目录的属组,而非用户的基本组;

权限设定:

chmodg+s FILE...

chmodg-s FILE...

Sticky:

对于一个多人可写的目录,此权限用于限制每个仅能删除自己的文件;

权限设定

chmodo+t FILE...

chmodo-t FILE...

权限模型:

u, g, o

r, w, x

进程的安全上下文:

前提:进程有属主(进程以哪个用户的身份运行);文件有属主和属组;

(1) 用户是否能够把某个可执行程序文件启动为进程,取决于用户对程序文件是否拥有执行权限;

(2) 程序启动为进程后,此进程的属主为当前用户,也即进程的发起者;进程所属的组,为发起者的基本组;

(3) 进程拥的访问权限,取决其属主的访问权限:

(a) 进程的属主,同文件属主,则应用文件属主权限;

(b) 进程的属主,属于文件的属组,则应用文件属组权限;

(c) 则应用其它权限;

5、总结Linux磁盘管理、文件系统相关知识点及其相关命令的使用方法;

分区:分隔存储空间为多个小的空间,每个空间可独立使用文件系统;

分区工具:

fdisk,parted, sfdisk

fdisk工具的使用:

最多支持在一块硬盘上的15个分区;

分区管理子命令:

p: 显示

n: 创建

d: 删除

t: 修改分区ID

l: 列出所有支持ID类型

w: 保存退出

q: 放弃修改并退出

m: 获取帮助

创建完成之后,查看内核是否已经识别新的分区:

# cat/proc/partitions

有三个命令可以让内核重读磁盘分区表:

CentOS5: partprobe [DEVICE]

CentOS6,7:

partx

kpartx

partx命令:

partxDEVICE

partx-a DEVICE

partx-a -n M:N DEVICE

M

M:

:N

kpartx命令:

kpartx-af DEVICE

Linux文件系统管理:

mkfs, mkfs -ttype = mkfs.type

ext:mke2fs

创建文件系统:

mke2fs[OPTION]... DEVICE

-t  {ext2|ext3|ext4}

-b{1024|2048|4096}

-L‘LABEL‘

-j:mke2fs -t ext3

-i #:

-N #:

-m #: 预留磁盘空间占据多大百分比的空间为后期管理使用;

-OFEATURE[,...]

-O^FEATURE:关闭此特性

has_journal

文件系统属性查看及调整工具:

e2label

e2lableDEVICE [LABEL]

tune2fs

显示ext系列文件系统的属性,或调整其属性;

-l:显示超级块中的信息;显示整个文件的属性及布局等相关信息;

-L‘LABEL‘:修改卷标;

-m #: 调整预留给管理员的管理空间百分比;

-j: ext2--> ext3

-O:文件系统属性的启动或关闭

-o:文件系统默认挂载选项的启用或关闭

dumpe2fs:

-h: 仅显示超级块信息;

文件系统检测:

fsck:Filesystem check

fsck -ttype

fsck.type

-a: 自动修复错误

-r: 交互式修复错误

-f: 强制检测

e2fsck:ext系列文件系统专用的检测修复工具;

-y: 自动回答为“yes”

-f:force

6、复制/etc/grub.cfg配置文件至/tmp目录,用查找替换命令删除/tmp/grub.cfg文件中的行首的空白字符;

[[email protected]~]# cp -p /etc/grub2.cfg /tmp/
[[email protected]~]# ls /tmp/
grub2.cfg
[[email protected]~]# vi /tmp/grub2.cfg
:%s/^\s*//g或者:%s/^[[:space:]]//g  在左下角命令模式

7、复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首加一个#; 原有空白字符保留;

[[email protected]~]# cp /etc/rc.d/init.d/functions /tmp/
[[email protected]~]# vi /tmp/functions

:%s/^\s/#&/g或者:%s/^[[:space:]]/#&/g   在左下角命令模式

8、替换/tmp/functions文件中的/etc/sysconfig/init为/var/log;

[[email protected]~]# vi /tmp/functions
:%s/\/etc\/sysconfig\/init/\var\/log/g

9、删除/tmp/functions文件中所以#开头,且#后面至少跟了一个空白字符的行的行首#;

[[email protected]~]# vi /tmp/functions
:%s/^#\(\s\+\)/\1/g

10、查找/var目录属主为root,且属组为mail的所有文件;

[[email protected]~]# find /var -user root -group mail -ls
134295027    0 drwxrwxr-x   2 root    mail            6 Jun 10  2014 /var/spool/mail
[[email protected]~]#

11、查找/usr目录下不属于root、bin或hadoop的所有文件;

[[email protected]~]# find /usr ! -user root ! -user bin ! -user hadoop -ls
find: ‘hadoop’is not the name of a known user
[[email protected]~]# useradd hadoop
[[email protected]~]# find /usr ! -user root ! -user bin ! -user hadoop -ls
--------------这里可能需要等待几秒中,不要以为卡在这里---------
200304    0 drwx------   2 polkitd root            6 Jun 10  2014 /usr/share/polkit-1/rules.d

12、查找/etc目录下最近一周内其内容修改过,且属主不为root或hadoop的所有文件;

[[email protected]~]# find /etc -mtime -7 ! -user hadoop -ls
67108993   12 drwxr-xr-x  74 root    root         8192 Sep  2 08:23 /etc
431625    4 -rw-r--r--   1 root    root           14 Sep  2 04:36 /etc/tuned/active_profile
67985872    4 -rw-r--r--   1 root    root          470 Sep  2 08:23 /etc/group
67985873    4 ----------   1 root    root          371 Sep 2 08:23 /etc/gshadow
67985868    4 -rw-r--r--   1 root    root          995 Sep  2 08:23 /etc/passwd
67985871    4 ----------   1 root    root          643 Sep  2 08:23 /etc/shadow
67109049    4 drwxr-xr-x   6 root    root         4096 Sep  2 04:36 /etc/sysconfig
134732599    4 drwxr-xr-x   2 root    root         4096 Sep  2 04:36 /etc/sysconfig/network-scripts
135058400    4 -rw-r--r--   1 root    root          352 Aug 28 05:38/etc/sysconfig/network-scripts/ifcfg-eno16777736
67427376    4 -rw-r--r--   1 root    root          952 Sep  2 08:18 /etc/passwd-
67109038    4 ----------   1 root    root          614 Sep  2 08:18 /etc/shadow-
67311285    4 -rw-r--r--   1 root    root          455 Sep  2 08:18 /etc/group-
67109030    4 ----------   1 root    root          360 Sep  2 08:18 /etc/gshadow-
[[email protected]~]#
[[email protected]~]# find /etc -mtime -7 ! -user hadoop ! -user root -ls
[[email protected]~]#   ----这里如果把root也除外什么都没有了,但是可以修改属主吖
[[email protected]~]# cp -p /etc/group- /etc/group1
[[email protected]~]# find /etc -mtime -7 ! -user hadoop ! -user root -ls
[[email protected]~]# chown bin: /etc/group1
[[email protected]~]# find /etc -mtime -7 ! -user hadoop ! -user root -ls
67985874    4 -rw-r--r--   1 bin     bin           455 Sep  2 08:18 /etc/group1
[[email protected]~]#

13、查找当前系统上没有属主或属组,且最近一周内曾被访问过的所有文件;

[[email protected] ~]# find /-nouser -mtime -7

14、查找/etc目录下大于20k且类型为普通谁的的所有文件;

[[email protected] ~]# find /etc -type f-size +20k -ls
[[email protected] ~]# find /etc-size +20k -type f -ls

15、查找/etc目录下所有用户都没有写权限的文件;

[[email protected] ~]# find /etc ! =perm+222 -ls
[[email protected] ~]# find /etc-not -perm +222

16、查找/etc目录下至少有一类用户没有执行权限的文件;

[[email protected]~]# find /etc ! -perm -111 -ls
[[email protected]~]# find /etc -not -perm -222 -ls

17、查找/etc/init.d目录下,所有用户都有执行权限,且其它用户拥有写权限的文件;

[[email protected]~]# find /etc/init.d -perm -113 -ls
67208865    0 lrwxrwxrwx   1 root    root           11 Aug 21 04:01/etc/init.d -> rc.d/init.d

18、让普通用户能使用/tmp/cat去查看/etc/shadow文件;

[[email protected]~]# which cat
/usr/bin/cat
[[email protected]~]# cp /bin/cat /tmp
[[email protected]~]# ls -l /tmp/
total 76
-rwxr-xr-x. 1root root 54048 Sep  2 09:01 cat
-rw-r--r--. 1root root 13430 Sep  2 07:45 functions
-rw-r--r--. 1root root  3976 Aug 21 04:12 grub2.cfg
[[email protected]~]# chmod u+s /tmp/cat 
[[email protected]~]# ls -l /tmp/
total 76
-rwsr-xr-x. 1root root 54048 Sep  2 09:01 cat
-rw-r--r--. 1root root 13430 Sep  2 07:45 functions
-rw-r--r--. 1root root  3976 Aug 21 04:12 grub2.cfg
[[email protected]~]# chmod u-s /tmp/cat 
[[email protected]~]# ls -l /tmp/
total 76
-rwxr-xr-x. 1root root 54048 Sep  2 09:01 cat
-rw-r--r--. 1root root 13430 Sep  2 07:45 functions
-rw-r--r--. 1root root  3976 Aug 21 04:12 grub2.cfg
[[email protected]~]# chmod 4755 /tmp/cat 
[[email protected]~]# ls -l /tmp/
total 76
-rwsr-xr-x. 1root root 54048 Sep  2 09:01 cat
-rw-r--r--. 1root root 13430 Sep  2 07:45 functions
-rw-r--r--. 1root root  3976 Aug 21 04:12 grub2.cfg
[[email protected]~]#

19、创建目录/test/data,让某组内普通用户对其有写权限,且创建的所有文件的属组为目录所属的组;此外,每个用户仅能删除自己的文件;

[[email protected]~]# mkdir -p /test/data
[[email protected]~]# groupadd only
[[email protected]~]# chown :only /test/data/
[[email protected]~]# ls -l /test/
total 0
drwxr-xr-x. 2root only 6 Sep  2 09:14 data
[[email protected]~]# chmod o+t /test/data/
[[email protected]~]# ls -l /test/
total 0
drwxr-xr-t. 2root only 6 Sep  2 09:14 data
[[email protected]~]# useradd -G only user1
时间: 2024-08-25 19:35:46

vi,find,bash,磁盘管理,chmod的相关文章

bash环境变量、特殊权限及磁盘管理与文件系统

bash环境配置: 配置文件,生效范围划分,存在两类: 全局配置:/etc/profile, /etc/profile.d/*.sh,/etc/bashrc 个人配置:~/.bash_profile,~/.bashrc 按功能划分,存在两类: profile类:为交互式登录的shell提供配置 /etc/profile, /etc/profile.d/*.sh ~/.bash_profile 功用: (1) 定义环境变量,例如PATH.PS1 (2) 运行命令或脚本 bashrc类:为非交互式登

L3 关于vim,find,bash,磁盘管理总结与练习题

1.总结文本编辑工具vim的使用方法: 一.打开文件 vim +#:打开文件,并定位于第#行 vim +:打开文件,并定位至最后一行 vim +/PATTERN:打开文件,定位至第一次被PATTERN匹配的行的行首 二.关闭文件 :q 退出 :wq 保存并退出 等于 :x 等于 编辑模式下 zz :q! 不保存强行退出 :w 保存 :w! 强行保存 三.模式转换 编辑模式->输入模式 i:在当前光标所在字符的前面,转为输入模式 a:在当前光标所在字符的后面,转为输入模式 o:在当前光标所在行的下

vim、find、bash、权限、磁盘管理

Vim编辑器:全屏幕的编辑器/可视化接口:VIM vim: 模式化: 编辑模式(命令模式): 输入模式: 末行模式: 编辑模式 --> 输入模式: i: insert, a:append, o:new line, I: 行首 A:行尾 O:上方新建行 输入模式 --> 编辑模式:"ESC" 编辑模式 --> 末行模式:":" 末行模式 --> 编辑模式:"ESC" 打开vim: # vim # vim  /PATH/TO/

linux磁盘管理之LVM逻辑卷认识与管理详解(实验详细,可跟做)

Linux磁盘管理之LVM逻辑卷认识与管理详解 前言 本文接着上篇文章作如下延伸:链接:Linux磁盘管理之磁盘管理与文件系统 什么是LVM?为什么需要LVM? 如何具体进行LVM逻辑卷管理? 什么是磁盘配额?为什么需要磁盘配额? 在Linux中进行磁盘配额的条件是什么呢? 如何具体进行磁盘配额? 下面对以上问题逐一讲解,深入实例进行操作,带你深入理解linux磁盘管理之LVM逻辑卷管理. 一.LVM概述 1.什么是LVM?为什么需要LVM? ? 许多 Linux 使用者安装操作系统时都会遇到这

第十一章 linux磁盘管理(1)

Linux磁盘管理 涉及到的命令如下: fdisk -l              查看当前磁盘使用情况 fdisk /dev/sdb        划分分区 mkfs.ext4 /dev/sdb1   给分区格式化 mkdir /data           创建挂载目录 mount /dev/sdb1 /data 将新划分的分区挂载到/data目录 vi /etc/fstab         将挂载信息卸载配置文件里,开机启动挂载信息 /dev/sdb1 /data  ext4 defaul

【学神-RHEL7】1-13-MBR磁盘管理

本节所讲内容:   认识SAS-SATA-SSD-SCSI-IDE硬盘 使用fdisk对磁盘进行操作,分区,格式化 开机自动挂载分区 使用parted操作大于等于4T硬盘 扩展服务器swap内存空间   硬盘管理: MBR: Master boot record  : 主引导记录   硬盘的0柱面.0磁头.1扇区称为主引导扇区(也叫主引导记录MBR).它由三个部分组成,主引导程序.硬盘分区表DPT(Disk Partition table)和分区有效标志(55AA). 在总共512字节的主引导扇

《Linux菜鸟入门2》设备分区及磁盘管理

第四单元   设备分区及磁盘管理 ● 分区方式 fdisk  /dev/vdb                        划分命令/dev/vdb Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): m  

linux命令练习:磁盘管理相关练习

  练习一   1.写一个脚本 1)显示一个菜单给用户 d|D) show disk usages. m|M) show memory usages. s|S) show swap usages. *) quit. 2) 当用户给定选项后显示相应的内容: 扩展: 当用户选择完成,显示相应信息后,不退出:而让用户再一次选择,再次 显示相应的内容:除了用户使用quit. #!/bin/bash #program: #练习磁盘管理相关脚本编写 #history  donggen  2016-11-03

深入剖析linux磁盘管理

一.linux中常见的磁盘: 无论什么操作系统,归根还是要落实与磁盘上的,对于磁盘的管理也是linux管理必备的一项技能.在linux中"一切皆文件"的思想贯彻整个linux的学习中,包括像是磁盘等的硬件也是在linux的/dev/目录下类似于文件形式的存放,常见的SATA口USB优盘或是SCSI口的硬盘在linux中是以/dev/sd[a-p]开头的文件,早期的IDE硬盘现在已经很少见了,这种硬盘在linux中是以/dev/hd[a-d],CDROM是以/dev/cdrom开头的文件