目录
四:目录管理
Linux系统的目录组成类拟一个倒置的树型结构,它以一个名为根(“/”)的目录开始向下延伸。
它不同与其它操作系统。例如windows,在windows中,它有多少分区那么就有多少个根,而这些根之间是并列的,而在Linux中无论有多少个分区都有一个根。
在Linux系统中对应的文件类型字符为“d”。
目录是一种特殊的文件
目录上的读写执行权限与普通文件有所不同。
读:用户可以读取目录内的文件
写:单独使用没有作用。它与读和执行权限连用可以在目录内添加与删除任何文件。
执行:用户可以进入目录,调用目录内的资料
1、常见目录:
/bin 存储常用用户指令。
/boot 存放用于系统引导时使用的各种文件
/dev 存放设备文件
/etc 存放系统、服务的配置目录与文件
/home 存放用户家目录
/lib 存放库文件,如内核模块、共享库等
/usr 存放系统应用程序目录i
(1)setuid
设置使文件在执行阶段具有文件所有者的权限(例如:/usr/bin/passwd);如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权
语法:
chmod u±s <文件名>
(2)setgid
该权限只对目录有效,目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组
语法:
chmod g±s <目录名>
u+s实验:
su - uos1
touch /root/file #权限禁止
chmod u+s /usr/bin/touch #给touch设置强制位setuid之后就可以以root身份去执行
su - uos
touch /root/file #权限允许
切回root查看
g+s实验:
mkdir uos1 //创建目录/uos 并设置所属组为uos
chown :uos /uos1/
touch /uos1/1.txt //新创建文件、可以看到其属组还是属于创建者的
chmod g+s /root/uos1/ //为属组添加强制位setgid
touch /uos/2.txt //可以看到新建的文件会自动继承此前目录的属组
o+t实验:
useradd -m -s /bin/bash uos1
mkdir /tx
chmod o=rwx /tx/
touch /tx/uos1
su - uos1
rm /tx/uos1 //是可以删除的
exit 注销
chmod o+t /tx/
touch /tx/uos2
su - uos1
rm /tx/uos2
rm: 无法删除'/tx/uos1': 不允许的操作 //加上t权限之后就不可以删除其他人的文件
2、umask:控制新建的文件或目录的权限
umask值与新建文件、目录权限对照表
umask值 目录权限值 文件权限值
0 7 6
1 6 6
2 5 4
3 4 4
4 3 2
5 2 2
6 1 0
7 0 0
例如:umask 值为 0000,则目录权限值 777,文件权限值 666
umask 值为 0022,则目录权限值 755,文件权限值 644
(1)例子:
umask
0022 //当前umask掩码是0022,新创建文件的权限是644,目录的权限是755
touch file1
mkdir di1
ls -l
umask 0027 //将umask掩码修改为0027之后,新建文件的权限是640,目录的权限是750
touch file2
mkdir di2
ls -l
五:系统交互工具与编辑器
1、实验要求:
除管理员root用户外,新建普通用户uos1
使用tty1登录root用户,tty2登录uos1
(1)write命令 指定一个在线用户发送短消息
//使用root用户对uos1用户发送消息
root@uos1-PC:~# write uos1
write: write: you have write permission turned off.
aaaaaaaaaaa
aaaaaaaaaaa
ctrl+d 结束
//去uos1用户验证查看
(2)wall命令 向所有在线用户广播
//使用root用户对所有用户发送消息
root@uos1-PC:~# wall 123456789
//客户端验证接收
2、vim编辑器:
vi编辑器是所有Unix和Linux系统下标准的编辑器,相当于Windows的记事本一样,它工作在字符模式,由于不需要图形界面,所以效率高;vim是vi编辑器的升级版本,除了兼容vi的所有指令以外,还添加了许多重要的特性,例如支持正则搜索,语法高亮,对C语言的自动缩进等;
(1)vim的三种模式:
命令模式(其它模式->ESC):
控制光标移动,删除字符,段落复制
编辑/插入模式(命令模式->a、i、o、A、I、O)
新增文字及修改文字
末行模式(命令模式-> :)
保存文件,离开vi,以及其他设置
(2)vim基础操作
vim --help 查看帮助
命令模式:
yy 复制当前行正行
nyy 复制从光标所在行开始的n行
dd 剪切当前光标所在行
ndd 剪切从光标所在行开始的n行
p 粘贴光标位置之后
G 跳转至尾行
g 跳转至首行
dw 删至词尾
ndw 删除后n个词
d$ 删至行尾
nd$ 删除后n行(从光标当前处开始算起)
u 撤销上一次修改
U 撤销一行内的所有修改
末行模式
:r /etc/passwd 读文件内容进vim
:r! ls -l / 读命令结果保存到文件中
:set number 行号
:set nonumber 去除行号
:s/old/new/g 在当前行中查找到的所有字符串old替换为new
:2,6s/old/new/g 2-6行替换
:%s/old/new/g 在整个文件范围内替换
:X 加入密码
:q 不保存退出
:q! 强制退出不保存
:wq 保存退出,同x
:wq! 强制保存退出
进入编辑模式
a 光标后插入
i 当前光标前插入
o 在当前光标下插入空行
A 在光标所在行尾插入
I 在光标行首插入内容
O 在当前光标上插入空行
(3)修改vim配置
echo ":set number" >> /etc/vim/vimrc
vim /etc/passwd
3、实验-非正常关闭vim的恢复
vim uos 直接关闭终端
ls -la
vim uos 会有提示信息
删除同目录下面同名的隐藏文件即可
六:系统文件查找与文件管理
1、可执行文件的搜索
which <指令> 显示一个指令的完整路径与别名。
whereis <指令> 搜索一个指令的完整路径以及其帮助文件
locate 用于查找文件或目录,比find命令快,是因为不回去搜索目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db,这个库有本地所有文件信息,Linux会自动创建这个数据库,每天自动更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库
apt-get install locate -y
updatedb
locate passwd
2、find 在指定目录下查找文件
(1)特点:
从指定路径下递归向下搜索文件。
支持按照各种条件方式搜索。
支持对搜索得到的文件再进一步的使用指令操作(例如:删除、统计大小、复制等)
(2)常用选项:
-name 根据文件名寻找文件
-user 根据文件拥有者寻找文件
-group 根据文件所属组寻找文件
-perm 根据文件权限寻找文件
-size 根据文件大小寻找文件[±Sizek]
-type 根据文件类型寻找文件,常见类型有: f(普通文件) 、c(字符设备文件)、b(块设备文件)、l(连接文件)、d(目录)
-o 表达式或
-a 表达式与
(3)示例:
find / -name uos1
find / -user hehe
find / -group xiaolizi
find / -perm 644
find / -size +10k
find /etc -size -10k
find /etc -type f/c/b/l/d
(4)对文件进一步操作
find [路径] [参数] [表达式] -exec 指令 {} \;
{}代表find找到的文件
;命令结束标志,由于各个系统中的;会有不同的意义,所以前面加\转义
(5)示例:
find /tmp/ -type f -exec rm -rf {} \; 用exec选项执行cp命令
3、grep 查找文件里符合条件的字符串。
(1)常用选项:
-c 计算匹配关键字的行数
-i 忽略字符大小写的差别
-n 显示匹配的行及其行号
-s 不显示不存在或不匹配文本的错误信息
-h 查询多个文件时不显示文件名
-l 查询文件时只显示匹配字符所在的文件名
-v 取反
--color=auto
(2)示例:
grep root /etc/passwd
grep ^root /etc/passwd
grep bash$ /etc/passwd
grep -i ROOT /etc/passwd
4、tar 文件归档压缩
(1)功能说明:
用于建立、还原备份文件的工具,它也可以加入或解开备份文件内的文件。有时也称之为“打包”。
(2)常用选项:
c 建立新的备份文件
v 显示指令执行过程
x 解包
t 显示tar文件的内容
z 用gzip压缩或解压文件,以.tar.gz或.tgz为后缀
j 用bzip压缩或解压文件,以.tar.bz2为后缀
f 指定要操作的文件
-C 指定解压目录
(3)示例:
tar czvf `date +%F`.log.tar.gz /var/log/ #以时间为名称打包
tar xzvf 2016-03-09.log.tar.gz -C /tmp/ #-C指定解压目录
(4)gzip 压缩
gunzip或gzip -d解压
只能压缩文件,不能压缩目录;后缀名为.gz,而且不保留原文件
(5)bzip2压缩
bunzip2或bzip2 -d解压
压缩文件,-k参数可以保留原文件;后缀为.bz2