FreeBSD,是 BSD UNIX® 的延续, 并基于几个关键的 UNIX 观念。 从一开始就多处提到 FreeBSD 是一个多用户的操作系统, 它能分别处理几个同时工作的用户所分配的毫无关联任务。 并负责为每位用户的硬件设备、 外设、 内存和 CPU 处理时间作出合理安排。
因为系统有能力支持多用户, 在每一方面系统都会作出谁能读、 写和执行的资源权力限制。 这点权限以三个八位元的方式储存着, 一个是表示文件所属者, 一个是表示文件所属群组, 一个是表示其他人。 这些数字以下列方式表示:
数值 | 权限 | 目录列表 |
---|---|---|
0 | 不能读,不能写,不能执行 | --- |
1 | 不能读,不能写,可执行 | --x |
2 | 不能读,可写,不能执行 | -w- |
3 | 不能读,可写,可执行 | -wx |
4 | 可读,不能写,不能执行 | r-- |
5 | 可读,不能写,可执行 | r-x |
6 | 可读,可写,不能执行 | rw- |
7 | 可读,可写,可执行 | rwx |
使用命令的 -l (ls(1)) 参数可以显示出文件的所属者、 所属组和其他人等属性。 请看以下的例子:
% ls -l total 530 -rw-r--r-- 1 root wheel 512 Sep 5 12:31 myfile -rw-r--r-- 1 root wheel 512 Sep 5 12:31 otherfile -rw-r--r-- 1 root wheel 7680 Sep 5 12:31 email.txt ...
使用 ls -l 在每行的开始出现了:
-rw-r--r--
从左边起的第一个字,告诉我们这个文件是一怎样的文件: 普通文件?目录?特殊设备?套接字(socket)?或是pseudo-file device? 在这个例子,-表示一个普通文件。 接下来三个字是rw-是文件拥有者的权限。 再接下来的三个字是r--是文件所属群组的权限。 最後三个字是r--是其他人的权限。 以这一个文件为例,他的权限设定是拥有者可以读写这个文件、群组可以读取、 其他使用者也能读取这个文件。 根据上面的表格, 用数字表示这个文件其三部分的权限应该是 644。
这样很好,但系统怎样对设备进行权限控制的? 事实上FreeBSD将大部份设备(的每一个设备)当作一个文件看待, 用程序能打开、读取、写入数据就如其他的文件一样。 而设备文件放在/dev 目录。
目录也视为一种文件,也有读取、写入、执行的权限。 但目录的执行权限意义并不与普通文件相同, 实际上执行权限是进入权限。 当一个目录是被标示可以执行的时候,那表示它可以被进入, 利用“cd” (变化目录位置)可以进入。 这意味着访问这些目录必须是谁才有权力 (当然目录下的文件也受到访问限制)。
详细方面,想读取一个目录的列表就必须设为可读权限, 同时想删除一个已知的文件,就必须把目录下这个文件设为可写 和 执行权限。
还有更多权限设定, 但是他们大多用在特殊状况下如一个setuid的执行文件和粘贴性目录, 如果想要得知有关文件权限和如何设定的更多资讯,请看手册chmod(1)。
权限符号,某些时候就是指符号表达式, 使用八进制的字符给目录或文件分配权限。 权限符号的使用语法是 (谁) (作用) (权限)。 看看下列数值的在那些地方所起什么样的作用:
选项 | 字母 | 介绍 |
---|---|---|
(谁) | u | 用户 |
(谁) | g | 所属群体 |
(谁) | o | 其他人 |
(谁) | a | 所有人 (“全部”) |
(作用) | + | 增加权限 |
(作用) | - | 减少权限 |
(作用) | = | 确定权限 |
(权限) | r | 可读 |
(权限) | w | 可写 |
(权限) | x | 执行 |
(权限) | t | 粘贴位 |
(权限) | s | 设置 UID 或 GID |
这些数值 chmod(1) 以习惯标定的。 举个例子,用以下命令阻止其他人访问 FILE文件:
% chmod go= FILE
倘若对一个文件作太多的变化设置可用逗号分开, 在下面的例子里, 可以去掉FILE文件的群体和 “全部” 可写权限, 但所有人都可以有执行权限:
% chmod go-w,a+x FILE