Linux系统学习(二)Linux文件系统
Linux文件系统含义
“文件系统”有以下几种含义:
(1)指一种特定的文件格式。比如,Linux的文件系统是ext3,MSDOS的文件系统是FAT16,而Windows XP的文件系统是NTFS或者FAT32。
(2)指按特定格式进行了“格式化”的一块存储介质。当我们说“安装”或“拆卸”一个文件系统时,指的就是这个意思。
(3)指操作系统中(通常在内核中)用来管理文件系统以及对文件进行操作的机制及其实现。
Linux文件系统使用单一的根目录结构,所有的分区都挂载到单一的“ / ”目录上。
Windows操作系统中,使用驱动器。
Linux文件
文件成分:
- 索引节点:每个Linux分区中对文件使用的标识符。每个文件都有一个inode。
- 数据。
文件命名:
同类文件使用同样的后缀或扩展名;Linux系统区分文件名的大小写;以圆点“ . ”开头的文件名是隐含文件。
1、Linux文件类型
1)普通文件 -
:
文本文件、数据文件、可执行二进制程序文件
2)目录文件 d
.
——本身
..
——父目录
3)设备文件
字符设备 c
:和传输数据有关
块设备 b
:传输数据1KB为单位,和缓冲区有关
4)链接文件 l
Linux具有为一个文件起多个名字的功能,称为链接。
链接文件同一目录下不可以有同名文件,不同目录下可以有。
硬链接和软链接:硬链接链接文件公用一个inode号,说明是同一个文件,软链接原文件和链接文件有不同的inode号,表明是不同的文件。
2、文件导航
ls -a //显示所有文件,包含隐藏
ls -l //长格式显示详细信息
ls -m //逗号分隔的紧凑方式显示
ls -R //递归显示,即显示目录以及其目录下的子目录
ls -i //显示索引节点号
3、文件查看/复制
cat -n ——以行号的形式查看文件信息
cat > 文件名——建立小型文件,Ctrl+D存盘并退出
cat file1 file2 > file3 ——合并文件
tac ——从最后一行开始显示,可以看出 tac 是 cat 的倒着写
nl file1 ——按行号输出内容
more ——分屏显示文件内容,回车显示下一行,空格显示下一屏,按“q”退出
less ——与 more 类似,但是比 more 更好的是,他可以往前翻页
head -n 20 /etc/man.config ——只看前20行,默认看前10行
tail -n 20 /etc/man.config ——只看最后20行,默认看后10行
4、文件复制、删除、移动
cp -rf dir1 dir2——r是递归拷贝,f是强制,不提示
cp -f file1 file2 ——file1复制到file2
cp -f file[1-9] dir1 ——file[1-9]复制到dir1目录下
cp ./* Dir1 ——把当前目录下所有文件复制过去
cp在不同分区间复制有问题,cp命令没有用。
mv 源文件或目录 目标文件或目录——移动
rm -rf file1 ——删除file1
rm -rf /* ——删库跑路的命令,勿碰!
5、文件检索
grep -n ——以行号形式显示出来
grep -n huaxin /etc/passwd
cat /etc/passwd | grep huaxin
cat /etc/logrotate.conf | grep -v “^$”
-v “^$”——过滤空格(不显示)
-v “^#”——过滤#
6、sort排序
sort -r file1 ——r为反向排序
sort -r -o outf1 file1 ——o为输出
sort -u file1 ——u去除重复项
sort -n file1 ——n以数值来排序,不然可能会遇到过10比2小的情况
sort -k 3 file1 —— k为关键字
sort -n -k 3 file1 —— n为数值
ls -l | sort -n -r -k 5
把root目录下所有文件(包含隐藏文件)按文件大小进行排序:
① find . -type f -exec du -h {} + | sort -r -h
du -h显示这些文件大小,然后再使用sort对输出进行排序
② ls -laSh
7、目录操作
mkdir dir1 dir2 ——创建dir1和dir2
mkdir -p dir1/dir2 —— p 创建不存在的中间目录
mkdir -m 744 /usr/dir2 —— m 为新创建的目录指定权限
rm -rf 目录名
8、文件权限
文件权限:哪些用户和组群可以访问文件以及可执行什么样的操作。
属主:所有者
属组:划分的组所拥有的权限
chown [选项] [所有者] [:[组]] 文件列表
[]表示可选,可写可不写
eg:chown wdg f1
chown :wdg f1
chown wdg:wdg f2
访问权限规定三种不同类型的用户组:
- 文件属主(owner):文件的所有者,称为属主;
- 同组用户(group):文件属组的同组用户;
- 其他用户(others):可以访问文件的其他用户。
文件的权限表示方法:
- 三组九位字母表示法
- 三组九位二进制表示法
- 三位八进制表示法
文件权限修改
文件权限表示3种方法:
①字母表示
②三位8进制
③3位二进制
1)字母形式修改权限
chmod [选项] 模式[,模式] 文件名
用户对象:
u:user表示用户,即文件或目录的所有者;
g:group表示同组用户;
o:others表示其他用户;
a:all表示以上所有用户。
操作符号:
+:添加某个权限;
-:取消某个权限;
=:赋予给定权限并取消其他所有权限。
例如,d rwx rw- r–
每3位表示( )的权限:文件属主、同组用户、其他用户
r:可读,数字4
w:可写,数字2
x:可执行,数字1
示例:
chmod a=rw f2 —— 给所有用户赋予读写权限
chmod u+x ,g+w,o-r f1 —— 将f1所有者提升可执行,同组用户可写,其他用户降权可读
在上图中,可以看到/home/dev01/.bahsrc文件由用户dev01所有,并且属于用户组dev01;/bin/bash文件由用户root所有,并且属于用户组root;helloworld.sh由用户dev01所有,并且属于用户组dgroup。
2)数字形式修改权限
chmod 700 f1
rwx:4+2+1=7
特殊权限:
用户置位s(SUID),组置位s(SGID),黏着置位t(sticky)
这几个权限有大小写之分,大写表示没开权限,小写是开。
特权的含义:
suid/sgid程序:进程继承了命令拥有者的权限
t属性:告诉系统在程序完成后在内存中保存一份运行程序的备份
s属性:在该目录下创建的任何文件及目录属于该目录所拥有的组。
T属性:只有root用户才能删除某些文件
数字修改权限时setuid、setgid、sticky的八进制位分别是4000、2000、1000。字母形式分别是u+s、g+s、o+t。
例如,
chmod u+s m1
chmod u+xs m2
chmod 1755 m3
文件默认权限umask掩码:新创建的文件所拥有的权限,Linux通过设置umask掩码来指定。
计算公式:
文件创建时的默认权限 =0666-umask
目录创建时的默认权限 =0777-umask
例如,
系统默认的掩码是0022,文件创建的权限是0677-0022=0655(要减去0022)
umask 2000 ——修改掩码
9、文件的链接
(1)硬链接
ln 源文件 创建的目标链接文件
限制:
不能对目录文件做硬链接;
不能在不同的文件系统之间做硬链接。
特点:
创建的硬链接文件属性和源文件相同,节点号相同,命名可以和源文件不同;
源文件删除了,而链接文件仍具有原来特性;
更改源文件或链接文件属性,则全部更改。
硬链接的文件内容被删,位置被链接过去了,删除内容之后还可以访问这个区域,相当于是一个可变区域。
(2)软链接
又叫符号链接,类似快捷方式。
ln -s 源文件 创建的目标链接文件
将文件的路径名链接到一个文件上,类似于Windows系统中的快捷方式。
特点:
软链接是一个新文件,和源文件有不同的节点号;
可以对目录文件做软链接,也可以在不同文件系统中做;
删除文件或目录时,软链接不会删除,但链接失效;
软链接的大小是其链接文件的路径名中的字节数。
在目录长列表中,符号链接作为一种特殊的文件类型显示出来,其第一个字母是1.
要实现在各用户之间共享文件,可以用以下几种方式:
通过系统服务:
<1>NFS:网bai络文件系统,用于Linux与Linux系统之间的du文件共享
<2>Samba:用于windows与Linux系统之间的共享
<3>FTP:windows与Linux都可以,有图形化界面与命令行两种方式访问共享数据
通过权限设置:
<1>ACL
<2>如果不在乎权限范围过大,可以直接设置要共享的文件的权限为任何人和组都可读写和执行
文件体积越大,压缩比率越大,但是达不到100%。
命令练习1:
- 启动计算机,使用自己创建的用户登录系统。
- 使用pwd命令查看当前工作目录,使用ls命令查看当前目录下有哪些内容。
- 使用cd命令切换到tmp目录,使用pwd命令检查当前工作目录是否改变。
- 使用-l选项查看tmp目录下的详细信息。在这一步中,要求同学们根据输出的第一个字符判断文件的类型,即判断哪些是目录,哪些是普通文件;使用-a选项查看隐藏文件,观察隐藏文件的特点。
- 使用cat命令查看文件file1的内容,并显示行号。
cat -n file1 - 在tmp目录下创建子目录dir2、文件file2及file3。将file1复制到目录dir1中,复制后的文件名为file1.bak。将file2移动到dir2中,将file3重命名为file3.bak。
mkdir dir2
touch file2 file3
cp file1 dir2/file1.bak
mv file2 dir2
mv file3 file3.bak - 用grep命令在profile文件中对关键字then进行查询,并与上面的结果比较。
grep then profile
cat profile | grep -i then - 给文件profile创建一个符号链接lnsprofile和一个硬链接lnhprofile。
ln -s lnsprofile
ln profile lnhprofile - 长格式显示文件profile、lnsprofile和lnhprofile的详细信息。注意比较3个文件链接数的不同。
ls -l - 删除文件profile,用长格式显示文件lnsprofile和lnhprofile的详细信息,比较文件lnhprofile的链接数的变化。
rm -r profile
ls -l - 用less命令查看文件lnsprofile的内容,看看有什么结果。
less lnsprofile - 删除文件lnsprofile,显示当前目录下的文件列表,回到上层目录。
rm -r lnsprofile
ls
cd ./ - 用tar命令把目录test打包
tar -zcvf test.tar.gz test
或 tar -cvf test.tar test - 用命令将打包好的包压缩
gzip test.tar - 把文件test.tar.gz改名为backup.tar.gz。
mv test.tar.gz backup.tar.gz - 显示当前目录下的文件和目录列表,确认重命名成功。
ls -l - 把文件backup.tar.gz移动到test目录下。
mv backup.tar.gz ./test - 显示当前目录下的文件和目录列表,确认移动成功。
ls - 进入test目录,显示目录中的文件列表。
cd ./test
ls - 将文件test.tar.gz解压
tar -zxvf test.tar.gz - 显示当前目录下的文件和目录列表,复制test目录为testbak目录作为备份。
cp -r test testbak - 查找root用户自己的主目录下的所有名为newfile的文件。
find -name newfile - 删除test子目录下的所有文件。
rm -rf test/* - 利用rmdir命令删除空子目录test。
rmdir test - 回到上层目录,利用rm命令删除目录test和其下所有文件。
cd …
rm -rf test
ls - 利用命令显示当前系统时间,并修改系统时间
date
date -s “19:16:34 2020-11-17” - 显示当前登录到系统的用户状态
who - 显示系统的磁盘分区及使用状况
fdisk -l - 显示当前目录下的各级子目录的硬盘占用情况
du
练习2:
- 启动计算机,使用自己创建的用户登录系统。
- 使用su - root命令切换到root用户。
su - 使用cat /etc/passwd命令查看当前系统用户的信息
- 使用grep hx /etc/passwd命令确认系统中是否已有hx用户。查询结果显示不存在这个用户,因此使用useradd hx命令创建了这个新用户,并使用passwd hx为其设置初始密码123456。
useradd hx
passwd hx 123456 - 使用命令将hx用户加入到信息安全系用户组中。
groupadd Xinan
usermod -a -G Xinan hx - 切换到/ito/pub目录,新建示例文件readme.ito。/ito/pub目录中保存的是软件学院的公共文件,本学院的所有老师都能读取文件的内容,但只有系统管理员可以修改文件。另外,其他学院的老师无法读取文件内容。
cd /ito/pub
touch readme.ito
chown root readme.ito
ls -l readme.ito
-rw-r–r--. 1 root root 0 11月 17 19:19 readme.ito
chmod o-r readme.ito - 使用su hx命令切换到hx用户。使用vim打开readme.ito文件,可以正常打开,但尝试修改时提示只有读权限。使用exit命令退出hx用户,返回root用户。
su hx
vim reame.ito
exit - 切换到/ito/sie/pub目录,新建示例文件readme.sie。/ito/sie/pub目录中保存的是信息安全系的公共文件,本系的所有老师都可以读写这些文件,而其他系的老师只能读取文件内容。
cd /ito/sie/pub
touch readme.sie
chown root readme.sie
ls -l readme.sie
-rw-r–r--. 1 root root 0 11月 17 19:19 readme.ito
chmod g+w readme.sie - 分别切换到hx和自己创建的用户用户,并尝试对readme.sie进行读和写操作。
- 分别在/ito/pub和/ito/sie/pub两个目录中建立一个子目录,并对其进行不同权限的设置,使用不同的用户进行验证,加深对普通文件和目录权限管理的理解。