1 路径和目录
1.1 目录
● 目录是一组相关文件的集合。
● 一个目录下,除了可以放文件之外可以存放其他目录,即可包含子目录。
● 在确定文件、目录位置时,DOS和Unix/Linux都采用“路径名+文件名”的方式。路径可以反映目录和目录之间的关系。
1.2 路径
Unix/Linux路径是有由到达定位文件的目录组成。在Unix/Linux系统中组成路径的目录分割符为“/”,而DOS则用反斜杠“\”来分割各个目录。
路径分为绝对路径和相对路径:‘
● 绝对路径
1)绝对路径是从目录树的树根“/”目录开始往下直至到达文件所经过的所有节点目录。
2)下级目录接在上级目录后面用“/”隔开。
3)注意:绝对路径都是从“/”开始的,所以第一个字符一定是“/”。
● 绝对路径
1) 相对路径是指目标目录相对于当前目录的位置。
2)如果不在当前目录下,则需要使用两个特殊目录“.”和“..”。目录“.”指向当前目录“..”指向上级目录
2 文件系统
2.1 Windows和Linux文件系统区别
在windows下,计算机是有驱动盘符构成
每个驱动器都有自己的根目录结构,形成了多个树并列的情况,如图:
在 Linux 下,我们是看不到这些驱动器盘符,我们看到的是文件夹(目录):
Ubuntu 没有盘符这个概念,只有一个根目录 /,所有文件都在它下面
2.2 Linux目录结构
● /:根目录,一般根目录下只存放目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始,当在终端里输入 /home,其实是在告诉电脑,先从 /(根目录)开始,再进入到 home 目录。
● /bin、/usr/bin:可执行二进制文件的目录,如常用的命令 ls、tar、mv、cat 等。
● /boot:放置 linux 系统启动时用到的一些文件,如 linux 的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。
● /dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt。
● /etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有 /etc/inittab、/etc/fstab、 /etc/init.d、 /etc/X11、 /etc/sysconfig、 /etc/xinetd.d。
● /home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下, ~ 表示当前用户的家目录, ~edu 表示用户 edu 的家目录。
● /lib、/usr/lib、/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。
● /lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下。
● /mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。
● /opt:给主机额外安装软件所摆放的目录。
● /proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/net/*等。
● /root:系统管理员root的家目录。
● /sbin、/usr/sbin、/usr/local/sbin:放置系统管理员使用的可执行命令,如 fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root 使用的命令,一般用户只能”查看”而不能设置和使用。
● /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。
● /srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内。
● /usr:应用程序存放目录,/usr/bin:存放应用程序,/usr/share:存放共享数据,/usr/lib:存放不能直接运行的,却是许多程序运行所必需的一些函数库文件, /usr/local:存放软件升级包, /usr/share/doc:系统说明文件存放目录,/usr/share/man:程序说明文件存放目录。
● /var:放置系统执行过程中经常变化的文件,/var/log:随时更改的日志文件,/var/spool/mail:邮件 存放的目录,/var/run:程序或服务启动后,其 PID 存放在该目录下。
3 一切皆文件
3.1 一切皆文件
Unix/Linux对数据文件(*.mp3、*.bmp),程序文件(*.c、*.h、*.o),设备文件(LCD、触摸屏、鼠标),网络文件(socket)等的管理都抽象为文件,使用同一的方式方法管理。
在Unix/Linux操作系统中也必须区分文件类型,通过文件类型可以判断文件属于可执行文件、文本文件还是数据文件。在Unix/Linux系统中文件可以没有扩展名。
3.2 文件分类
通常,Unix/Linux系统中常用的文件类型有5种:普通文件、目录文件、设备文件、管道文件和链接文件。
● 普通文件:计算机操作系统存放数据、程序等信息的文件,一般都长期存放于外存储器(磁盘、磁带等)中。普通文件一般包括文本文件、数据文件、可执行的二进制程序文件等。
在Unix/Linux中可以通过file命来查看文件的类型。如果file文件后面携带文件名,则查看指定文件的类型,如果携带通配符“*”,则可以查看当前目录下的所有文件的类型。
● 目录文件:Unix/Linux系统把目录看成是一种特殊的文件,利用它构成文件系统的树型结构。
目录文件只允许系统管理员对其进行修改,用户进程可以读取目录文件,但不能对它们进行进行修改。
每个目录文件至少包括两个条目,“..”表示上一级目录,“.”表示该目录本身。
● 设备文件:Unix/Linux系统把每个设备都映射成一个文件,这就是设备文件。它是用于向I/O设备提供连接的一种文件,分为字符设备和块设备文件。
字符设备的存取以一个字符为单位,块设备的存取以字符块为单位。每一种I/O设备对应一个设备文件,存放在/dev目录中,如形式打印机对应/dev/lp,第一个软盘驱动器对应/dev/fd0。
● 管道文件:管道文件也是Unix/Linux中较特殊的文件类型,这类文件多用于进程间的通信。
● 链接文件:类似于Windows下的快捷方式,链接又可以分为软连接(符号链接)和硬链接(软链接:类似于快捷方式,改动链接文件,源文件不会变。硬链接:类似同步更新,一个改动另一个跟着改动)。
4 文件权限
文件权限就是文件的访问控制权限,即哪些用户和组群可以访问文件以及可以执行什么样的操作。
4.1 访问用户
通过设定权限可以从以下三种访问方式限制访问权限:
● 只允许用户自己访问(所有者)
所有者就是创建文件的用户,用户是所有用户所创建文件的所有者,用户可以允许所在的用户组能访问用户的文件。
● 允许一个预先指定的用户组中的用户访问(用户组)
用户都组合成用户组,例如,某一类或某一项目中的所有用户都能够被系统管理员归为一个用户组,一个用户能够授予所在用户组的其他成员的文件访问权限。
● 允许系统中的任何用户访问(其他用户)
用户也将自己的文件向系统内的所有用户开放,在这种情况下,系统内的所有用户都能够访问用户的目录或文件。在这种意义上,系统内的其他所有用户就是other用户类
这种管理方式有些类似QQ的访问权限:所有者就是QQ群创建者,用户组就是QQ群组,其他用户就是QQ用户。
4.1 访问用户
用户能够控制一个给定的文件或者目录的访问程度,一个文件或目录可能有读、写和执行权限:
● 读权限(r)
对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
● 写权限(w)
对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
● 可执行权限(x)
对文件而言,具有执行文件的权限;对目录来说该用户具有进入目录的权限。
注意:通常,Unix/Linux系统只允许文件的属主(所有者)或超级用户改变文件的读写权限。
4.2 文件示例说明
1)第一个字母代表文件的类型:"d" 代表文件夹 "-" 代表普通文件 "c" 代表硬件字符设备 "b" 代表硬件快设备 "s" 表示管道文件 "l" 代表软链接文件。
2)后9个字母分别代表三组权限:文件所有者、用户者、其他用户拥有的权限。
每一个用户都有它自身的读、写和执行权限。
第一组权限控制访问自己的文件权限,即所有者权限。
第二组权限控制用户组访问其中一个用户的文件的权限。
第三组权限控制其他所有用户访问一个用户的文件的权限。
这三组权限赋予用户不同类型(即所有者、用户组和其他用户)的读、写以及执行权限就构成了一个有9中类型的权限组。