今日任务:
基本文件属性、文件与目录管理、用户和用户组管理
[root@localhost ~]#
分别代表:
1、用户名:root
2、主机名:localhost
3、当前路径:~当前用户的home目录
4、权限源标志位:
#代表root,$代表普通用户
基本文件属性
在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。
对于一个文件来说,用户可以分为三种类型:文件所有者、文件所属组的同组用户、其他用户
因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
输入下面的命令,可显示文件属性及不同用户的权限
[root@www /]# ls -l
total 64
dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin
dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot
……
解释:
第0位代表属性
- 当为 d 则是目录
- 当为 - 则是文件;
- 若是 l 则表示为链接文档(link file);
- 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
rwx 的三个参数为一组。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 这三个权限的位置不会改变,如果没有权限,就会出现减号 - 。
对于 root 用户来说,一般情况下,文件的权限对其不起作用。
更改文件属性
1、chgrp:更改文件属组
chgrp [-R] 属组名 文件名
参数选项
- -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上 -R 的参数,那么该目录下的所有文件的属组都会更改。
2、chown:更改文件所有者(owner),也可以同时更改文件所属组。
chown [–R] 所有者 文件名
chown [-R] 所有者:属组名 文件名
3、chmod:更改文件属性
- 数字法
文件的权限字符为: -rwxrwxrwx , 这九个权限是三个三个一组的,可以利用二进制来代表各个权限。
举例:-rwxr-xr--
owner:rwx,4+2+1=7
group:r-x,4+1=5
others:r--,4
则这个权限可以用数字754表示
chmod [-R] xyz 文件或目录
选项与参数:
- xyz : 就是数字类型的权限属性。
- -R : 进行递归(recursive)的持续变更,以及连同次目录下的所有文件都会变更
举例:将 .bashrc 这个文件所有的权限都设定启用
[root@www ~]# ls -al .bashrc
-rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc
[root@www ~]# chmod 777 .bashrc
[root@www ~]# ls -al .bashrc
-rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
复习:如果一个目录或文件名以一个点 . 开始,表示这个目录或文件是一个隐藏目录或文件
- 符号法
user:用户
group:组
others:其他
使用 u, g, o 来代表三种身份的权限,a表示all,即全部
chmod | u g o a | +(加入) -(除去) =(设定) | r w x | 文件或目录 |
举例:将文件权限设置为 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名
# touch test1 // 创建 test1 文件
# ls -al test1 // 查看 test1 默认权限
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1
# chmod u=rwx,g=rx,o=r test1 // 修改 test1 权限
# ls -al test1
-rwxr-xr-- 1 root root 0 Nov 15 10:32 test1
如果要将权限去掉而不改变其他已存在的权限,例如要拿掉全部人的可执行权限,则:
# chmod a-x test1
# ls -al test1
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1
什么是挂载?
Linux系统中“全部皆文件”,一切文件都放置在以根目录为树根的树形目录结构中。在 Linux 看来,任何硬件设备也都是文件,它们各有自己的一套文件系统(文件目录结构)。因而发生的问题是,当在 Linux 系统中运用这些硬件设备时,只要将Linux本身的文件目录与硬件设备的文件目录合二为一,硬件设备才能为我们所用。合二为一的进程称为“挂载”。挂载,指的就是将设备文件中的尖端目录连接到 Linux 根目录下的某一目录(最好是空目录),拜访此目录就等同于拜访设备文件。并不是根目录下任何一个目录都能够作为挂载点,因为挂载操作会使得原有目录中文件被躲藏,因而根目录以及系统原有目录都不要作为挂载点,会形成系统异常甚至崩溃,挂载点最好是新建的空目录。
挂载后变成:
此时就可以通过 Linux 文件系统拜访U盘。
回答来源:(37 封私信 / 1 条消息) 能否通俗易懂,深入浅出地解释一下linux中的挂载的概念? - 知乎
作者:云叔
inode索引节点
文件储存在硬盘上,硬盘的最小存储单位叫做”扇区”(Sector)。每个扇区储存512字节(相当于0.5KB)。
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个”块”(block)。这种由多个扇区组成的”块”,是文件存取的最小单位。”块”的大小,最常见的是4KB,即连续八个 sector组成一个 block。
文件数据都储存在”块”中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为”索引节点”。
每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。
inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。
每个inode都有一个号码,操作系统用inode号码来识别不同的文件。
这里值得重复一遍,Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。
表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。
Unix/Linux系统中,目录(directory)也是一种文件。打开目录,实际上就是打开目录文件。目录文件的结构非常简单,就是一系列目录项(dirent)的列表。每个目录项,由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码。
ls命令只列出目录文件中的所有文件名,ls -i命令列出整个目录文件,即文件名和inode号码
来源:剖析Linux内核文件系统之(inode) - 知乎
链接
链接分为硬链接(hard link) 和软连接(又称符号链接,即 soft link 或 symbolic link)
直观感受区别:
硬链接
一般情况下,文件名和inode号码是”一一对应”关系,每个inode号码对应一个文件名。但是,Unix/Linux系统允许,多个文件名指向同一个inode号码。
这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问,直到删除所有硬链接和源文件,才能删除改文件。这种情况就被称为”硬链接”(hard link)。
Hard link(硬链接)还具有以下特性:
1。只能对已存在的文件进行创建(必须事先要有一个原始文件)
2。 硬链接必须在同一个文件系统里创建,无法跨分区
3。不能对目录进行创建
当我们把所有硬链接和源文件删除后,原inode指针所指向的数据块设置为空闲状态,告诉系统可以被再次使用,但是里面的内容却不会被删除 ,直到被新的数据覆盖。linux中被删除的文件数据是可以被找回的,只要相应的数据块没有被再次覆盖使用。
目录文件的”链接数”:创建目录时,默认会生成两个目录项:”.”和”..”。前者的inode号码就是当前目录的inode号码,等同于当前目录的”硬链接”;后者的inode号码就是当前目录的父目录的inode号码,等同于父目录的”硬链接”。所以,任何一个目录的”硬链接”总数,总是等于2加上它的子目录总数(含隐藏目录)
软链接
软链接本身是一个单独的文件,拥有自己的inode和数据块,因此拥有自己的文件属性和权限。它相当于 Windows 中的快捷方式,其数据块中的内容是另一个文件的路径,因此当系统读取软连接的文件时,会自动将访问导向另一个文件。删除软链接并不影响被指向的文件,但若被指向的原文件被删除,软链接仍然存在,但指向的是一个无效链接。
软链接还有如下特性:
1。 可对不存在的目录和文件创建软链接
2。 可以对存在的文件或目录建软链接
3。 可以跨文件系统创建软链接
4。 软链接创建时原文件的路径指向使用绝对路径较好,相对路径的话原文件移除后可能会成为无效链接。
来源:一图详解硬链接和软连接、剖析Linux内核文件系统之(inode) - 知乎
文件与目录管理
处理目录的常用命令:
- ls(英文全拼:list files): 列出目录及文件名
- cd(英文全拼:change directory):切换目录
- pwd(英文全拼:print work directory):显示目前的目录
- mkdir(英文全拼:make directory):创建一个新的目录
- rmdir(英文全拼:remove directory):删除一个空的目录
- cp(英文全拼:copy file): 复制文件或目录
- rm(英文全拼:remove): 删除文件或目录
- mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称
可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp。
ls
[root@www ~]# ls [-aAdfFhilnrRSt] 目录名称
[root@www ~]# ls [--color={never,auto,always}] 目录名称
[root@www ~]# ls [--full-time] 目录名称
选项与参数:
- -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
- -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
- -l :长数据串列出,包含文件的属性与权限等等数据;(常用)
举例:将目录下的所有文件列出来(含属性与隐藏档)
[root@www ~]# ls -al ~
cd
#使用绝对路径切换到 runoob 目录
[root@www ~]# cd /root/runoob/#使用相对路径切换到 runoob 目录
[root@www ~]# cd ./runoob/# 表示回到自己的家目录,亦即是 /root 这个目录
[root@www runoob]# cd ~# 表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思;
[root@www ~]# cd ..
pwd
显示目前所在目录
[root@www ~]# pwd [-P]
选项与参数:
- -P :显示出确实的路径,而非使用链接 (link) 路径。
mkdir
创建新的目录
mkdir [-mp] 目录名称
选项与参数:
- -m :配置文件的权限,直接配置,不需要看默认权限 (umask)
- -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
举例:创建权限为rwx---x--x的目录
[root@www tmp]# mkdir -m 711 test2
[root@www tmp]# ls -l
drwxr-xr-x 3 root root 4096 Jul 18 12:50 test
drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1
drwx--x--x 2 root root 4096 Jul 18 12:54 test2
创建递归目录
[root@www ~]# cd /tmp
[root@www tmp]# mkdir test <==创建一名为 test 的新目录
[root@www tmp]# mkdir test1/test2/test3/test4
mkdir: cannot create directory `test1/test2/test3/test4':
No such file or directory <== 没办法直接创建此目录啊!
[root@www tmp]# mkdir -p test1/test2/test3/test4 <== 加了这个 -p 的选项,可以自行帮你创建多层目录!
不行了……实在是太多了,明天再看吧