1,文件管理
用户(标识号:UID):一定资源的使用者,可以创建和管理文件以及访问其他用户文件。可以从属于多个群组。
用户组(标识号:GID):由一定数量的对某些文件具有相同操作权限的用户组成的小组。可以拥有多个用户。
root用户:超级管理员,可以为所欲为。
为何要区分用户和用户组? 答:一种功能相当健全而且好用的安全防护措施
/ect/passwd:所有系统帐号、一般用户以及root的相关信息。
/ect/shadow:密码记录。
/ect/group:用户组名。
权限控制机制:
- Linux的文件或目录被一个用户拥有时,这个用户称为文件的拥有者(或属主)。
- 同时文件还被指定的用户组所拥有,这个用户组称为文件所属组;一个用户可以是不同组的成员,可以由管理员控制。
- 文件的权限由权限标志来决定,权限标志决定了文件的拥有者、文件的所属组、其他用户对文件访问的权限。
1.1,文件创建
touch | -a:更改由 File 变量指定的文件的访问时间 | 文件名 |
-c:修改时间,如果文件不存在,则不要进行创建 | ||
-m:更改 File 的修改时间 | ||
-t:Time使用指定时间而不是当前时间。Time 变量以十进制形式 [YYMMDDhhmm]指定 → YY 指定年份的后两位数字 → MM 指定一年的哪一月(从 01 到 12) → DD 指定一月的哪一天(从 01 到 31) → hh 指定一天中的哪一小时(从 00 到 23) → mm指定一小时的哪一分钟(从 00 到 59) |
1.2,文件属性
-rw-r--r--. | 1 | root | root | 2 | Nov 28 20:11 | yan.txt |
文件类型权限 | 连接数 | 用户拥有者 | 文件所属的用户组 | 文件大小,默认单位是Bytes | 文件最后被修改的时间 | 文件名 |
第1个字符: d:目录 -:文件 l:连接文件 b:块设备文件 c:设备文件中串行端口设备(鼠标,键盘) 2~4个字符:拥有者的权限 r:可读 w:可写 x:可执行 5~7个字符:用户组的权限 8~10个字符:其他用户权限 | 表示有多少个文件名会连接到相同的inode号码 |
r(读权限) | 表示可以列出存储在该目录下的文件,即读目录内容。 |
w(写权限) | 建立新的文件与目录 。 删除已经存在的文件与目录(不管该文件是属于谁的)。 重命名已经存在的文件或目录。 移动该目录内的文件、目录位置。 |
x(执行权限) | 表示允许你在目录中查找,并能用cd命令将工作目录切换到该目录,执行。 |
1.3,默认权限和隐藏权限
默认权限(umask):建立的新文件的默认权限。
命令 umask umask -S 结果 0002 u=rwx,g=rx,o=rx 解释 第一位:特殊权限
第二位:拥有者剔除的权限
第三位:用户组剔除的权限
第四位:其他用户剔除的权限
用户权限
用户组权限
其他用户权限
类型 最大权限 计算(当前umask=022) 文件 用户建立的文件默认是没有(x)权限的,只有rw权限,也就是最大为666(-rw-rw-rw-) (-rw-rw-rw-) - (-----w--w-) = (-rw-r--r--) 目录 由于x与是否进入此目录有关,因此默认为所有权限均开放(drwxrwxrwx) (drwrrwxrwx) - (-----w--w-) = (drwxr--xr-x) umask 022 //直接修改
隐藏权限(chattr、lsattr):文件的隐藏属性
chattr(配置文件隐藏属性) +
-
=A:若你在存取此文件时,它的存取时间atime将不会被修改。 S:一般文件是异步写入磁盘,添加该属性,则同步写入磁盘。 a:这个文件只能增加数据,而不能删除也不能修改数据,只有root才能设置。 c:存储时自动压缩,读取时将自动解压。 i:让一个文件不能被删除、修改、设置连接、无法写入,只有root才能设置。 s:被删除时将会被从硬盘完全删除,无法恢复。 u:与s相反,如果被删除了,磁盘上还存在,可被恢复。
lsattr(显示文件隐藏属性) -a:将隐藏文件的属性也显示出来 文件或目录 -d:如果接的是目录,仅列出目录本身的属性而非目录内的文件名 -R:连同子目录也一并列出来
1.4,特殊权限
权限 | 简写 | 数字表示 | 解释 |
SUID | s | 4 | 仅对二进制程序有效 执行者对该程序有x的可执行权限 本权限仅在执行该程序过程中有效 执行者将具有该程序拥有者的权限 |
SGID | g | 2 | 仅对二进制程序有用 程序执行者对于该程序来说,具备x的权限 执行者在执行过程中会获得该程序用户组的支持 |
对目录来说: 用户对于此目录具有r与x的权限时,该用户能够进入此目录 用户在此目录下的有效用户组将会变成该目录的用户组 若用户拥有w的权限,则用户所建立的新文件,该新文件的用户组与此目录的用户组相同 | |||
SBIT | t | 1 | 仅对目录有效 当用户对于此目录有w,x权限,即具有写入的权限 当用户在该目录下建立文件或目录时,仅有自己与root才有权利删除该文件 |
//授权,第一位4便是特殊权限的数字
chmod 4777 test
4--SUID
2--SGID
1--STID
//或
chmod u+s,g+s,o+t test
1.5,查看文件属性
ls | 正常文件和文件夹 | |
ls -l | 正常文件和文件夹(详细信息) |
|
ls -a | 正常文件和文件夹,隐藏文件。 | |
ls -al | ls -a+ls -l:正常文件和文件夹,隐藏文件(详细信息)。 | |
ls -d | 列出目录本身属性 |
1.6,修改文件权限
改变文件权限-字符法
chmod u(user:文件拥有者) +(加入)
-(除去)
=(设定)
r(读)
w(写)
x(执行)
文件名 chmod a+r text.txt g(group:文件所属组) chmod g+rwx text.txt o(others:其他用户) chmod a-w text.txt a(u+g+o:所有用户) chmod a=x text.txt 改变文件权限-数字法:二进制,有点二进制基础都知道不会产生重复。
r:读 4 w:写 2 x:执行 1
rwx 7 -w- 2 r-x 5 r-- 4 -wx 3 -w- 2 --x 1 --- 0 直接赋值权限 chmod 777 text.txt
修改文件拥有者
chown -R 用户
用户:组
文件名或目录 只有文件主和超级用户才可以使用该命令 递归修改,连同子目录下的所有文件都修改。 同时改变文件主和文件所属的组时,用户名和用户组名由冒号分开 chown shao12138 text.txt
修改文件所属用户组
chgrp -R 组名 文件名或目录 只有文件主和超级用户才可以使用该命令 递归修改,连同子目录下的所有文件都修改。 只具有改变所属组的功能
1.7,文件内容查看
直接查看文件内容 | cat:concatenate | -A:相当于-vET的整合选项 | 文件名 |
-b:列出行号,仅针对非空白行做行号显示,空白行不做行号 | |||
-E:结尾的换行符$显示出来 | |||
-n:打印行号,连同空白行也有行号 | |||
-T:将tab键以^I显示出来 | |||
-v:列出一些看不出来的特殊字符 | |||
tac:反向列示 | 同上 | ||
nl:添加行号打印 | -b a:表示是否空行,也同样列出行号,同cat -n; -b t:如果有空行,空的不显示行号(默认值) | ||
-n ln:行号在屏幕的最左方 | |||
-n rn:行号在自己栏位的最右方显示,且不加0; | |||
-n rz:行号在自己栏位的最右方显示,且加0; | |||
-w:行号栏位的占用的字符数 |
可翻页查看 | more:一页一页翻动 | 文件名 | 空格键:代表向下翻一行 |
Enter:代表向下翻一行 | |||
/字符串:代表在这个显示内容中,向下查找字符串这个关键词 | |||
:f:立刻显示出文件名以及目前显示的行数 | |||
q:代表立刻离开more,不再显示该文件内容 | |||
b或ctrl-b:代表往回翻页,不过只对文件有效,对管道无效。 | |||
less:一页一页翻动 | 文件名 | 空格键:代表向下翻一行 | |
pagedown:向下翻动一页 pageup:向上翻动一页 | |||
x:代表立刻离开more,不再显示该文件内容 | |||
/字符串:向下查找字符串 ?字符串:向上查找字符串 | |||
g:前进到这个数据的第一行 G:前进到这个数据的最后一行 |
非纯文本文件 | od | -t a:利用默认的字符来输出 | 文件名 |
-t c:使用ASCII字符流来输出 | |||
-t d size:利用十进制来输出,每个整数占size Bytes | |||
-t f size:利用浮点数值来输出,每个整数占size Bytes | |||
-t o size:利用八进制来输出,每个整数占size Bytes | |||
-t x size:利用十六进制来输出,每个整数占size Bytes |
数据截取 | head:取出前面几行 | -n+数字:表示截取的行数 | 文件名 |
tail:取出后面几行 | -n+数字:表示截取的行数 | ||
-f:持续刷新后面所接文件中的内容 |
2,目录管理
2.1,基本概念
路径:对文件位置信息的描述机制,是指从树型目录中的某个目录层次到其内某个文件的一条通路;分为相对路径和绝对路径;
- 绝对路径:从根目录/开始到文件名结束的路径。
- 相对路径:不是从根目录开始的路径。
工作目录:登入系统后,用户始终处于某个目录中,此目录即为工作目录,或称作当前目录。
根目录:Linux树型目录结构的最顶层目录。
用户“家”目录:也称用户主目录,通常是位于/home目录中跟用户名称相同的一个目录,用户登录系统后默认处于此目录中。
2.2,切换目录
pwd:显示当前工作目录的路径名称。-p:显示出实际路径,而非使用连接的路径。
cd ~shao12138 | 进入shao12138用户的home目录 |
cd ~ | 回到自己的home目录 |
回到上层目录 | |
cd - | 回到刚来的目录 |
cd shao/shao | 到指定目录下-绝对路径 |
到指定目录下-相对路径 |
2.3,创建和删除目录
mkdir | -m | -p | 目录名 |
每个新目录包含标准项 .(点)和 ..(点-点) | 设置新创建的目录的权限,不管默认权限(umask) | 如果不存在父级别目录,递归创建。 | 目录名 |
mkdir test | mkdir -m 711 test | mkdir -p test/test1/test2 |
rmdir | -p | 目录名 |
在可以除去该目录前,它必须为空,并且必须有它的父目录的写权限 | 递归删除父目录,但还是必须为空。 | 目录名 |
rmdir test | mkdir -p test/test1/test2 |
2.4,复制,删除与移动
cp:复制文件或目录 | -a:复制目录时使用,保留链接、文件属性、并递归地复制目录 | 源文件 | 目标文件 |
-d:复制时保留链接 | |||
-f:如果指定的目标文件存在,先强行覆盖 | |||
-i:覆盖目标文件前需要用户先确认 | |||
-l:进行硬链接的连接文件建立,而非文件本身 | |||
-s:复制成为符号链接文件,即快捷方式 | |||
-p:复制文件,连同文件属性(权限,用户,时间),不使用默认属性 | |||
-r:复制目录时可递归复制目录中的内容 |
rm:删除文件或目录 | -f:force,忽略不存在问题,不警告 | 文件或目录 | |
-i:交互模式,删除前询问 | |||
-r:递归模式,目录删除,非常危险 |
mv:移动并重命名 | -f:强制直接转移不询问 | 源文件 | 目录 |
-i:若文件已经存在询问是否覆盖 | |||
-u:若文件已经存在,但源文件比较新,则更新。 |
2.5,文件查找
- which:通过PATH进行搜索
- whereis,locate:通过存储系统文件信息的数据库
- find:直接搜索硬盘
which:在PATH变量指定的路径中搜索指定的系统命令的位置(通过PATH进行搜索),重点是找出可执行文件而已。用echo $PATH可显示当前PATH变量的值。若在后面加上-a选项,则可以列出所有的可以找到的同名执行文件。
whereis:在特定数据库(/usr/share/man下的man page文件,/bin/sbin下的可执行文件,跟几个比较特定的目录)查找符合条件的文件。
whereis -b:只查找二进制文件 文件名 -m:只查找说明文件 -s:只找源文件 -u:没有帮助文件的文件 locate:用于在特定数据库(已建立的数据库/var/lib/mlocate/里面的数据)中查找符合条件的文件,查找速度特别快,数据库更新时间根据系统决定,也可以采用updatedb,更新数据库文件。
locate -i:忽略大小写的差异 关键字 -c:不输出文件名,仅仅计算文件数量 -l:输出几行,例如-l 5,输出5行 -S:输出locate所使用数据库文件的相关信息 -r:接正则表达式 find:速度慢且影响磁盘性能,在目录结构中搜索文件,并执行指定的操作。
find -name:查找文件名为passwd这个文件 关键字 -type:查找特定类型的文件 文件类型简写 -perm:查找特定权限的文件 /6000:权限数字
3,文件系统和文件类型
3.1,Linux文件系统
Windows系统格式化硬盘时会指定格式FAT或者NTFS,而Linux的文件系统格式为Ext3或者Ext4。早期的Linux使用Ext2格式,目前的Linux都是Ext3格式,而CentOS 6已经使用了Ext4格式。Ext2文件系统虽然高校稳定,但随着Linux系统在关键业务中的应用,Linux文件系统的弱点也逐渐显露出来。因为Ext2文件系统不是日志文件系统,这在关键行业是一个致命的弱点。
Ext3文件系统是直接从Ext2文件系统发展而来的,它带有日志功能,可以跟踪记录文件系统的变化,并将变化内容写入日志。写操作首先是对日志记录文件进行操作,若整个写操作由于某种原因(掉电)而中断,当系统重启时,会根据日志记录来恢复中断前的写操作,而且这个过程费时极短。目前Ext3文件系统已经非常稳定可靠,它完全兼容Ext2文件系统,用户可以平滑地过渡到一个日志功能健全的文件系统。这实际上也是ext3日志文件系统设计的初衷。现在使用的Ext4相较Ext3的最明显特征是Ext4支持最大文件系统容量和单个最大文件大小。
Linux文件系统在Windows中是不能识别的,但在Linux系统中可以挂载Windows文件系统。Linux目前支持MS-DOS、VFAT、FAT、BSD等格式,如果使用的是RedHat或者CentOS,那么无法挂载到NTFS格式的分区的系统。
除了Ext3/Ext4文件系统外,有些Linux发行版(SuSE)默认的文件系统为ReiserFS,其优势在于:它是基于B*Tree快速平衡树,这种高效算法的文件系统。例如,它处理小于1KB的文件时的速度是Ext文件系统的10倍。其次,ReiserFS的空间浪费较小,它不会为一些小文件分配inode,而是打包存放在同一个磁盘块中。Ext是把它们单独存放在不同的块上。例如,块大小为4KB,那么两个100字节的文件会占用两个快,ReiserFS则只占用一个块。当然ReiserFS也有缺点,就是每升级一个版本,都要将磁盘重新格式化一次。
3.2,Linux文件类型
常见文件类型:
- 普通文件:最常用的一类文件,其特点是不包含文件系统的结构信息。可分为图形文件,数据文件,文档文件,声音文件。这些文件又可细分为文本文件和二进制文件。
- 目录文件:目录文件是用于存放文件名及其相关信息的文件。它是内核组织文件系统的基本节点。目录文件可以包含下一级目录文件和普通文件。
- 链接文件:链接文件是一种特殊文件,实际上是指向一个真实存在的文件链接,类似于windows下的快捷方式。可细分为:硬链接和软连接。
- 设备文件:设备文件是Linux中最特殊的文件,正是由于它的存在,使得Linux系统可以十分方便的访问外部设备。通常Linux系统文件放在/dev下且靠设备文件使用设备的主设备号和次设备号来指定某外部设备。
- 管道文件:管道文件是一种特殊文件,主要用于不同进程间的信息传递。当两个进程需要进行数据或信息传递时,可以使用管道文件。
文件后缀名:Linux系统中,文件的后缀名没有具体意义,加或者不加都无所谓。但是为了便于区分,我们习惯在定义文件名时加一个后缀名。
3.3,软链接和硬链接
Linux的链接文件:分为硬链接和软链接。
- Hard Links:当系统读取一个文件时,先读取inode table,然后再根据inode中的信息到块区域将数据取出来。而硬链接是直接再建立一个inode连接到文件放置的区域,进行硬链接时该文件内容没有任何变化,只是增加了一个指向这个文件的inode。1,硬链接不能跨文件系统。2,不能链接到目录。3,硬链接建立后,即便某一个inode删除了,只要有任何一个inode存在,该文件也不会消失。
- SymBolic Links(相当于windows的快捷方式): 软链接建立后,相当于建立一个独立的文件,当读取文件时,它会把读取的行为转发到该文件所链接的文件上。例如,现在有一个文件a,我们做了一个软链接b,b指向了a。当读取b时,b就会把读取的动作转发到a上,这样就读取了文件a。当我们删除文件a时,链接文件b不会被删除,但如果再次读取b时,会提示无法打开文件。然而,我们删除b时,a是不会有任何影响的。
由此看来,硬链接比较安全,因为即使某一个inode被删除了,只要有任何一个inode存在,该文件也不会消失。但由于硬链接的限制太多(包括无法做目录的链接),在用途上比较受限。所以软链接使用比较广。
建立链接:
ln -s 来源文件 目标文件 -s可选,选择则是软链接,不选择则是硬链接
删除链接:
rm [-f] 链接名