`
webcode
  • 浏览: 6166139 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Linux文件系统

 
阅读更多

1.Ubuntu文件结构

/bin

binBinary的缩写。存放系统中最常用的可执行文件(二进制)。

/boot

这里存放的是linux内核和系统启动文件,包括Grublilo启动器程序。

/dev

devDevice(设备)的缩写。该目录存放的是Linux的外部设备,如硬盘、分区、键盘、鼠标、usb等。

/etc

这个目录用来存放所有的系统管理所需要的配置文件和子目录,如passwdhostname等。

/lib

存放共享的库文件,包含许多被/bin/sbin中程序使用的库文件。

/lost+found

这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些零散文件。

/media

ubuntu系统自动挂载的光驱、usb设备,存放临时读入的文件。

/mnt

作为被挂载的文件系统的挂载点。

/opt

作为可选文件和程序的存放目录,主要被第三方开发者用来简易安装和卸载他们的软件。

/proc

这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这里存放所有标志为文件的进程,比较cpuinfo存放cpu当前工作状态的数据。

/sbin

s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序,如系统管理、目录查询等关键命令文件。

/ srv

存放系统所提供的服务数据。

/sys

组自豪系统设备和文件层次结构,并向用户程序提供详细的内核数据信息。

/tmp

这个目录是用来存放一些临时文件的,所有用户对此目录都有读写权限。

/usr

存放与系统用户有关的文件和目录。

/usr/X11R6

存放X-Windows的目录;

/usr/bin

用户和管理员的标准命令;

/usr/sbin

存放root超级用户使用的管理程序;

/usr/doc

Linux技术文档;

/usr/include

用来存放Linux下开发和编译应用程序所需要的头文件,for c 或者c++

/usr/lib

应用程序和程序包的连接库;

/usr/local

系统管理员安装的应用程序目录;

/usr/man

帮助文档所在的目录;

/usr/src

Linux开放的源代码;

/var

长度可变的文件,尤其是些记录数据,如日志文件和打印机文件。

/var/cache

应用程序缓存目录;

/var/crash

系统错误信息;

/var/log

日志文件;

/var/tmp

临时文件目录;

2.文件名扩展

Linux不使用文件名扩展来识别文件的类型。相反,Linux根据文件的头内容来识别其类型。为了提高人类可读性您仍可以使用文件名扩展,但这对 Linux 系统来说没有任何作用。不过,有一些应用程序,比如 Web服务器,可能使用命名约定来识别文件类型,但这只是特定的应用程序的要求而不是 Linux系统本身的要求。

Linux通过文件访问权限来判断文件是否为可执行文件。任何一个文件都可以赋予可执行权限,这样程序和脚本的创建者或管理员可以将它们识别为可执行文件。这样做有利于安全。保存到系统上的可执行的文件不能自动执行,这样就可以防止许多脚本病毒。

2.查看命令

fdisk………………查看硬盘分区表

df………………查看分区使用情况

du………………查看文件占用空间情况

3.挂载

挂载的概念

当要使用某个设备时,例如要读取硬盘中的一个格式化好的分区、光盘或软件等设备时,必须先把这些设备对应到某个目录上,而这个目录就称为“挂载点(mount point)”,这样才可以读取这些设备,而这些对应的动作就是“挂载”。将物理分区细节屏蔽掉。用户只有统一的逻辑概念。所有的东西都是文件。

Mount命令可以实现挂载:

mount [-fnrsvw] [-t vfstype] [-o options] device dir

Q:所有的磁盘分区都必须被挂载上才能使用,那么我们机器上的硬盘分区是如何被挂载的?

A:这主要是它利用了/etc/fstab文件。每次内核加载它知道从这里开始mount文件系统。每次系统启动会根据该文件定义自动挂载。若没有被自动挂载,分区将不能使用。

Q:移动硬盘如何挂载?如何挂载一个新的分区?

A移动硬盘有驱动模块会自动挂载,如果有个新硬盘,要先进行分区,并通过mount命令挂载到某个文件夹。如果要自动挂载则可以修改/etc/fstab文件.

NFS简介:NFS相信在很多地方都有广泛使用,是一个非常好的文件共享方式。我们公司所使用的上传服务就是把文件上传到某台网络服务器上,中间就是通过NFS实现。使用NFS客户端可以透明的地访问服务器端的文件。NFS也是通过mount来实现,底层是通过NFS通信协议实现。

Ubuntu下的例子

服务端:

$apt-get install nfs-kernel-server

vi /etc/exports添加nfs目录: /personal/nfs_share

10.1.60.34(rw,sync,no_root_squash)

$sudo exportfs -r

$sudo /etc/init.d/portmap start

$sudo /etc/init.d/nfs-kernel-server start

客户端:

$sudo apt-get install nfs-common

$sudo mount 10.19.34.76:/personal/nfs_share ~/nfsshare

4.文件存储结构

Linux正统的文件系统(ext2ext3)一个文件由目录项、inode和数据块组成。

1)目录项:包括文件名和inode节点号。

2Inode:又称文件索引节点,是文件基本信息的存放地和数据块指针存放地。

3)数据块:文件的具体内容存放地。

Linux正统的文件系统(ext23)将硬盘分区时会划分出目录块、inode Table区块和data block数据区域。一个文件由一个目录项、inode和数据区域块组成。Inode包含文件的属性(如读写属性、owner等,以及指向数据块的指针),数据区域块则是文件内容。当查看某个文件时,会先从inode table中查出文件属性及数据存放点,再从数据块中读取数据。

文件结构视图如下:

其中目录项的结构如下(每个文件的目录项存储在改文件所属目录的文件内容里)

其中文件的inode结构如下(inode里所包含的文件信息可以通过命令:stat filename查看得到):

5.软连接、硬链接

软链接和硬链接是我们常见的两种概念:

硬连接:是给文件一个副本,同时建立两者之间的连接关系。修改其中一个,与其连接的文件同时被修改。如果删除其中[color=red]任意一个[/color]其余的文件将不受影响。

软连接:也叫符号连接,他只是对源文件在新的位置建立一个快捷(借用一下wondows常用词),所以,当源文件删除时,符号连接的文件将成为无源之水->仅仅剩下个文件名了,当然删除这个连接,也不会影响到源文件,但对连接文件的使用、引用都是直接调用源文件的。

具体关系可以看下图:

从图上可以看出硬链接和软链接的区别:

1:硬链接原文件和新文件的inode编号一致。而软链接不一样。

2:对原文件删除,会导致软链接不可用,而硬链接不受影响。

3:对原文件的修改,软、硬链接文件内容也一样的修改,因为都是指向同一个文件内容的。

6.文件目录管理命令

文件查看:

cat:

cat [file]

查看文件的内容。全程式concatenate的意思,将文件内容连续输出到屏幕上。第一行到最后一行显示。
tac:
tac [file]
cat刚好相反 是从最后一行到第一行的方式查看。

cat有个比较不好的地方时当文件比较大时候没办法看清楚,这个时候可以用more或者Less命令。

more:
more [file]
如果使用grep或者find等命令时,可以配合使用more一页一页的查看。如果看到一半想退出,则敲入’q’即可退出。
less:
less [file]
less
more更有弹性,可以上下翻页。

如果只想读取文件的头几行或者文件的末尾几行,可以用headtail.
head –n [file]
:读取文件的前n行。
tail –n [file]
:读取文件末尾n行。

以上命令都是用于查看字符文件,二进制文件出来的都是乱码,要看二进制文件的内容,可以用od命令,如查看一个MP3文件里面的内容:
od shijiemori.mp3

文件目录与权限

chmod chown chgrp umask

文件查找

which:
which [filename]
该命令用于查询通过PATH路径到该路径内查找可执行文件。
如:Which passwd:查找可执行文件passwd
whereis:
whereis [-bmsu] [keyword]
该命令用于把相关字的文件和目录都列出来。(Linux会将文件都记录在一个文件数据库里面,该命令式从数据库去查询,所以速度比较快,Linux每天会更新该数据库)

locate:
locate [filename]
该命令

用于把相关字的文件和目录都列出来。查找数据特别快,也是通过数据库方式来查询。但是数据库一周更新一次,所以可能有些存在数据查不到。可以去修改配置文件。

find:
find [path] [
参数] [keyword]
该命令用于在指定路径下查找文件。不是通过数据来查询,所以速度会比较慢。

文件权限

权限分为:可读r,可写w和可执行x(execute)。权限的所有者分为用户权限(所有者权限),组权限和其他权限,分别用字母u,g,o代表(即User,Group,Other)。另外还有a代表所有用户(all)。

例如一个文件的权限为:rwx r-x r-x,3个为一组,分别代表u、g、o的权限,例如头三个字母rwx,代表所有者的权限为“可读可写可执行”。这些权限都可以用数字来表示(r=4,w=2,x=1),例如rwx = 4+2+1 = 7,那么上边的权限就可以写成755。

又比如在Linux系统下:

新建文件的权属是-rw-rw-rw-,权限值是666。

新建目录的权属是drwxrwxrwx,权限值是777。(d只是显示出来的目录记号)

在终端中可以用shell命令的chmod来改变文件权限,例如:

#chmod u+w /home/abc.txt

#chmod o-x /home/abc.txt

#chmod a=w /home/abc.txt

#chmod 644 /home/abc.txt

#chmod 777 /home/abc.txt

补充:除了常见的rwx权限以外,还有3个特殊的权限,分别是s、t、i、a,下面分别做简单介绍。

s:文件属主和组设置(suid和guid),文件在被设置了s权限后将以root身份执行。在设置s权限时文件属主、属组必须先设置相应的x权限,否则s权限并不能正真生效(chmod命令不进行必要的完整性检查,即使不设置x权限就设置s权限,chmod也不会报错,当我们ls -l时看到rwS,大写S说明s权限未生效)。Linux修改密码的passwd便是个设置了suid的程序(如下所示),普通用户无读写/etc/shadow文件的权限却可以修改自己的密码。

[local @root] #ls -al /usr/bin/passwd

-rwsr-xr-x 1 root root 32988 2011-12-08 17:17 /usr/bin/passwd

我们可以通过字符模式设置s权限:chmod a+s filename,也可以使用绝对模式进行设置:

设置s u i d:将相应的权限位之前的那一位设置为4;

设置g u i d:将相应的权限位之前的那一位设置为2;

两者都置位:将相应的权限位之前的那一位设置为4+2=6。

如:

chmod 4764 filename1 //前面那个4即代表设置suid

chmod 6755 filename2 //同时设置suid和guid,Android中的su文件就是这个权限

t :设置粘着位,一个文件可读写的用户并一定相让他有删除此文件的权限,如果文件设置了t权限则只用属主和root有删除文件的权限,通过chmod +t filename 来设置t权限。

i:不可修改权限。例:chattr u+i filename 则filename文件就不可修改,无论任何人,如果需要修改需要先删除i权限,用chattr -i filename就可以了。查看文件是否设置了i权限用lsattr filename。

a:只追加权限。对于日志系统很好用,这个权限让目标文件只能追加,不能删除,而且不能通过编辑器追加。可以使用chattr +a设置追加权限。

附:

linux 中某一文件夹的用户是A,想更改成B用户!如何用usermod实现?

  su到root

  chown B yourdir

  chgrp B yourdir

  group文件里:

  zzg:x:550:litong,liuhong

  这都代表什么意思?那个数字代表什么意思?

  在passwd里:

  liuhong:x:544:550::/usr/local/resin/webapps:/bin/bash

  这里的数字又是什么意思?

  如果我要改liuhong的权限怎么改?

Linux是一种多用户、多任务的操作系统,对于使用Linux的任一用户(user self),可以与其共享此系统的其它用户可以分为同属一个组的用户(group users)以及不属同一个组的用户(other users)。

  zzg:x:550:litong,liuhong

  组名zzg 密码x在shadow中 组ID号550 组内用户有litong,liuhong

  liuhong:x:544:550::/usr/local/resin/webapps:/bin/bash

  用户名liuhong 密码x在shadow中 用户ID544 组ID550 描述为空 用户主目录/usr/local/resin/webapps 登录初始shell为/bin/bash

  修改指定目录的属性 o-rwx ,限制其他用户访问,更改该用户所在的组为非该目录所属组;

  或修改指定目录的属性 go-rwx,限制其他用户和本组成员访问,都可以使该用户不能访问指定目录

  root用户使用chown,可以指定文件权限给用户,用户自己的文件可以使用chmod设置文件访问权限。

  权限更改:

chmod g+w 文件夹/文件名

  chmod o+w 文件夹/文件名

分享到:
评论

相关推荐

    模拟LINUX文件系统及终端

    (8)copy …: 拷贝文件,除支持模拟Linux文件系统内部的文件拷贝外,还支持host文件系统与模拟Linux文件系统间的文件拷贝。 (9)del …: 删除文件:删除指定文件,不存在时给出出错信息。 (10)check:检测并恢复文件...

    Linux文件系统及文件管理 上机实验报告

    本次实验是关于Linux文件系统及文件管理的上机操作,旨在让学生深入理解和熟练运用Linux操作系统中的文件系统管理和文件操作。实验涵盖了文件系统的格式化、挂载与卸载,目录和文件的创建、移动、复制、删除,以及...

    C语言模拟实现Linux文件系统

    C语言模拟实现Linux文件系统 1、在内存中开辟一块空间来模拟文件系统的运行,不读写硬盘。 2、面向单用户、单任务,不考虑并发,不考虑文件属主、组等概念。 3、程序开始后,初始化并接收用户输入。若输入”enter”...

    Linux文件系统的模拟实现.pdf

    "Linux文件系统的模拟实现" Linux文件系统是操作系统的核心组件之一,负责管理存储设备上的数据组织和访问。 Linux文件系统的模拟实现是指通过软件模拟实现一个Linux文件系统,来加深对文件系统的理解。 文件系统...

    Linux文件系统庖丁解牛 - 知乎1

    本文将深入探讨Linux文件系统的原理和功能。 首先,我们要理解文件系统为何存在。尽管磁盘内部由多个盘片、磁道和扇区组成,但用户并不需要直接处理这些复杂的物理结构。磁盘控制器将这些硬件细节抽象出来,提供一...

    linux文件系统结构分析

    本篇将深入探讨Linux文件系统的结构,并阐述进程如何操作文件。 首先,Linux文件系统采用了一种层次式的目录结构,这种结构起始于根目录 `/`。所有其他目录和文件都是从这个根目录开始的,通过斜线 `/` 分隔的路径...

    linux文件系统

    主要讲解linux文件系统,主要讲解linux文件系统,主要讲解linux文件系统linux 文件系统。。。。。。。。。。。。。主要讲解linux文件系统,主要讲解linux文件系统,主要讲解linux文件系统,linux 文件系统。。。。。...

    Linux文件系统.pdf

    这篇学习资料详细介绍了Linux文件系统的一些关键概念和技术。 1. 文件系统类型 Linux支持多种文件系统类型,如EXT2、EXT3、EXT4、XFS、Btrfs、FAT、NTFS等。EXT4是目前最常用的一种,它在EXT2的基础上进行了优化,...

    linux文件系统电子书籍

    ### Linux文件系统基础知识详解 #### 一、文件系统概述 文件系统是操作系统中不可或缺的核心组成部分之一,它负责管理和组织存储设备(如硬盘、SSD等)上的数据。具体而言,文件系统定义了一套规则和数据结构,用...

    linux 文件系统源码

    Linux 文件系统源码是了解操作系统核心机制的重要组成部分,特别是对于那些想要深入理解Linux内核以及文件系统工作原理的开发者和研究者来说。在这个压缩包中,包含了一系列的源码文件,涉及到了多种不同的文件系统...

    Linux文件系统结构分析

    Linux文件系统是Linux操作系统中用于存储、组织文件,并允许用户和程序访问这些文件的子系统。Linux系统支持多种不同的文件系统类型,其中EXT2和EXT3是目前最常用的文件系统类型。EXT2是专为Linux设计的扩展文件系统...

    linux文件系统.pdf

    Linux文件系统是Linux操作系统的核心组成部分,它负责管理和存储数据,为用户提供访问文件和目录的统一接口。Linux的一大特性是支持多种文件系统,包括但不限于ext、ext2、xia、minix、umsdos、msdos、vfat、proc、...

    浅析Linux文件系统管理.pdf

    本文主要探讨了在Red Hat 9.0环境下Linux文件系统的管理,包括磁盘管理的各个方面。 1. Linux 文件系统类型 Linux 支持多种文件系统,如ext2、ext3和ext4,其中Red Hat 9.0默认使用ext3文件系统。ext3是一种日志...

    模拟linux文件系统

    模拟Linux文件系统。在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的 模拟Linux文件系统 在现有机器硬盘上开辟20M的硬盘空间,作为设定的硬盘空间。 2. 编写一管理程序对此空间进行管理,以...

    Linux文件系统详解.pdf

    Linux 文件系统详解 Linux 文件系统是 Linux 操作系统的核心组件之一,负责管理和组织存储在磁盘等存储设备上的文件。Linux 文件系统的核心是树状目录结构,目录提供了管理文件的一个方便而有效的途径。Linux 使用...

    Linux文件系统目录结构的详细解说2.pdf

    Linux 文件系统目录结构的详细解说 Linux 文件系统目录结构是 Linux 操作系统的根目录结构,它是 Linux 文件系统的组织者,也是最上级的领导者。 Linux 文件系统的目录结构可以用树形结构来形象地描述。在 Linux ...

Global site tag (gtag.js) - Google Analytics