Linux 权限与重要目录

权限问题

字母简写说明

简称 含义
u user (文件的拥有者)
g group (文件所属组)
o other (其他用户)
a all (所有用户)

Linux 进入目录需要的权限

对 user 需要 rwx 权限,对 group 需要 rx 权限,对 other 需要 rx 权限;

在目录中执行 touch、ls、 rm、 mv 需要的权限

touch: 对所有者需要 rw 权限,对所有者所在组需要 r 权限,对其他用户需要 r 权限;
ls: 都需要 r 权限
rm: 都需要 w 权限
mv: 都需要 w 权限

结论

读权限:对文件具有读取文件内容的权限、对文件目录具有浏览目录信息的权限
写权限:对文件具有修改文件内容的权限、对文件目录具有移动删除目录信息的权限
执行权限:对文件具有执行文件的权限、对文件目录具有进入目录的权限

Linux 的文件分类

普通文件(regular file)

就是一般存取的文件,由 ls -al 显示出来的属性中,第一个属性为 [-],例如 [-rwxrwxrwx]。另外,依照文件的内容,又大致可以分为:
纯文本文件 这是 Unix 系统中最多的一种文件类型,之所以称为纯文本文件,是因为内容可以直接读到的数据,例如数字、字母等等。设 置文件几乎都属于这种文件类型。举例来说,使用命令 “cat ~/.bashrc” 就可以看到该文件的内容(cat 是将文件内容读出来)。

二进制文件(binary) 系统其实仅认识且可以执行二进制文件(binary file)。Linux 中的可执行文件(脚本,文本方式的批处理文件不算)就是这种格式的。举例来说,命令 cat 就是一个二进制文件。

数据格式的文件(data) 有些程序在运行过程中,会读取某些特定格式的文件,那些特定格式的文件可以称为数据文件(data file)。举例来说,Linux 在用户登入时,都会将登录数据记录在 /var/log/wtmp 文件内,该文件是一个数据文件,它能通过 last 命令读出来。但使用 cat 时,会读出乱码。因为它是属于一种特殊格式的文件。

目录文件(directory) 就是目录,第一个属性为 [d],例如 [drwxrwxrwx]。

连接文件(link)

类似 Windows 下面的快捷方式。第一个属性为 [l],例如 [lrwxrwxrwx]。

设备与设备文件(device)

与系统外设及存储等相关的一些文件,通常都集中在 /dev 目录。通常又分为两种:

块设备文件

就是存储数据以供系统存取的接口设备,简单而言就是硬盘。例如一号硬盘的代码是 /dev/hda1 等文件。第一个属性为 [b],支持随机读取。

字符设备文件

即串行端口的接口设备,例如键盘、鼠标等等。第一个属性为 [c],只能按照顺序读写。

套接字(sockets)

这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。第一个属性为 [s],最常在 /var/run 目录中看到这种文件类型。

管道(FIFO,pipe)

FIFO 也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误。FIFO 是 first-in-first-out(先进先出)的缩写。第一个属性为 [p]。 [5]

重要目录

/ 根目录,所有的目录、文件、设备都在 / 之下,/ 就是 Linux 文件系统的组织者,也是最上级的领导者。

/bin 就是二进制(binary)英文缩写。在一般的系统当中,都可以在这个目录下找到 linux 常用的命令。系统所需要的那些命令位于此目录。

/boot Linux 的内核及引导系统程序所需要的文件目录,比如 vmlinuz initrd.img 文件都位于这个目录中。在一般情况下,GRUB 或 LILO 系统引导管理器也位于这个目录。

/cdrom 这个目录在刚刚安装系统的时候是空的。可以将光驱文件系统挂在这个目录下。例如:mount /dev/cdrom/cdrom

/dev 设备(device) 的英文缩写。这个目录对所有的用户都十分重要。因为在这个目录中包含了所有 linux 系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序。这一点和常用的 windows,dos 操作系统不一样。它实际上是一个访问这些外部设备的端口。可以非常方便地去访问这些外部设备,和访问一个文件,一个目录没有任何区别。

/etc 这个目录是 linux 系统中最重要的目录之一。在这个目录下存放了系统管理时要用到的各种配置文件和子目录。要用到的网络配置文件,文件系统,x 系统配置文件,设备配置信息,设置用户信息等都在这个目录下。

/home 如果建立一个用户,用户名是”xx”, 那么在 /home 目录下就有一个对应的 /home/xx 路径,用来存放用户的主目录。

/lib 是库(library)英文缩写。这个目录是用来存放系统动态连接共享库的。几乎所有的应用程序都会用到这个目录下的共享库。因此,千万不要轻易对这个目录进行什么操作,一旦发生问题,系统就不能工作了。

/lost+found 在 ext2 或 ext3 文件系统中,当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中 fsck 工具会检查这里,并修复已经损坏的文件系统。有时系统发生问题,有很多的文件被移到这个目录中,可能会用手工的方式来修复,或移到文件到原来的位置上。

/mnt 这个目录一般是用于存放挂载储存设备的挂载目录的,比如有 cdrom 等目录。可以参看 /etc/fstab 的定义。

/media 有些 linux 的发行版使用这个目录来挂载那些 usb 接口的移动硬盘(包括 U 盘)、CD/DVD 驱动器等等。

/opt 这里主要存放那些可选的程序。

/proc 可以在这个目录下获取系统信息。这些信息是在内存中,由系统自己产生的。

/root Linux 超级权限用户 root 的家目录。

/sbin 这个目录是用来存放系统管理员的系统管理程序。大多是涉及系统管理的命令的存放,是超级权限用户 root 的可执行命令存放地,普通用户无权限执行这个目录下的命令,这个目录和 /usr/sbin; /usr/X11R6/sbin 或 /usr/local/sbin 目录是相似的,凡是目录 sbin 中包含的都是 root 权限才能执行的。

/selinux 对 SElinux 的一些配置文件目录,SElinux 可以让 linux 更加安全。

/srv 服务启动后,所需访问的数据目录,举个例子来说,www 服务启动读取的网页数据就可以放在 /srv/www 中

/tmp 临时文件目录,用来存放不同程序执行时产生的临时文件。有时用户运行程序的时候,会产生临时文件。/tmp 就用来存放临时文件的。/var/tmp 目录和这个目录相似。

/usr 这是 linux 系统中占用硬盘空间最大的目录。用户的很多应用程序和文件都存放在这个目录下。在这个目录下,可以找到那些不适合放在 /bin 或 /etc 目录下的额外的工具

/usr/local 这里主要存放那些手动安装的软件,即不是通过 “新立得” 或 apt-get 安装的软件。它和 /usr 目录具有相类似的目录结构。让软件包管理器来管理 /usr 目录,而把自定义的脚本(scripts) 放到 /usr/local 目录下面、。

/usr/share 系统共用的东西存放地,比如 /usr/share/fonts 是字体目录,/usr/share/doc/usr/share/man 帮助文件。

/var 这个目录的内容是经常变动的,看名字就知道,可以理解为 vary 的缩写,/var 下有 /var/log 这是用来存放系统日志的目录。/var/www 目录是定义 Apache 服务器站点存放目录;/var/lib 用来存放一些库文件,比如 MySQL 的,以及 MySQL 数据库的的存放地。

/sys 目录结构如图所示:

.
├── block
├── bus
├── class
├── dev
├── devices
├── firmware
├── fs
├── hypervisor
├── kernel
├── module
└── power

block 该目录下的所有子目录代表着系统中当前被发现的所有块设备。按照功能来说防止在 /sys/class 下会更合适,但由于历史遗留因素而一直存在于 /sys/block,但从 linux2.6.22 内核开始这部分就已经标记为过去时,只有打开了 CONFIG_SYSFS_DEPRECATED 配置编译才会有这个目录存在,并且其中的内容在从 linux2.6.26 版本开始已经正式移到了 /sys/class/block,旧的接口 /sys/block 为了向后兼容而保留存在,但其中的内容已经变为了指向它们在 /sys/devices/ 中真实设备的符号链接文件。

bus 该目录下的每个子目录都是 kernel 支持并且已经注册了的总线类型。这是内核设备按照总线类型分层放置的目录结构,/sys/devices 中的所有设备都是连接于某种总线之下的,bus 子目录下的每种具体总线之下可以找到每个具体设备的符号链接,一般来说每个子目录 (总线类型) 下包含两个子目录,一个是 devices,另一个是 drivers;其中 devices 下是这个总线类型下的所有设备,这些设备都是符号链接,它们分别指向真正的设备 (/sys/devices/name/ 下);而 drivers 下是所有注册在这个总线上的驱动,每个 driver 子目录下 是一些可以观察和修改的 driver 参数。(它也是构成 linux 统一设备模型的一部分)

class 该目录下包含所有注册在 kernel 里面的设备类型,这是按照设备功能分类的设备模型,每个设备类型表达具有一种功能的设备。每个设备类型子目录下都是这种哦哦那个设备类型的各种具体设备的符号链接,这些链接指向 /sys/devices/name 下的具体设备。设备类型和设备并没有一一对应的关系,一个物理设备可能具备多种设备类型;一个设备类型只表达具有一种功能的设备,比如:系统所有输入设备都会出现在 /sys/class/input 之下,而不论它们是以何种总线连接到系统的。(/sys/class 也是构成 linux 统一设备模型的一部分)

dev 该目录下维护一个按照字符设备和块设备的主次号码 (major:minor) 链接到真实设备 (/sys/devices) 的符号链接文件。

devices 该目录下是全局设备结构体系,包含所有被发现的注册在各种总线上的各种物理设备。一般来说,所有的物理设备都按其在总线上的拓扑结构来显示,但有两个例外,即 platform devices 和 system devices。platform devices 一般是挂在芯片内部的高速或者低速总线上的各种控制器和外设,它们能被 CPU 直接寻址;system devices 不是外设,而是芯片内部的核心结构,比如 CPU,timer 等,它们一般没有相关的驱动,但是会有一些体系结构相关的代码来配置它们。(sys/devices 是内核对系统中所有设备的分层次表达模型,也是 /sys 文件系统管理设备的最重要的目录结构)

fs 按照设计,该目录使用来描述系统中所有的文件系统,包括文件系统本身和按照文件系统分类存放的已挂载点。

firmware 该目录下包含对固件对象 (firmware object) 和属性进行操作和观察的接口,即这里是系统加载固件机制的对用户空间的接口.(关于固件有专用于固件加载的一套 API)

hypervisor 该目录是与虚拟化 Xen 相关的装置。(Xen 是一个开放源代码的虚拟机监视器)

kernel 这个目录下存放的是内核中所有可调整的参数

module 该目录下有系统中所有的模块信息,不论这些模块是以内联 (inlined) 方式编译到内核映像文件中还是编译为外模块 (.ko 文件),都可能出现在 /sys/module 中。即 module 目录下包含了所有的被载入 kernel 的模块。

powe 该目录是系统中的电源选项,对正在使用的 power 子系统的描述。这个目录下有几个属性文件可以用于控制整个机器的电源状态,如可以向其中写入控制命令让机器关机 / 重启等等。

/sys/devices 下是所有设备的真实对象,包括如视频卡和以太网卡等真实的设备,也包括 ACPI 等不那么显而易见的真实设备、还有 tty, bonding 等纯粹虚拟的设备;在其它目录如 class, bus 等中则在分类的目录中含有大量对 devices 中真实对象引用的符号链接文件;