1、第2章 Linux操作基础 第2章 Linux操作基础 2.1 Linux基本操作 2.2 Linux命令 2.3 Linux文件操作 2.4 输入/输出重定向 习题 第2章 Linux操作基础 2.1 Linux基本操作基本操作在使用Linux系统前,首先需要了解和掌握一些基本的操作,包括如何登录和退出系统、如何修改口令以及关闭和重启系统。第2章 Linux操作基础 2.1.1 登录登录Linux系统是一个多用户操作系统,系统的每个合法用户都拥有一个用户账号,包括用户名和口令等信息。任何用户在使用Linux系统前必须先登录系统。登录(login)过程就是系统对用户进行认证和授权的过程。登录时
2、,用户须提供用户名和口令。如果输入有误则不能进入系统。每个Linux系统都有一个特殊的用户,称为超级用户。超级用户的用户名是root。root具有对系统的完全控制权限,非必要时应避免使用root登录。第2章 Linux操作基础 1. 终端与控制台终端与控制台终端(terminal)是指用户用来与系统交互的设备,包括显示器、键盘和鼠标。每个用户都需要通过一个终端来使用系统。根据显示模式的不同,终端分为字符终端和图形终端。字符终端只能显示字符界面,接收键盘输入的命令;图形终端可以支持图形界面显示和鼠标操作。根据连接方式的不同,终端又可分为本地终端和远程终端。本地终端是直接与系统相连的终端,也称为控
3、制台(console),是供系统本地用户使用的终端;远程终端指用户通过网络或其他通信方式远程地使用系统时所用的终端,可能是专门的终端机,更多的是PC机终端。第2章 Linux操作基础 通常一个系统只有一个物理控制台,但Linux系统用软件模拟的方式提供了多至12个虚拟控制台,包括6个字符终端和6个图形终端。虚拟控制台之间可以通过组合键Ctrl+Alt+Fn来切换,其中F1F6对应6字符终端,F7F12对应6个图形终端。系统默认启动6个字符控制台(对应的切换功能键为F1F6)和1个图形控制台(对应的切换功能键为F7)。用户可以根据需要启动其他的控制台。第2章 Linux操作基础 2. 登录方式登
4、录方式Linux系统的登录方式可分为控制台登录和远程登录。1) 控制台登录系统启动后,会在每个启动了的控制台上显示登录界面。Linux允许同一用户在不同的控制台上以相同身份或不同身份多次登录,同时进行几项工作。各个控制台上的交互过程是相互独立的。例如,一个系统管理员拥有root账号和一个普通用户的账号。他可以在一个控制台上以普通用户身份登录进行一些日常工作,在另一个控制台上以root身份登录进行需要特权的系统管理工作。再如,程序员在一个控制台上调试程序,遇到程序因错误而不响应时,可以用同一身份从另一个控制台上登录,终止瘫痪的程序。第2章 Linux操作基础 在字符控制台上登录的方法是:将显示屏
5、切换到一个字符控制台,就会看到系统登录提示符。在“login:”提示符后输入用户名,在“password:”提示符后输入口令。注意:Linux系统严格区分大小写,无论是用户名、口令、文件名等都是如此。登录成功后,系统显示Shell命令提示符,表示用户可以输入命令了。登录过程如下所示:login: cherryPassword: (输入口令,不显示)Last login: Sat May 12 15:50:56 on :0You have mail.$ _第2章 Linux操作基础 注:本书约定,所有示例中,粗体为用户输入的内容,非粗体为系统的输出,括号“( )”内为说明信息。通常,系统启动后会
6、默认地将显示屏切换到第7个控制台,并在其上启动一个图形登录界面。在图形控制台登录的方法是:在相应的输入框里输入用户名和口令并按回车键,系统验证通过后即进入图形桌面环境。第2章 Linux操作基础 2) 远程登录远程用户可以从远程终端登录到Linux系统上。远程登录的用户可以在自己所在的终端上像本地用户一样与系统交互,发布命令、运行程序并得到显示结果。允许远程登录标志着Linux是一个真正意义上的多用户操作系统。系统可以同时为多个远程的和本地的用户服务,对登录用户数也没有限制。从PC机上远程登录Linux系统的方法是:使用Windows的putty或其他虚拟终端软件,通过网络、拨号或串口方式与L
7、inux系统建立通ssh信连接,连通后即可看到Linux系统的登录提示符“login”。第2章 Linux操作基础 2.1.2 修改口令修改口令用户在初次使用系统时,一般是用超级用户为其设置的初始口令登录。登录后应及时修改口令。此后,为安全起见,用户还应定期修改登录口令。口令应具有一定的长度和复杂度,使其不易被破解。口令还应便于记忆,若忘记口令只能找超级用户重新设置。在桌面环境下,可以在系统菜单中找到修改口令的界面(对于Fedora系统来说,它的位置是:系统首选项个人关于我更改密码)。在字符控制台界面修改口令应使用passwd命令。过程如下:第2章 Linux操作基础 第2章 Linux操作基
8、础 $ passwdChange password for user cherry.(current) UNIX password: (输入原来的口令,无显示)New password: (输入新的口令,无显示)Retype new password: (重复输入新的口令,无显示)passwd: all authentication tokens updated successfully.$ _第2章 Linux操作基础 2.1.3 退出退出退出(logout)就是终止用户与系统的当前交互过程。操作完成后及时退出系统是一个良好的习惯,即使是暂时离开也应如此。在桌面上可以找到退出系统的按钮或菜单
9、项。在字符控制台界面,用exit命令或在命令提示符后按Ctrl+d键即可退出系统。(注意:可能需要多次使用exit命令或Ctrl+d键直至退出系统。)退出后,系统回到登录界面,用户可以重新登录系统。第2章 Linux操作基础 2.1.4 系统的关闭与重启系统的关闭与重启当系统需要关机时,必须使用关机命令来关闭系统,不能直接关闭电源。另外,当修改了系统的某一配置,或者安装了新的软件,有时需要重新启动系统使修改生效。在多用户系统中,关闭和重启系统会影响到所有已登录的用户,因而执行此操作需要有root权限。不过,为方便个人应用,Linux系统默认设置为允许登录图形桌面的普通用户关闭和重启系统。在桌面
10、环境下关机或重启很简单,只要点击相应的按钮即可。此外,在控制台上按Ctrl+Alt+Del键也可以重启系统。第2章 Linux操作基础 在字符命令界面要使用命令关闭或重启系统。常用的关机命令是:# shutdown now常用的重启命令是:# reboot在关机命令的执行过程中,系统屏幕上会显示出关机操作的输出信息。要等到关机过程完成后方可切断电源。第2章 Linux操作基础 2.2 Linux命命令令Linux系统为用户提供了一套完备的命令,使用这些命令可以有效地完成各种工作。Linux的命令由Shell程序解释执行,所以也常称其为Shell命令。在使用Linux命令前首先要启动Shell程
11、序。启动Shell的方式有多种,通常的方式是: 在字符终端登录,登录成功后Shell将自动启动;第2章 Linux操作基础 登录到图形桌面上,在菜单中可以找到一个“终端”工具(对于Fedora系统的桌面,它的位置是:应用程序系统工具终端)。“终端”是一个软件仿真的虚拟终端,用于提供一个在图形环境下运行的字符命令行界面。打开“终端”窗口,Shell也随之启动。Shell启动完成后,显示命令提示符,提示用户可以输入命令了。对于普通用户,系统的默认提示符是“$”;对于root用户,系统的默认提示符是“#”。第2章 Linux操作基础 2.2.1 命令的格式命令的格式一条Shell命令是由一到多个项组
12、成的命令行,命令各项之间用空格分隔。命令的一般格式如下:命令名 选项1 选项2参数1 参数2其中,命令名是命令的名称,表示要执行的操作,通常为小写。选项是对命令的特别定义,指出怎么执行这个操作,一般以“-”开始。参数则是要操作的对象或操作数据。方括号括起的部分表明该项是可选的。例如:命令行rm -i abc中,rm是命令名,表示删除文件操作;-i是命令选项,表示删除前要提示用户确认;abc是命令参数,表示要删除的文件的名称。另外,当一个命令带多个选项时,可以只用一个“-”连起来,如rm -i -v abc可以写成rm -iv abc。第2章 Linux操作基础 2.2.2 命令的输入与修改命令
13、的输入与修改Shell命令是通过终端键盘输入的。输入命令时可以使用一些编辑键来修改输入错误,控制命令的执行。表2-1所示是常用的Shell命令行编辑键。第2章 Linux操作基础 表 2-1 常用的 Shell 命令行编辑键 按 键 功 能 Backspace、Delete、Ctrl+h 删除字符 Ctrl+u 删除整行 续行符,用于跨行输入长命令 Tab 命令补齐 、 翻找命令历史记录 、 前后移动光标 第2章 Linux操作基础 Shell的命令有时会很长,熟练地使用按键可以大大减化命令的输入。例如,当要输入的命令名或文件名较长时,只要输入前几个字符,再按一下Tab键,系统便会在可能的命令
14、或文件名中找到相匹配的项,自动补齐其余部分。利用上下箭头键“”和“”可以翻找出前面曾经执行过的命令,避免重复的命令输入。第2章 Linux操作基础 2.2.3 命令的执行命令的执行命令输入完成后,就可按Enter键提交给Shell运行。运行结果通常显示在屏幕上。运行完毕后,Shell重新显示命令提示符,准备接收下一条命令。在命令的执行过程中,如果输出的信息太多太快,可以按Ctrl+s键暂停滚屏。之后按下任意键即恢复滚屏。用户还可以按Ctrl+c键终止命令的运行。表2-2所示为常用的Shell命令运行控制键。第2章 Linux操作基础 表 2-1 常用的 Shell 命令运行控制键 按 键 功
15、能 Enter、Ctrl+j、Ctrl+m 提交命令运行 Ctrl+c 终止命令的运行 Ctrl+s 暂停屏幕输出 第2章 Linux操作基础 2.2.4 命令的分类命令的分类按照实现方式的不同,Shell命令分为内部命令和外部命令两种。内部命令全部由Shell程序自身提供,外部命令由一个个单独的程序实现。内部命令通常对应的是比较简单、使用频繁的功能,而外部命令则往往完成比较复杂或耗时的功能。按照命令的功能分类,Shell命令可以大致分为以下几类: 文件、目录操作; 文本编辑与处理; 备份与压缩;第2章 Linux操作基础 系统监控与管理; 网络通信; 其他。其中,文件、目录操作和文本编辑是每
16、一个Linux用户都要掌握的基本操作。本章将重点介绍常用的文件和目录操作命令,在第3章中介绍文本编辑器的使用,其余命令将在后续章节中陆续介绍。第2章 Linux操作基础 2.2.5 简单命令简单命令以下介绍几个简单而又常用的命令。who命令【功能】显示已登录的用户。【格式】who 选项 am i【选项】-H显示各列的标题。-q显示登录的用户名和用户数。【参数】带有参数am i时,显示自己的登录信息。【说明】显示内容分为4列:用户名、登录的终端名、登录时间和备注。有-q选项时,只输出用户名和用户数。第2章 Linux操作基础 例例2.1 who命令用法示例:$ who root tty1May
17、25 11:39 zhao tty2May 25 09:12 cherry :0May 25 08:45 cherry pts/0May 25 08:45 (:0.0)$ who -q root zhao cherry cherry # users=4$ who am i cherry pts/0May 25 08:45 (:0.0)$ 第2章 Linux操作基础 echo命令【功能】显示命令行中的参数字符串。【格式】echo 选项 字符串【选项】-n输出字符串后光标不换行。【说明】如果字符串中含有空格符,用引号将字符串括起来,echo将按原样输出这个字符串,否则空格将被看做是多个字符串间的分
18、隔符,echo依次输出这些字符串,中间用一个空格隔开。第2章 Linux操作基础 例2.2 echo命令用法示例:$ echo Hello! Hello!$ echo -n Hello! Hello! $ echo$ echo Hello world! Hello world!$ echo “Hello world!” Hello world!$ 第2章 Linux操作基础 第2个echo命令输出字符串后没有换行,使后面的Shell提示符显示在它的输出后面了。第3个echo命令没有参数,它显示了一个空行。第4个echo命令带了2个字符串参数,尽管这两个字符串中间有多个空格分隔,但它们只被看做是
19、参数分隔符而不是字符串的组成部分。echo依次输出了这两个字符串,中间用一个空格分隔。第5个echo命令带了1个字符串参数,它原样输出了这个字符串。date命令【功能】显示、设置系统日期和时间。【格式】date 选项 +格式第2章 Linux操作基础 【选项】-s设置时间和日期。-u使用格林威治时间。【参数】格式是由格式控制字符和其他字符构成的字符串,用于控制输出的格式。当格式字符串中有空格时,要用引号或“”将格式字符串括起来。常用的格式控制字符如下:%r用hh:mm:ss AM/PM(时:分:秒 上午/下午)的形式显示12小时制时间。%T用hh:mm:ss(时:分:秒)的形式显示24小时制时
20、间。%a显示星期的缩写,如Sun。第2章 Linux操作基础 %A显示星期的全称,如Sunday。%b显示月份的缩写,如Jan。%B显示月份的全称,如January。%m用2位数字显示月份,如02。%d用2位数字显示日期,如27。%D用mm/dd/yy(月/日/年)的形式显示日期,如02/27/08。%y用2位数显示年份,如08。%Y用4位数显示年份,如2008。第2章 Linux操作基础 【说明】不带选项和格式参数时显示当前日期与本地当前时间。显示格式是:星期 月 日 时间 时区 年例例2.3 date命令用法示例:$ date Mon May 26 20:04:34 CST 2008$ d
21、ate +Today is %D, now is %r Today is 05/26/08, now is 08:14:36 PM$ date +%B %d, %Y May 26, 2008$ 第1个date命令使用了缺省的显示格式。第2个date命令用了指定的显示格式。第2章 Linux操作基础 cal命令【功能】显示月份和日历。【格式】cal 月份 年份【参数】月份是112的数字,年份是19999的数字。【说明】若带有一个参数,则该参数被解释为年份;若带有两个参数,则第1个参数表示月份,第2个参数表示年份。不带参数时,显示当年当月的日历。例例2.4 cal命令用法示例:$ cal#显示当年
22、当月的日历July 2008Su Mo Tu We Th Fr Sa1 2 3 4 5第2章 Linux操作基础 6 7 8 9 10 11 1213 14 15 16 17 18 1920 21 22 23 24 25 2627 28 29 30 31$ cal 2 2008#显示2008年2月的日历February 2008Su Mo Tu We Th Fr Sa 123 4 5 6 7 8 910 11 12 13 14 15 1617 18 19 20 21 22 2324 25 26 27 28 29$ 第2章 Linux操作基础 2.2.6 联机帮助联机帮助Linux命令多达数千个
23、,其中常用的和比较常用的命令也有几百个,每个命令还有许多选项。不过,用户通常只需掌握几十个常用命令及其常用选项,其他的命令及详细用法可以在必要的时候通过命令的联机帮助查看。获得联机帮助的方式有以下几种。第2章 Linux操作基础 1. -help选项选项许多Linux命令都提供了一个-help选项,执行带有-help选项的命令将显示该命令的帮助信息。例如:date -help将显示date命令的帮助信息。第2章 Linux操作基础 2. man命令Linux系统配有一个联机手册,每条Linux命令都对应有相关的手册页。手册页是对命令的最详细、最权威的解释,因此是学习和使用Linux命令的必不可
24、少的工具。每个命令的手册页主要包括以下几部分内容:NAME命令的名称和功能。SYNOPSIS命令的语法格式,所有可用的选项及参数。DESCRIPTION 命令的详细用法及每个选项的功能。OPTIONS对命令的每个选项的详细说明。查看联机手册页的命令是man(manual)命令。第2章 Linux操作基础 man命令【功能】显示联机手册页。【格式】man命令名【说明】在浏览手册页时,用以下按键翻页、查找和退出:PageUp、b向上翻一页。PageDown、Space向下翻一页。向上滚一行。、Enter向下滚一行。/string在手册页中查找字符串string。n查找下一个字符串。q退出。第2章
25、Linux操作基础 3. info命令命令除了联机手册外,Linux系统还提供了大多数命令的超文本形式的联机文档,可用info命令浏览。info命令与man命令的用法类似,但浏览起来更方便。第2章 Linux操作基础 2.3 Linux文件操作文件操作文件系统是Linux系统的基本组成部分。Linux系统运行所依赖的各种程序和数据都以文件形式存储在磁盘上的文件系统中。文件系统统一存储和管理所有的文件,用文件名来标识各个文件。用户通过文件名来访问和使用文件系统中的文件。文件系统中的所有文件通过目录的形式组织和存放。目录是一种特殊的文件,其内容是该目录下的一组文件(包括子目录)的信息。目录将所有的
26、文件分层分枝地组织在一起,形成文件系统的树型结构。第2章 Linux操作基础 用户使用Linux系统的最基本的操作就是对文件和目录的操作。与Windows系统相同,Linux系统提供了在图形窗口界面操作文件的便利手段。不过,在Linux系统中,最基本和最有效的操作文件的方法是使用命令。因此,用户应该熟练掌握用命令方式操作文件的方法。第2章 Linux操作基础 2.3.1 Linux系统的文件系统的文件1. 文件的命名文件的命名Linux文件名的最大长度是255个字符,通常由字母、数字、“.”、“_”和“”字符组成。以“.”开头的文件名是隐含文件(在通常的文件列表时不显示)。例如:myfile、
27、readme.txt、list_12、backup07-12-04都是常规的文件名,而.profile就是一个隐含文件的文件名。文件名中不能含有斜杠字符“/”和空字符“0”,因为它们对Linux内核具有特殊含义,如“/”表示根目录或路径分隔符。文件名中也不应含有空格符、制表符、控制符以及以下字符,因为它们对Shell具有特殊含义:第2章 Linux操作基础 ; | “ $ ! % & * ? ( ) 与Windows系统的文件名不同,Linux的文件名是区分大小写的,即字母相同,大小写不同的文件名被认为是不同的文件。例如:Readme与readme是不同的文件。第2章 Linux操作基础 2.
28、 文件名通配符文件名通配符1) 模式与通配符当一个命令需要对多个文件进行操作时,逐个写出每个文件名是件很麻烦的事。在这种情况下,使用模式可以简化对文件名的描述。模式的概念我们并不陌生,它是对一类事物的一种概括性描述。例如,在公布中奖号码时,通常用诸如“XXX558”形式的号码来代表所有后3位是558的号码,这就是一个数字模式,它代表了所有与之相匹配的号码。同样,当我们需要指定具有某种特征的多个文件名时,可以用一个表示文件名的字符串模式来描述。字符串模式由普通字符和一些具有特殊含义的字符组成,这些特殊字符称为通配符(wildcard)。通配符不代表某个具体的字符,而是代表多种选择,就像中奖号码模
29、式中“X”的作用一样。这样,用一个模式来表示多个文件名,就不必在命令的参数中写出每个文件的名字了。第2章 Linux操作基础 2) 基本的通配符与匹配规则以下是在构造模式时常用的基本通配符:(1) 问号“?”:匹配任意的单个字符。如模式“abc?”匹配所有以abc开始,后面是2个任意字符的字符串。(2) 星号“*”:匹配0或多个任意字符(隐含文件的前缀“.”字符除外)。如模式“abc*”匹配所有以abc开始的字符串。模式“*abc”匹配所有以abc结尾的字符串,但不匹配“.abc”。(3) 方括号“”:匹配方括号中列出的字符集合中的任何单个字符。方括号与问号相似,只匹配单个字符。不同的是,问号
30、与任何一个字符匹配,而方括号只与括号内字符集合中的一个相匹配。字符集合的描述方法有以下几种:第2章 Linux操作基础 列举:逐个列出各个字符,如abc表示由a、b、c三个字符构成的字符集合。 范围:用“-”描述字符范围,如a-z表示由所有小写字母构成的集合。注意,范围内的字符按升序排列,因而z-a是无效的。可以指定多个范围,如A-Za-z表示所有英文字母。 排除:用“!”排除字符,如!A-Z表示除大写字母之外的所有字符构成的字符集合。例如,模式“abc123”匹配所有以abc开始,后面是1、2或3的字符串;模式“abc0-9”匹配所有以abc开始,后面是一个数字的字符串;模式“abc!0-9
31、”匹配所有以abc开始,后面是一个非数字字符的字符串。第2章 Linux操作基础 例例2.5 设现有的字符串是12个月份的英文单词,它们与以下模式匹配的结果是:模式“Ju?” 匹配以Ju开头,后接两个字符的字符 串,即June和July。模式“?” 匹配长度为3的字符串,即May。模式“*ber” 匹配以ber结尾的字符串,即September、 October、November和December。模式“?ce*”匹配第2个字符是c或e的字符串,即 February、September、October和December。第2章 Linux操作基础 1) 命令参数的模式置换当命令的参数中出现通配
32、符时,Shell并不把该参数直接传递给命令,而是把它看做一个文件名模式字符串。Shell首先将现有的文件逐个与这个模式进行匹配比较,然后用所有匹配的文件名替换命令行中的模式字符串,最后再启动命令执行。因此,当命令执行时,它得到的实际参数是所有匹配的文件名的序列(可以是0n多个文件名,中间用空格分隔)。以echo命令为例,它的功能是显示参数字符串。当其参数字符串中有通配符时,它显示的不是参数字符串本身,而是与该模式字符串相匹配的所有文件名,如例2.6所示。第2章 Linux操作基础 例例2.6 设现有的文件是hoc、hoc.c、hoc.h、hoc.o、init.c、init.o、math.c、m
33、ath.o、makefile,则命令echo *.c的输出结果如下:$ echo *.c#实际运行echo hoc.c init.c math.choc.c init.c math.c$ 这个echo命令的输出不是参数字符串“*.c”,而是所有以.c结尾的文件名。这是因为当完成模式替换后,这个echo命令的实际运行参数是“hoc.c init.c math.c”。第2章 Linux操作基础 例例2.7 设当前的目录下存放了一部书稿的所有文件。书稿分为12章,每章分为若干节,每节对应一个文件,文件的命名规则为“ch章号.节号”,如ch1.1,ch1.2,ch1.3,.,ch2.1,ch2.2,.
34、,ch12.1,ch12.2,.,则以下echo命令执行的结果分别是:$ echo ch*显示全书的所有文件名;$ echo ch3.*显示第3章的所有文件名;$ echo ch?.*显示19章的所有文件名;$ echo ch?.*显示1012章的所有文件名;$ echo ch146-8*显示第1、4、6、7、8、10、11、12章的所有文件名;$ echo ch*.1显示所有章的第1节的文件名。第2章 Linux操作基础 3. 文件的类型文件的类型常规意义上的文件是那些用于保存数据的文件,如由ASCII字符构成的文本文件、由应用程序产生的数据文件(电子表格、数据库表格、图片、视频等)以及由编
35、译程序生成的可执行程序文件等。此外,Linux系统还定义了一些特殊类型的文件,它们在系统中具有特殊的用途。Linux系统支持以下文件类型(括号内是表示该类型的字符): 普通文件(-):普通意义上的文件,用于保存文本、数据或程序等信息。第2章 Linux操作基础 目录文件(d):一种特殊文件,用于构成文件系统的树型结构。 设备文件(c、b):Linux系统将设备看做是一种特殊文件,设备文件分为字符设备文件(c)和块设备文件文件(b)两类。 符号链接文件(l):一种特殊文件,它的内容是到另一个文件的链接,用于实现文件的共享。 管道文件(p):一种特殊文件,用于在进程间传递数据。第2章 Linux操
36、作基础 4. 文件的归属关系文件的归属关系Linux是一个多用户的系统,每个用户都要在系统中存放自己的文件。为了管理的需要,系统要能够区分文件的归属关系。Linux系统中的每个文件都有两个描述其归属关系的属性,这就是属主(owner)和属组(group owner)。文件的属主就是文件的所有者,通常是建立文件的用户,用其用户名标识。例如:用户zhao建立的文件的属主就是zhao。为便于管理,Linux系统将用户划分为用户组。文件的属组就是文件属主所在的用户组,用组名标识。例如:用户zhao所在的用户组是guest,则他所建立的文件的属组就是guest。第2章 Linux操作基础 5. 文件的访
37、问权限文件的访问权限在多用户的系统,文件的保密和安全性至关重要。为防止文件被非法地使用或破坏,系统使用权限来限制用户对文件的访问。1) 文件的访问权限文件权限用于规定对于一个文件所能进行的操作。通常访问文件的操作分为读(显示浏览文件内容)、写(修改文件的内容)和执行(运行可执行文件)。相应的,Linux对文件定义了几种访问权限,见表2-3。第2章 Linux操作基础 表 2-3 文件和访问权限及表示 访问权限 字符表示 含 义 读权限 r 可读取其内容 写权限 w 可修改其内容 执行权限 x 可执行其内容 无权限 - 不能做相应的操作 第2章 Linux操作基础 当对一个文件执行一个未被授权的
38、操作时,系统会拒绝执行,并显示“Permission denied”的消息。第2章 Linux操作基础 2) 文件的权限范围在Linux系统中,一个文件可能会被多个用户使用。如果不加区分地对所有用户设置相同的文件访问权限,则难以满足不同用户对此文件的不同需求和权利。因此,Linux系统采用了更加细致的权限分配方式,即允许对不同类型的用户赋予不同的文件访问权限。Linux系统将每个文件的用户分为属主(user)、组用户(group)和其他人(other)3类,权限范围的划分及字符表示法如表2-4所示。在为文件设置访问权限时可以针对不同的权限范围分别设置。注意:root用户不受访问权限的限制。第2
39、章 Linux操作基础 表 2-4 文件的权限范围划分及表示 权限范围 针对的用户 字符表示 属主 文件的拥有者,通常是创建文件的用户 u 组用户 文件的属主所在的用户组中的其他用户 g 其他人 除文件属主和组用户外的其他系统用户 o 所有人 以上 3 类用户的总和 a 第2章 Linux操作基础 3) 文件类型与权限表示法文件的类型与权限是文件的重要属性,通常采用字符表示法表示,即用10个字符的字符串表示文件的类型和权限,规则如图2-1所示。其中,第1个字符表示文件的类型,取值是-、d、c、b、l和p,分别代表普通文件、目录、字符设备、块设备,符号链接和管道。后9个字符表示文件的访问权限,以
40、3位为一组,分别表示u、g和o的读、写和执行权限。若某权限范围的用户有某权限,则对应的位上有该权限字符r、w或x,没有该权限则用“-”表示。第2章 Linux操作基础 图2 1 文件类型与访问权限的表示第2章 Linux操作基础 例如,某文件的类型和权限字符串是drwxr-x-,表明这是一个目录文件,它的属主对应的3位字符是rwx,表示属主有读、写和执行权限;组用户对应的3位字符是r-x,表示组用户对该目录有读和执行权限,没有写权限;其他人对应的3位字符是-,表示他们对该目录没有任何权限。又如,某文件的类型和权限字符串是-rwx-x-x,表明这是一个普通文件,它的属主有读、写和执行权限;组用户
41、及其他人对该文件只有执行权限。文件的访问权限还有另一种表示方法,就是数字表示法。规则是:用数字1或0来表示权限字符,有相应权限的位为1,无权限的位为0,形成一个9位长的二进制数,用3位八进制数字来表示。例如:字符表示是rwxr-x-,数字表示就是750;字符表示是rwx-x-x,数字表示就是711。第2章 Linux操作基础 4) 文件权限的作用文件权限限制了对文件的访问操作。正确地设置文件权限可以允许正常的访问操作,同时阻止不期望的访问。表2-5显示了访问权限对普通文件和目录文件的限制作用。第2章 Linux操作基础 表 2-5 对文件和目录的访问权限的作用 访问权限 字符表示 对文件的访问
42、限制 对目录的访问限制 读权限 r 可读取其内容 可列出其中的文件列表 写权限 w 可修改其内容 可在其中建立、删除文件,或改文件名 执行权限 x 可执行其内容 可进入该目录,可访问该目录下的文件 第2章 Linux操作基础 访问权限对普通文件的作用容易理解,需要注意的是权限对目录的限制作用。目录其实也是一个文件,只不过它的内容不是记录普通数据,而是其下的文件的列表数据。因此,显示目录中的文件列表就是对目录文件的读操作,改变目录下的文件列表(新建、删除、改名等)就是对目录文件的写操作,进入目录或其下级子目录就是对目录文件的执行操作。因此,对文件的删除权由其所在的目录的w权限决定(当然还要有x权
43、),而不是文件本身的w权限决定的。在这一点上,Linux系统是不同于Windows系统的。第2章 Linux操作基础 另外,Linux系统规定非空目录不能删除。而空目录等同于文件,它的删除权取决于它的上一级目录的w权。下面的例2.8说明了目录的访问权限对删除文件的限制作用。例例2.8 设有如下3个目录及其各自下属的3个文件,这些文件的删除权如下:目录1:drwxr-x-x文件1:-rwxr-xr-x 目录的属主可删除目录2:drwxrwxrwx文件2:-rwx- 任何人可删除目录3:dr-x-文件3:-rwxr-xr-x 只有目录属主可看到,任何人不可删第2章 Linux操作基础 目录1的权限
44、为rwxr-xr-x,则目录的属主可以完全控制这个目录,其他人只能进入目录和显示文件列表,只有目录属主有权删除文件1。目录2的权限为rwxrwxrwx,即所有人可完全控制该目录。即使它下面的文件2的权限为rwx-,阻止了除属主之外的人访问这个文件,但他们却可以删除它。他们还有权在此目录中建立新文件、删除目录下的任意文件(包括空目录)和更改目录下的任意文件的文件名。所以在Linux中存放文件小心谨慎,不要把重要文件放在所有人可完全控制的目录里,即使这个文件的权限是0。第2章 Linux操作基础 目录3的权限为r-x-,则只有目录属主可以进入目录和看到目录中的文件列表,所有人(包括属主)都不能在目
45、录中建立、删除文件或改文件名。即使它下面的文件3赋予其他人读和执行的权限,他们因为无法进入和使用这个目录,也就无法读和执行这个文件。这是用于保管重要文件的高安全度限制。第2章 Linux操作基础 6. 新建文件的默认权限新建文件的默认权限当新建一个文件或目录时,系统会为其设置最初的权限。文件的初始权限由文件创建掩码(creation mask)决定。掩码是一个9位二进制数字,通常用八进制数字表示,如022。掩码中的位与权限字符串相对应,掩码中为1的位限制对应的权限位的权限。例如:掩码022表示组用户和其他人没有w权限,对其他权限不做限制。文件创建时的默认权限有以下几种情况:第2章 Linux操
46、作基础 1) 可执行文件通过编译程序生成的可执行文件,它的默认权限是777-掩码。例如:若掩码为022,则新文件的权限就是755。2) 非可执行文件对于非可执行文件(如文本文件、数据文件等),在创建时默认是没有x权限的,对这类文件的x权限需要显式地赋予,即通过chmod命令将其改为可执行文件。因此新建文件的权限是(777-掩码)& 666。这里的&是“按位与”运算,即先用777-掩码求出权限,再滤掉所有x位。例如:若掩码为022,则新文件的权限就是(777-022)& 666 = 644;若掩码为003,则新文件的权限就是(777-003)& 666 = 664。第2章 Linux操作基础 3
47、) 目录同可执行文件一样,新建目录的默认权限是777-掩码。若掩码为022,则新目录的权限就是755。用户登录时,系统自动地为其设置了掩码,通常是022。用户可以用命令修改掩码,从而改变新建文件的默认权限,使之具有合适的安全性限制。第2章 Linux操作基础 7. 文件的其他属性文件的其他属性除了文件名、文件类型、归属关系和存取权限外,文件还有其他一些属性,包括:(1) 文件的时间标签,用于记录文件的时间属性,分为: 修改时间(modify time):文件内容被修改的最后时间。 访问时间(access time):文件最近一次被访问的时间。 变更时间(change time):文件属性变更的
48、最近时间。(2) 文件的大小,即文件所占用的字节数。(3) 文件的链接数,即此文件硬链接的数目。第2章 Linux操作基础 2.3.2 Linux系统的目录系统的目录计算机系统中存有大量的文件,为了有效地组织和管理这些文件,系统将文件分门别类地纳入目录中保存。目录好比是一个文件夹,用来容纳文件。目录中也可以包含子目录,形成层层嵌套的树型结构。在Linux系统中,目录是一种特殊的文件,其内容是目录中所包含的文件和子目录的列表。在访问一个文件时,需要先找到它所在的目录,再通过目录中记录的文件信息找到文件。第2章 Linux操作基础 1. 目录结构目录结构Linux的文件系统采用了树形目录结构,如图
49、2-2所示。文件系统的根目录称为root目录。根目录下建有多个子目录,每个子目录下可以存放文件或下一级子目录,这样延伸下去,形成一个分层分枝的树形结构。root为树的“根”节点,目录是树中的“分枝”节点(图中用矩形表示),而文件则是树中的“叶子”节点(图中用椭圆表示)。系统安装完成后,文件系统的初始目录结构已经建立起来。用户也可以按需要创建自己的目录,实现有组织地、分层分类地存放文件。第2章 Linux操作基础 图2 2 Linux文件系统目录结构示意图第2章 Linux操作基础 2. 根目录与当前目录根目录是一个特殊目录,用“/”表示。它是整个文件系统的唯一的根,系统中的所有文件都在它及其下
50、属的子目录中。用户在系统中工作时,始终处在某个目录之中,此目录称作当前目录。用户可以通过改变当前目录来变换其在文件系统中的位置。当前目录用“.”表示。当前目录的父目录用“.”表示。每个目录(包括空目录)中都至少有“.”和“.”这两个隐含文件。但根目录中的“.”和“.”都是指其自身。第2章 Linux操作基础 3. 路径路径路径是文件在目录树中所处的位置。在对文件进行操作时,除需指明文件名外,还须指明该文件的路径。路径的表达方法是将若干个目录名连结起来,中间用斜杠“/”分开。根据起点的不同,路经分为绝对路经和相对路经两种。绝对路径是从根目录沿目录树到文件所在目录的路径。绝对路径都是以“/”开头的