📄 00000004.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: ruster (尘埃*星辰*领悟), 信区: Linux <BR>标 题: 第二章 Linux基础(下) <BR>发信站: BBS 水木清华站 (Thu Dec 21 13:27:31 2000) <BR> <BR>2.4 用户和权限 <BR> <BR> 本节讨论Linux的用户/文件权限问题。许多用户不了解setuid和setgid,这使得他们 <BR>在处理WWW server的cgi功能时出现种种问题。 <BR> <BR> 2.4.1 用户、组和文件属性 <BR> <BR> Linux是一种多用户操作系统,为了确保在多用户环境下的系统运转的安全性,Linux <BR>使用用户权限机制对系统进行管理,这种管理主要是通过文件管理机制完成的。 <BR> <BR> Linux对每个文件设置一个16位数字来完成对文件的存取控制,这个数字称为文件属性 <BR>。如同我们在前面说的那样,Linux并不使用文件名来区分文件的类型,文件的性质用文 <BR>件属性来描述。在这个16位数字中有9位用于设置用户对文件的存取控制,3位用于对可 <BR>执行文件进行特殊处理,另外3位用于设置文件的类型。这样说可能会让人有些迷糊,我 <BR>们依次来处理这些问题。 <BR> <BR> 文件类型在文件系统中我们已经提到过,它可以是设备文件,普通文件,目录,链接 <BR>中的某一种,下面是一个信手拈来的例子: <BR> <BR> ls -l <BR> <BR> total 48 <BR> <BR> drwxr-xr-x 5 wanghy wanghy 4096 Jan 21 13:25 Desktop <BR> <BR> drwxrwxr-x 2 wanghy wanghy 4096 Jan 28 14:25 bin <BR> <BR> -rwxrwxrwx 1 wanghy wanghy 10 Jan 27 19:43 cc <BR> <BR> lrwxrwxrwx 1 root root 19 Jan 27 10:33 ss -> /etc/X11/XF86 <BR>Config <BR> <BR> lrwxrwxrwx 1 root root 2 Jan 27 10:29 test -> zz <BR> <BR> -rwxrwxrwx 1 wanghy wanghy 32 Jan 27 19:31 testpar <BR> <BR> -rw-rw-r-- 2 wanghy wanghy 8 Jan 27 08:52 tk <BR> <BR> -rw-rw-r-- 2 wanghy why 8 Jan 27 08:52 tt <BR> <BR> -rw-rw-r-- 1 root root 8 Jan 27 10:29 zz <BR> <BR> ls –l命令显示出文件的详细信息,它以分栏方式出现,最左面的一栏是文件属性栏 <BR>。容易看到在文件属性中 <BR> <BR> drwxrwxr-x 2 wanghy wanghy 4096 Jan 28 14:25 bin <BR> <BR> 最左面的d代表着这个文件是一个目录,它可以出现为一个l(软链接),b(块设备),c <BR>(字符设备),d(目录)或者简单地一个-号(普通文件)。 <BR> <BR> 接下来的九个字母代表存取控制,从左至右每三个为一组,分成三组,分别代表文件 <BR>的拥有者,同组用户和其他用户。 <BR> <BR> 文件的拥有者是文件逻辑上的主人,只有他才能修改文件的属性。一般来说每当有人 <BR>新建一个文件,他就自动地成为文件的拥有者。在第三栏我们看到的wangh就是文件系统 <BR>纪录的文件拥有者。在拥有者权限栏位中出现的rwx表示拥有者可以直接读(r)、写(w)、 <BR>执行(x)相应的文件。在这个形式 <BR> <BR> -rw-rw-r-- 2 wanghy why 8 Jan 27 08:52 tt <BR> <BR> rw-表示文件的拥有者可以读和写这个文件,但是不能执行。一个-号代表相应的属性 <BR>位没有被设置。 <BR> <BR> 同组用户是在Linux用户管理中定义的该文件所属组的用户。所属组显示在ls –l输出 <BR>的第四栏。所谓组就是在/etc/group文件中设置的一些集合,例如,下面的/etc/group <BR>文件 <BR> <BR> root:x:0:root <BR> <BR> bin:x:1:root,bin,daemon <BR> <BR> daemon:x:2:root,bin,daemon <BR> <BR> sys:x:3:root,bin,adm <BR> <BR> adm:x:4:root,adm,daemon <BR> <BR> why:x:101:wanghy,adm,test <BR> <BR> 定义了root,bin,daemon,sys,adm和wanghy几个组。其中的why组包含wanghy,ad <BR>m和test三个用户。 <BR> <BR> 刚才的tt文件在组权限这一栏的值是rw-,表示同组用户可以读和写这个文件,在这个 <BR>例子中,就是why组,因此wanghy,adm和test都可以对这个文件进行读写。 <BR> <BR> 最后,其他用户的权限是r--,意味着所有其它用户只能阅读这个文件,不能修改,也 <BR>不能执行。 <BR> <BR> 文件的拥有者可以用chmod命令更改文件的属性,也可以通过更改文件的属主把文件交 <BR>给他人控制。 <BR> <BR> chmod命令的用法是 <BR> <BR> chmod 属性字 文件名 <BR> <BR> 属性字有两种用法,最基本的用法是使用字母,用u,g,o分别代表文件拥有者,组用 <BR>户和其他用户,+和-号用于调整权限。 <BR> <BR> 例如,要给tt文件加上“拥有者可以执行”的权限,命令为 <BR> <BR> chmod u+x tt <BR> <BR> 取消tt的所有人可以读的属性的命令是 <BR> <BR> chmod o-s tt <BR> <BR> chmod另外的一种用法是使用数字,为拥有者,组用户和其他用户分别计算一个数,计 <BR>算规则是r=4,w=2,x=1,然后相加(例如,r-x=5),最后将三个数连到一起,例如为tt <BR>分配一个rwxrw-r—的属性的命令是 <BR> <BR> chmod 764 tt <BR> <BR> 文件的拥有者可以用chown命令将文件的所有权交给其他用户,但一旦交出就不能收回 <BR>,例如,下面命令将tt的所有权交给root <BR> <BR> chown root tt <BR> <BR> 有时需要对一个目录下的所有文件及下级子目录更改属性,这可以使用-R开关,例如 <BR>: <BR> <BR> chmod –R o+r share/* <BR> <BR> 一个有趣的问题是一个新创建的文件具有什么样的属性,这是通过umask命令实现的, <BR>设置了umask之后,你新创建的文件具有0777-umask的属性,例如,大部分系统的缺省u <BR>mask是002,因此用户新创建的文件属性就是777-002=775或者rwxrwxr-x。你总可以用自 <BR>己的设置来改变这个umask值,例如 <BR> <BR> umask 066 <BR> <BR> 将使得你以后的文件自动具有711属性。直接输入不带参数的umask命令则显示当前的 <BR>umask。 <BR> <BR> 2.4.2 超级用户和SU <BR> <BR> UNIX的文件存取控制尽管十分有用,但是你系统在运行中总是会碰到需要绕过UNIX文 <BR>件存取控制的情况。这是利用超级用户权限实现的。 <BR> <BR> UNIX的root用户大概是它最出名的地方,每个系统必须有一个root用户,这个用户执 <BR>行系统的维护和管理。但是你要理解的是,对于系统来说这个名字其实没有意义。系统 <BR>内核真正关心的是用户的uid。uid是一个整数,在/etc/passwd文件中定义,如果某个用 <BR>户的uid等于零,系统将认为他是超级用户,从而对它不再使用存取限制和安全性验证。 <BR>所以root用户可以操作任何人的文件或者象文件的拥有者一样管理文件。 <BR> <BR> root用户可以不受文件管理机制的影响,几乎可以做任何事情,由于unix的进程权限 <BR>机制,root用户所执行的程序具有root权限,除非它自己将自己切换成为其他用户。 <BR> <BR> 由于root用户可以访问整个文件系统,因此文件系统和用户组的管理都由它来完成。 <BR>但是为了安全,许多实际的系统禁止root用户从服务器控制台以外的地方登陆,这意味 <BR>着你不能直接从telnet以root身份进入系统。 <BR> <BR> 即使能够用root身份远程进入系统,直接以一个uid=0的身份在系统上操作也是危险的 <BR>,因为超级用户的误操作可以彻底破坏整个系统。一般的方式是以普通用户的身份进入 <BR>系统,需要执行超级用户的任务时再用su命令切换成超级用户。 <BR> <BR> su命令本来是用来给普通用户切换成超级用户的,但是也可以用它切换成别的用户, <BR>其语法是 <BR> <BR> su 用户名 <BR> <BR> 输入后,系统将提示你输入相应用户的口令,只有正确的口令才能完成身份切换。假 <BR>如在su命令中没有给出用户名,那么系统缺省认为你要切换成超级用户,将提示你输入 <BR>超级用户口令。 <BR> <BR> 关于超级用户和用户管理的详细内容我们在用户管理一章中讨论。 <BR> <BR> 刚才我们提到系统识别超级用户是通过uid,实际上整个UNIX的文件存取权限都是基于 <BR>uid的,uid在/etc/passwd文件中定义,通常这个文件的属性是444,即全程可读,下面 <BR>是一个例子: <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -