📄 s1-navigating-ownership.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><HTML><HEAD><TITLE>所有权和许可权限</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+"><LINKREL="HOME"TITLE="Red Hat Linux 9"HREF="index.html"><LINKREL="UP"TITLE="Shell 提示基本知识"HREF="ch-basics.html"><LINKREL="PREVIOUS"TITLE="使用多个命令"HREF="s1-navigating-stringing.html"><LINKREL="NEXT"TITLE="管理文件和目录"HREF="ch-managers.html"><LINKREL="STYLESHEET"TYPE="text/css"HREF="rhdocs-man.css"><METAHTTP-EQUIV="Content-Type"CONTENT="text/html; charset=gb2312"></HEAD><BODYCLASS="SECT1"BGCOLOR="#FFFFFF"TEXT="#000000"LINK="#0000FF"VLINK="#840084"ALINK="#0000FF"><DIVCLASS="NAVHEADER"><TABLESUMMARY="Header navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><THCOLSPAN="3"ALIGN="center">Red Hat Linux 9: Red Hat Linux 入门指南</TH></TR><TR><TDWIDTH="10%"ALIGN="left"VALIGN="bottom"><AHREF="s1-navigating-stringing.html"ACCESSKEY="P">后退</A></TD><TDWIDTH="80%"ALIGN="center"VALIGN="bottom">13. Shell 提示基本知识</TD><TDWIDTH="10%"ALIGN="right"VALIGN="bottom"><AHREF="ch-managers.html"ACCESSKEY="N">前进</A></TD></TR></TABLE><HRALIGN="LEFT"WIDTH="100%"></DIV><DIVCLASS="SECT1"><H1CLASS="SECT1"><ANAME="S1-NAVIGATING-OWNERSHIP"></A>13.14. 所有权和许可权限</H1><P>在本章前部,当你试图转换到根用户的登录目录时,你收到了以下消息: </P><TABLECLASS="SCREEN"BGCOLOR="#DCDCDC"WIDTH="100%"><TR><TD><PRECLASS="SCREEN"><TTCLASS="COMMAND">cd /root</TT><TTCLASS="COMPUTEROUTPUT">bash: /root: Permission denied</TT></PRE></TD></TR></TABLE><P>这是 Linux 安全功能的一个演示。Linux 和 UNIX 一样,是一个多用户系统。文件权限是系统防止故意篡改的一种方法。 </P><P>当你被拒绝权限后要重获访问权的方法之一是使用你在前面学到的 <TTCLASS="COMMAND">su</TT> 命令登录为根用户。这是因为知道根口令的人有完全的访问权。 </P><P>但是切换成超级用户并不总是很方便,我们也不建议你如此,因为使用超级用户身份太容易导致错误或改变重要的配置文件。 </P><P>所有的文件和目录都被创建它们的人所“拥有”。你在你的登录目录中创建了文件 <TTCLASS="FILENAME">sneakers.txt</TT> (请参见<AHREF="s1-navigating-usingcat.html#S2-NAVIGATING-REDIRECTION">第 13.9.1 节</A>),因此 <TTCLASS="FILENAME">sneakers.txt</TT> 属于你。 </P><P>这意味着你可以指定谁可以读取这个文件,谁可以写入这个文件,或者(如果它是程序而不是文本文件的话)谁可以执行这个文件。 </P><P>读取、写入、和执行是许可权限中的三个主要设置。既然用户在他们的帐号创建之时就被编入一个组群,你还可以指定哪些组群可以读取、写入、或执行某一文件。 </P><P>让我们用带有 <TTCLASS="COMMAND">-l</TT>(长)选项(请参阅<AHREF="s1-navigating-ownership.html#GR-NAVIGATING-PERMISS1">图 13-11</A>)的 <TTCLASS="COMMAND">ls</TT> 命令来仔细查看一下文件 <TTCLASS="FILENAME">sneakers.txt</TT>。 </P><P>这里提供了许多细节。你可以看到谁能读取(r)和写入(w)文件,以及谁创建了这个文件(test),所有者所在的组群(test)。请记住,按照默认设置,你的组群名和你的登录名相同。 </P><DIVCLASS="FIGURE"><ANAME="GR-NAVIGATING-PERMISS1"></A><DIVCLASS="MEDIAOBJECT"><P><IMGSRC="./figs/basics/permiss1.png"></P></DIV><P><B>图 13-11. <TTCLASS="FILENAME">sneakers.txt</TT> 的许可权限</B></P></DIV><P>在组群右侧的信息包括文件大小、创建的日期和时间,以及文件名。 </P><P>第一列显示了当前的权限;它有十位。第一位代表文件类型。其余九位实际上是用于三组不同用户的三组权限。 </P><P>例如:</P><TABLECLASS="SCREEN"BGCOLOR="#DCDCDC"WIDTH="100%"><TR><TD><PRECLASS="SCREEN"><TTCLASS="COMPUTEROUTPUT">-rw-rw-r--</TT></PRE></TD></TR></TABLE><P>那三组是:文件的所有者,文件所属的组群,和“其他人”,这是前面没有包括的用户和组群。 </P><TABLECLASS="SCREEN"BGCOLOR="#DCDCDC"WIDTH="100%"><TR><TD><PRECLASS="SCREEN"><TTCLASS="COMPUTEROUTPUT">- (rw-) (rw-) (r--) 1 test test| | | | 类型 所有者 组群 其他人 </TT></PRE></TD></TR></TABLE><P>第一个项目指定文件类型,它可以显示以下几种: </P><P></P><UL><LISTYLE="list-style-type: disc"><P><TTCLASS="COMPUTEROUTPUT">d</TT> — 目录 </P></LI><LISTYLE="list-style-type: disc"><P><TTCLASS="COMPUTEROUTPUT">-</TT>(短线)— 常规文件(而不是目录或链接) </P></LI><LISTYLE="list-style-type: disc"><P><TTCLASS="COMPUTEROUTPUT">l</TT> — 到系统上其它位置的另一个程序或文件的符号链接 </P></LI></UL><P>在第一个项目之后的三组中,你可以看到下面几种类型: </P><P></P><UL><LISTYLE="list-style-type: disc"><P><TTCLASS="COMPUTEROUTPUT">r</TT> — 文件可以被读取 </P></LI><LISTYLE="list-style-type: disc"><P><TTCLASS="COMPUTEROUTPUT">w</TT> — 文件可以被写入 </P></LI><LISTYLE="list-style-type: disc"><P><TTCLASS="COMPUTEROUTPUT">x</TT> — 文件可以被执行(如果它是程序的话) </P></LI></UL><P>当你在所有者、组群、或其他人中看到一个短线(“-”),这意味着相应的权限还没有被授予。再看一看文件 <TTCLASS="FILENAME">sneakers.txt</TT> 的第一列,然后辩别它的许可权限。 </P><TABLECLASS="SCREEN"BGCOLOR="#DCDCDC"WIDTH="100%"><TR><TD><PRECLASS="SCREEN"><TTCLASS="COMMAND">ls -l sneakers.txt</TT><TTCLASS="COMPUTEROUTPUT">-rw-rw-r-- 1 test test 39 3月 11 12:04 sneakers.txt</TT></PRE></TD></TR></TABLE><P>文件的所有者(这个情况下是 test)有读取和写入该文件的权限。组群 test 也有读取和写入 <TTCLASS="FILENAME">sneakers.txt</TT> 的权限。它不是一个程序,因此所有者和组群都没有执行它的权限。 </P><DIVCLASS="SECT2"><H2CLASS="SECT2"><ANAME="CHMOD"></A>13.14.1. chmod 命令</H2><P>使用 <TTCLASS="COMMAND">chmod</TT> 命令来改变权限。这个例子显示了如何使用 <TTCLASS="COMMAND">chmod</TT> 命令来改变 <TTCLASS="FILENAME">sneakers.txt</TT> 文件的权限。 </P><P>带有初始权限设置的最初文件与下面相仿: </P><TABLECLASS="SCREEN"BGCOLOR="#DCDCDC"WIDTH="100%"><TR><TD><PRECLASS="SCREEN"><TTCLASS="COMPUTEROUTPUT">-rw-rw-r-- 1 test test 39 3月 11 12:04 sneakers.txt</TT></PRE></TD></TR></TABLE><P>如果你是这个文件的所有者或者你登录为根用户身份,你可以改变所有者、组群、和其他人的权限。 </P><P>此刻,所有者和组群可以读取和写入文件,组群之外的任何人只能读取文件(<TTCLASS="COMPUTEROUTPUT">r--</TT>)。 </P><DIVCLASS="CAUTION"><P></P><TABLECLASS="CAUTION"WIDTH="100%"BORDER="0"><TR><TDWIDTH="25"ALIGN="CENTER"VALIGN="TOP"><IMGSRC="./stylesheet-images/caution.png"HSPACE="5"ALT="小心"></TD><THALIGN="LEFT"VALIGN="CENTER"><B>小心</B></TH></TR><TR><TD> </TD><TDALIGN="LEFT"VALIGN="TOP"><P>请记住,文件权限是一种安全措施。无论何时你允许其他人读取、写入或执行文件,你都在增加文件被篡改或删除的危险。作为一种基本原则,你应该只给那些真正需要这些文件的人以读写权限。 </P></TD></TR></TABLE></DIV><P>在下面的例子中,你想给每个人以写入文件的权限,因此他们可以读取文件,在其中加注,并保存文件。这意味着你非得改变文件权限中的“其他人”部分不可了。 </P><P>让我们先来看一看这个文件。在 shell 提示下,键入: </P><TABLECLASS="SCREEN"BGCOLOR="#DCDCDC"WIDTH="100%"><TR><TD><PRECLASS="SCREEN"><TTCLASS="COMMAND">ls -l sneakers.txt</TT></PRE></TD></TR></TABLE><P>前面的命令显示了这个文件信息: </P><TABLECLASS="SCREEN"BGCOLOR="#DCDCDC"WIDTH="100%"><TR><TD><PRECLASS="SCREEN"><TTCLASS="COMPUTEROUTPUT">-rw-rw-r-- 1 test test 39 3月 11 12:04 sneakers.txt</TT></PRE></TD></TR></TABLE><P>现在,键入下面的命令: </P><TABLECLASS="SCREEN"BGCOLOR="#DCDCDC"WIDTH="100%"><TR><TD><PRECLASS="SCREEN"><TTCLASS="COMMAND">chmod o+w sneakers.txt</TT></PRE></TD></TR></TABLE><P><TTCLASS="COMMAND">o+w</TT> 命令告诉系统你想给其它人写入文件 <TTCLASS="FILENAME">sneakers.txt</TT> 的权限。要查看结果,再次列出文件的细节。现在,这个文件看起来与下面的输出相仿: </P><TABLECLASS="SCREEN"BGCOLOR="#DCDCDC"WIDTH="100%"><TR><TD><PRECLASS="SCREEN"><TTCLASS="COMPUTEROUTPUT">-rw-rw-rw- 1 test test 39 3月 11 12:04 sneakers.txt</TT></PRE></TD></TR></TABLE><P>现在,每个人都可以读取和写入这个文件。 </P><P>要从 <TTCLASS="FILENAME">sneakers.txt</TT> 中删除读写权限,使用 <TTCLASS="COMMAND">chmod</TT> 命令来取消读取和写入这两个的权限。 </P><TABLECLASS="SCREEN"BGCOLOR="#DCDCDC"WIDTH="100%"><TR><TD><PRECLASS="SCREEN"><TTCLASS="COMMAND">chmod go-rw sneakers.txt</TT></PRE></TD></TR></TABLE><P>通过键入 <TTCLASS="COMMAND">go-rw</TT>,你在告诉系统删除文件 <TTCLASS="FILENAME">sneakers.txt</TT> 中组群和其它人的读取和写入权限。 </P><P>结果与下面的输出相似: </P><TABLECLASS="SCREEN"BGCOLOR="#DCDCDC"WIDTH="100%"><TR><TD><PRECLASS="SCREEN"><TTCLASS="COMPUTEROUTPUT">-rw------- 1 test test 39 3月 11 12:04 sneakers.txt</TT></PRE></TD></TR></TABLE><P>当你想用 <TTCLASS="COMMAND">chmod</TT> 命令来改变权限时,把它们当做速记符号来记忆,因为你实际要做的只是记住几个符号而已。 </P><P>下面是一个速记符号含义的列表: </P><P></P><DIVCLASS="VARIABLELIST"><DL><DT>身份</DT><DD><P><TTCLASS="OPTION">u</TT> — 拥有文件的用户(所有者) </P><P><TTCLASS="OPTION">g</TT> — 所有者所在的组群 </P><P><TTCLASS="OPTION">o</TT> — 其他人(不是所有者或所有者的组群) </P><P><TTCLASS="OPTION">a</TT> — 每个人或全部(<TTCLASS="OPTION">u</TT>、<TTCLASS="OPTION">g</TT>、和 <TTCLASS="OPTION">o</TT>) </P></DD><DT>权限</DT><DD><P><TTCLASS="OPTION">r</TT> — 读取权 </P><P><TTCLASS="OPTION">w</TT> — 写入权 </P><P><TTCLASS="OPTION">x</TT> — 执行权 </P></DD><DT>行动</DT><DD><P
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -