`
webcode
  • 浏览: 6065831 次
  • 性别: 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文件系统结构分析

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

    Linux文件系统.pdf

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

    linux文件系统电子书籍

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

    linux 文件系统源码

    Linux 文件系统源码是了解操作系统核心机制的重要组成部分,特别是对于那些想要深入理解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文件系统详解.pdf

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

    模拟linux文件系统

    本篇文章将深入探讨“模拟Linux文件系统”的相关知识,主要涉及Linux文件系统的结构、工作原理以及如何通过编程来模拟这一系统。 首先,我们了解Linux文件系统的层次结构。在Linux中,一切皆为文件,包括硬件设备、...

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

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

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

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

    C/C++仿真实现Linux文件系统

    用C编写的一个Unix/Linux文件系统

Global site tag (gtag.js) - Google Analytics