2 菜鸟必读:RHCE课堂学习笔记( 二 )


4 (读权限)
2 (写权限)
1 (执行权限)
例:设置文件file 为所有人均为只读权限:
$ chmod 444 file
例:设置文件file 为拥有者拥有读写和执行权限 , 组内用户有读和执行权限、其他用户无任何权限:
$ chmod 750 file
还要提一下默认的文件权限 。默认的文件权限 , 是由umask 来决定的 。非特权用户的umask 为002 , 即文件默认权限为664;而root 用户的umask 为022 , 即文件默认权限为644 。
如果没有umask 的话 , 所有文件都会默认为666权限 , 意味着所有人都可以读写新建的文件 。注意所有新建的文件都没有执行权限 , 即使umask 也无能为力 。所有的执行文件都要显式的给出执行权限才能运行 。但是对于目录来说 , 无论umask 的值是多少 , 新建目录时就默认赋予了执行权限(可以访问目录) 。
要改变umask , 只需打:
$ umask 022
这样就使得原本默认的002 umask值改为022 。但是当下次再登录的时候 , umask 又会改回到原来的值 , 这就需要你在bash 的初始化脚本(initialization script)中加入特定的umask 值 。
除了三种标准访问权限外 , 还有前面提到过的三种特殊权限 。它们是setuid、setgid 和sticky 位 。
(下面我的理解不知道正确与否 , 希望高手指点!)
setuid 位将进程的用户ID (user ID)设置为文件的用户ID , 对目录无效 。
setuid 是一个非常强大也很危险的工具 。比如 , 如果一个程序设置了setuid 位而且它的拥有者是root , 那么当该程序执行时它就拥有了root 用户执行这个程序的特权 。有些程序必须使用它来使程序正确运行 。比如ping 程序必须设置setuid 为root , 因为它要在网络上传输ICMP包的裸数据 。任何setuid 的程序必须小心编写并排除安全漏洞 。
setgid 位将进程的组ID (group ID)设置为文件的组ID , 对目录来说 , 它迫使所有在该目录中创建的文件都拥有与该目录相同的组 , 而无论文件的创建者是谁 。
setgid 和setuid 一样 , 也很强大 , 应该小心使用 。因为它允许无意识的对文件和资源的访问 。举例来说 , minicom 终端模拟器程序设置setgid 为uucp 组 , 它提供了向计算机的串行口访问的权限(组uucp 拥有该种权限) 。
sticky 位作用在目录上 , 防止用户删除它们并不拥有的文件(files they do not own) 。sticky 位典型的应用便是在/tmp 目录中 , 防止用户删除彼此的文件 。sticky 位在文件上没有效果 。
单元六:Linux文件系统
文件和目录被组织在一个单根(single-rooted)反向树状结构中 。包括独立的物理设备卷 , 比如软盘、CDROM或多个硬盘 。反向树状结构的基点(最高点)为根目录或者叫"/" 。
文件名是大小写敏感的 , "/"符号为界定符 , 分开路径名的各个元素 。例如 /usr/bin/X11/X
每个shell 和系统进程都有一个“当前目录” 。".."表示当前目录的上一级目录 , "."表示当前目录 。文件或者目录以"."开头的是所谓的隐藏文件 , 它们在默认的罗列中不出现 。
一个用户的路径(path)是一串目录 , 用以搜索执行命令的程序所在 。
/(root)
______________________________________________|______________________________________
| | | | | | | | | | | | | | |
etc bin sbin lib root usr mnt var boot tmp opt dev home proc lost found
bin: 用来储存用户命令 。/usr/bin 目录也存放用户命令 。
sbin: 系统命令例如shutdown 之类的所在 。/usr/sbin 目录也存放许多系统命令 。
root: 超级用户的home 目录 。
mnt: 通常在系统启动以后含有文件系统装载的装载点(mount point) 。
boot: 含有在系统启动时所用到的内核和其他文件 。
lost found: fsck 使用用来存储找到的文件碎片(无文件名的文件) 。

推荐阅读