文档和目录管理
一、用户,群,其他人
二、Linux文档和目录权限
1、linux文档属性说明
2、修改档案的属性
三、linux文档扩展名
四、Linux 目录配置
1、Filesystem Hierarchy Standard (FHS)
2、FHS目录说明
3、目录使用注意
4、这是比较常见的磁碟分布情况
References
一、用户,群,其他人
::.在Linux中用户分为User, Group 及 Others三个级别。为用户本身,用户所属群,和其他用户。
::.root为Linux中最高权限的用户
::.Linux 使用者身份与群组记录的档案
在Linux中,用户信息记录在 /etc/passwd 这个档案内的,密码则是记录在 /etc/shadow 这个档案下, Linux 所有的群组名称都纪录在 /etc/group 。
二、Linux文档和目录权限
1、linux文档属性说明
例:在root用户下用ls指令可以查看文档的属性
[root@linux ~]# ls -al
total 248
drwxr-x--- 9 root root 4096 Jul 11 14:58 .
drwxr-xr-x 24 root root 4096 Jul 9 17:25 ..
-rw------- 1 root root 1491 Jun 25 08:53 anaconda-ks.cfg
......
::.上面七个属性的意义如下:

::. 1)其中最重要的属性为权限属性:分为档案类型,user,group,other权限属性4组10个符号。

当為[ d ]则是目录,例如上表的第 11 行;
当為[ - ]则是档案,例如上表的第 5 行;
若是[ l ]则表示為连结档(link file);
若是[ b ]则表示為装置档裡面的可供储存的周边设备;
若是[ c ]则表示為装置档裡面的序列埠设备,例如键盘、滑鼠。
::.接下来的属性中,三个為一组,且均為『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute):
第一组為『拥有人的权限』,
第二组為『同群组的权限』;
第三组為『其他非本群组的权限』。
[-][rwx][r-x][r--]
1 234 567 890
1 為:代表这个档名為目录或档案(上面為档案)
234為:拥有人的权限(上面為可读、可写、可执行)
567為:同群组使用者权限(上面為可读可执行)
890為:其他使用者权限(上面為仅可读)
drwx------ 3 root root 4096 Jun 25 08:35 .ssh
若一个目录.ssh的权限如上,则表示除了root用户外,其他用户都没有权限进入这个目录,只有root有x权限。
::.3)第三栏表示这个档案(或目录)的『拥有人』。
::.5)第五栏為这个档案的容量大小。
2、修改档案的属性
chgrp :改变档案所属群组
chown :改变档案所属人
chmod :改变档案的属性、 SUID 、等等的特性
::.1)改变所属群组, chgrp
这个指令就是 change group 的缩写,要记住, 要改变成為的群组名称必须要在 /etc/group 裡面存在的名称才行,否则就会显示错误!
例:
[root@linux ~]# chgrp users install.log
[root@linux ~]# ls -l
-rw-r--r-- 1 root users 68495 Jun 25 08:53 install.log
[root@linux ~]# chgrp testing install.log
chgrp: invalid group name `testing' <== 发生错误讯息囉~找不到这个群组名~
::.2)改变档案拥有者, chown
改变拥有者就是 change owner ,使用者必须是已经存在系统中的,也就是在 /etc/passwd 这个档案中有纪录的使用者名称才行改变。
例:
[root@linux ~]# chown [-R] 帐号名称 档案或目录
[root@linux ~]# chown [-R] 帐号名称:群组名称 档案或目录
参数:
-R : 进行递迴( recursive )的持续变更,亦即连同次目录下的所有档案、目录
都更新成為这个群组之意。常常用在变更某一目录的情况。
范例:
[root@linux ~]# chown bin install.log
[root@linux ~]# ls -l
-rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log
[root@linux ~]# chown root:root install.log
[root@linux ~]# ls -l
-rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
::.3)改变九个属性, chmod
档案属性的改变使用的是 chmod 这个指令,但是,属性的设定方法有两种, 分别可以使用数字或者是符号来进行属性的变更
::::.数字类型改变档案权限
Linux 档案的基本属性就有九个,分别是 owner/group/others 组别的 read/write/execute 属性
这九个属性是三个三个一组的!其中,我们可以使用数字来代表各个属性,各属性的对照表如下:
r:4
w:2
x:1
同一组 (owner/group/others) 的三个属性 (r/w/x) 是需要累加的,例如当属性為 [-rwxrwx---] 则是:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0
所以等一下我们设定属性的变更时,该属性的数字就是 770 .
例:
root@linux ~]# chmod [-R] xyz 档案或目录
参数:
xyz : 就是刚刚提到的数字类型的权限属性,為 rwx 属性数值的相加。
-R : 进行递迴( recursive )的持续变更,亦即连同次目录下的所有档案、目录
都更新成為这个群组之意。常常用在变更某一目录的情况。
举例来说,如果要将 .bashrc 这个档案所有的属性都打开,那麼就下达:
[root@linux ~]# ls -al .bashrc
-rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc
[root@linux ~]# chmod 777 .bashrc
[root@linux ~]# ls -al .bashrc
-rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
::::.符号类型改变档案权限
还有一个改变属性的方法呦!从之前的介绍中我们可以发现,基本上就九个属性分别是(1)user (2)group (3)others 三群啦!那麼我们就可以藉由 u, g, o 来代表三群的属性!此外, a 则代表 all 亦即全部的三群!那麼读写的属性就可以写成了 r, w, x 囉!也就是可以使用底下的方式来看:
chmod u/g/0/a+(+/-/=)+(r/w/x)
例:
root@linux ~]# chmod u=rwx,go=rx .bashrc
# 注意喔!那个 u=rwx,go=rx 是连在一起的,中间并没有任何空白字元!
[root@linux ~]# ls -al .bashrc
-rwxr-xr-x 1 root root 395 Jul 4 11:45 .bashrc
如果我不知道原先的档案属性,而我只想要增加 .bashrc 这个档案的每个人均可写入的权限,那麼我就可以使用:
[root@linux ~]# ls -al .bashrc
-rwxr-xr-x 1 root root 395 Jul 4 11:45 .bashrc
[root@linux ~]# chmod a+w .bashrc
[root@linux ~]# ls -al .bashrc
-rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
而如果是要将属性去掉而不更动其他的属性呢?!例如要拿掉所有人的 x 的属性,则:
[root@linux ~]# chmod a-x .bashrc
[root@linux ~]# ls -al .bashrc
-rw-rw-rw- 1 root root 395 Jul 4 11:45 .bashrc
三、linux文档扩展名
基本上, Linux 的档案是没有所谓的“扩展名”的,因為由前面的说明我们可以知道, 一个 Linux 档案能不能被执行,与他的第一栏的十个属性有关, 与扩展名根本一点关係也没有。这个观念跟 Windows 的情况不相同。在 Windows 底下,能被执行的档案附档名通常是 .com .exe .bat 等等,而在 Linux 底下, 只要你的属性当中有 x 的话,例如 [ -rwx-r-xr-x ] 即代表这个档案可以被执行。
四、Linux 目录配置
1、Filesystem Hierarchy Standard (FHS)
Linux的FHS ( http://www.pathname.com/fhs/ ) 事实上仅是规范出在根目录 ( / ) 底下各个主要的目录应该是要放置什麼样的档案而已。 FHS 定义出两层规范出来,第一层是 / 底下的各个目录应该要放置什麼样内容的档案资料,例如 /etc 应该要放置设定档, /bin 与 /sbin 则应该要放置可执行档等等。第二层则是针对 /usr 及 /var 这两个目录的次目录来定义的。 例如 /var/log 放置系统登录档、 /usr/share 放置共享资料等等。

2、FHS目录说明:
/
根目录 root (/),一般建议在根目录底下只接目录,不要直接有档案在 / 底下。 根目录是开机的时候系统第一个加载的 partition ,所以,所有开机过程会用到的档案, 应该都要放置在这个 partition 当中。举例来说, /etc, /bin, /dev, /lib, /sbin 这五个次目录都应该要与根目录连在一起,不可独立成為某个 partition
/bin,
/usr/bin,
/usr/local/bin
除了 /bin 之外, /usr/local/bin, /usr/bin 也是放置『使用者可执行的 binary file 的目录』举例来说, ls, mv, rm, mkdir, rmdir, gzip, tar, cat, cp, mount 等等重要指令都放在这个目录当中。
/boot
这个目录主要的目的是放置 Linux 系统开机会用到的档案。 开机会用到什麼呢?没错~就是 Linux 的核心档案。这个目录底下档名為 vmlinuz 的就是 Linux 的 Kernel 很重要的东西! 而如果你的开机管理程式 (loader) 选择 grub 的话,那麼这个目录内还有 /boot/grub 这个次目录
/dev
在 Linux 系统上,任何装置与周边设备都是以档案的型态存在於这个目录当中的。 您只要透过存取这个目录底下的某个档案,就等於存取某个装置
主要又分為
周边设备 (character device),例如键盘、滑鼠等;
储存设备 (block device), 例如硬碟、光碟等等。
/etc
系统主要的设定档几乎都放置在这个目录内,例如人员的帐号密码档、 各种服务的啟始档等等。一般来说,这个目录下的各档案属性是可以让一般使用者查阅的,但是只有 root 有权力修改。并且在此目录下的档案几乎都是 ASCII 的纯文字档案哩。 不过, FHS 建议不要放置可执行档在这个目录中喔。比较重要的档案: /etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11, /etc/fstab, /etc/sysconfig/ 等等
/home
这是系统预设的使用者家目录 (home directory)。在你新增一个一般使用者帐号时, 预设的使用者家目录都会规范到这裡来。比较重要的是,家目录有两种代号喔:
~:代表目前这个使用者的家目录,而
~dmtsai :则代表 dmtsai 的家目录!
/lib,
/usr/lib,
/usr/local/lib
系统会使用到的函式库放置的目录。 程式在运作的过程中,可能会呼叫一些额外的功能参数,那需要函式库的协助! 这些函式库就放在此处。比较重要的是 /lib/modules 这个目录内会摆放 kernel 的相关模组喔!
/lost+found
系统不正常產生错误时,会将一些遗失的片段放置於此目录下, 通常这个目录会自动出现在某个 partition 最顶层的目录下。例如你加装一棵硬碟於 /disk 中, 那在这个目录下就会自动產生一个这样的目录 /disk/lost+found
/mnt
/media
这是软碟与光碟预设掛载点的地方;通常软碟掛在 /mnt/floppy 下,而光碟掛在 /mnt/cdrom 下,不过也不一定啦!只要你高兴,随便找一个地方来掛载也可以呀!另外,目前也规划出另一个 /media 的目录呢!与 /mnt 有点类似啦~
/opt 这是给主机额外安装软体所摆放的目录。举例来说, FC4 使用的是 Fedora 社群开发的软体, 如果您今天想要自行安装新的 KDE 桌面软体的话,可以将该软体安装在这个目录下的意思。
/proc
这个目录本身是一个『虚拟档案系统』,他放置的资料都是在记忆体当中, 例如系统核心、形成资讯、周边设备的状态及网路状态等等。因為这个目录下的资料都是在记忆体当中, 所以本身不佔任何硬碟空间啊!比较重要的档案例如:/proc/cpuinfo, /proc/dma, /proc/interrupts, /proc/ioports, /proc/net/* 等等。
/root
系统管理员 (root) 的家目录。之所以放在这里, 是因因为我们提过,系统第一个开机就被加载的 partition 為 / , 而我们希望 /root 能够与 / 放在同一块 partition 上面之故。
/sbin,
/usr/sbin,
/usr/local/sbin
放置一些系统管理员才会动用到的执行指令,例如: fdisk, mke2fs, fsck, mkswap, mount 等等。与 /bin 不太一样的地方,这几个目录是给 root 等系统管理用的。但是本目录下的执行档还是可以让一般使用者用来『察看』而不能设定
/srv
一些服务啟动之后,这些服务所需要取用的资料目录。举例来说,WWW 伺服器需要的网页资料就可以放置在 /srv/www 裡面。
/tmp
这是让一般使用者或者是正在执行的程序暂时放置档案的地方。 这个目录是任何人都能够存取的,所以您需要定期的清理一下。当然,重要资料不可放置在此目录。
/usr
由 FHS 规范的第二层内容,在 /usr 此目录下,包含系统的主要程式、 图形介面所需要的档案、额外的函式库、本机端所自行安装的软体,以及共享的目录与文件等等, 都可以在这个目录当中发现。事实上,他有点像是 Windows 操作系统当中的『Program files』与 『WinNT』这两个目录的结合。在此目录下的重要次目录有:
/usr/bin, /usr/sbin:一般身份使用者与系统管理员可执行的档案放置目录;
/usr/include:c/c++等程式语言的档头 (header) 与包含档(include)放置处, 当我们以 tarball 方式 (*.tar.gz 的方式安装软体) 安装某些资料时,会使用到裡头的许多包含档喔!;
/usr/lib:各应用软体的函式库档案放置目录;
/usr/local:本机端自行安装的软体预设放置的目录。目前也适用於 /opt 目录。 在你安装完了 Linux 之后,基本上所有的配备你都有了,但是软体总是可以升级的, 例如你要升级你的 proxy 服务,则通常软体预设的安装地方就是在 /usr/local (local 是『当地』的意思),同时,安装完毕之后所得到的执行档,為了与系统原先的执行档有分别, 因此升级后的执行档通常摆在 /usr/local/bin 这个地方。给个建议啦, 通常鸟哥都会将后来才安装上去的软体放置在这裡,因為便於管理呦;
/usr/share:共享文件放置的目录,例如底下两个目录:
/usr/share/doc:放置一些系统说明文件的地方,例如你安装了 grub 了,那麼在该目录底下找一找,就可以查到 grub 的说明文件了!很是便利!
/usr/share/man:manpage 的文件档案目录;那是什麼?呵呵! 就是你使用 man 的时候,会去查询的路径呀!例如你使用 man ls 这个指令时,就会查出 /usr/share/man/man1/ls.1.gz 这个说明档的内容囉!
/usr/src:Linux 系统相关的程式码放置目录,例如 /usr/src/linux 為核心原始码!
/usr/X11R6:系统内的 X Window System 所需的执行档几乎都放在这!
/var
这个目录也很重要,也是 FHS 规范的第二层目录内容。他主要放置的是针对系统执行过程中, 常态性变动的档案放置的目录。举例来说,例如快取档案 (cache) 或者是随时变更的登录档 (log file) 都是放在这个目录中的。此外,某些软体执行过程中会写入的资料库档案, 例如 MySQL 资料库,也都写入在这个目录中!很重要吧!他底下的重要目录有:
/var/cache:程式档案在运作过程当中的一些暂存档;
/var/lib:程式本身执行的过程中,需要使用到的资料档案放置的目录, 举例来说, locate 这个资料库与 MySQL 及 rpm 等资料库系统,都写在这个目录内。
/var/log:登录档放置的目录。很重要啊!例如 /var/log/messages 就是总管所有登录档的一个档案!
/var/lock:某些装置具有一次性写入的特性,例如 tab (磁带机), 此时,為了担心被其他人干扰而破坏正在运作的动作,因此,会将该装置 lock (锁住)起来, 以确定该装置只能被单一个程序所使用啊!
/var/run:某些程式或者是服务啟动后,会将他们的 PID 放置在这个目录下喔!
/var/spool:是一些佇列资料存放的地方。举例来说,主机收到电子邮件后, 就会放置到 /var/spool/mail 当中,若信件暂时发不出去,就会放置到 /var/spool/mqueue 目录下, 使用者工作排程 (cron) 则是放置在 /var/spool/cron 当中
3、目录使用注意
::.1)建议不可与 root partition 分开的目录
/etc/, /sbin/, /bin/, /dev/ 以及 /lib/ 这几个目录,
因為我们的 Linux 系统在开机的时候,一开始进行核心载入时, 只会加载一个 partition ,那就是 / 。
::.2)建议最好独立成為单一 partition 的目录
有些目录则是因為安全性与特殊功能性, 而希望能够独立成為一个自己的 partition ,例如: /home, /usr, /var, /tmp 等等。
::.3)系统上的使用者个人家目录在 /home 里面, 这个目录也是可能被使用的最频繁的目录之一。此外,為了资源分配较為平均, 我们可能会希望针对每个人限制他可以使用的最大硬碟总量 (quota),在这个前提之下, 您就必须要将 /home 独立出来,而且最好这个 partition 能够大一点
::. /usr 则是一些程式安装的目录,也可以独立出来的
::.还有 /var/, 这个目录由於记录了相当多的常用资料,也希望可以独立出来
4、这是比较常见的磁碟分布情况:
/ 根目录可以分配约 1 GB 以内;
/boot 大概在 50 MB 就可以了,因为开机档案并不大;
/var 就至少需要 1GB 以上,因為你的 mail 、 proxy 预设的储存区都在这个目录中
/home 与 /usr 通常是最大的,因為你所安装的资料都是在 /usr/ 当中,而用户资料则放置在 /home 当中,因此通常大家都会建议你将所剩下的磁碟空间平均分配给这两个目录说! 不过也不一定啦! /usr 大概给个 10G 就很多了~其他的可以都给 /home
本文是学习Linux的笔记,在此感谢原作者:鸟哥(vbird,vbird@mail.vbird.idv.tw),http://linux.vbird.org
[1]原文:linux档案属性与目录配置 http://linux.vbird.org/linux_basic/0210filepermission.php
[2]Ricard Chen (ricard_chen@yahoo.com),解析 Linux 中的 VFS 文件系统机制,http://www.ibm.com/developerworks/cn/linux/l-vfs/index.html