收藏 分享(赏)

05文件和目录的管理.ppt

上传人:hyngb9260 文档编号:8314061 上传时间:2019-06-19 格式:PPT 页数:90 大小:251KB
下载 相关 举报
05文件和目录的管理.ppt_第1页
第1页 / 共90页
05文件和目录的管理.ppt_第2页
第2页 / 共90页
05文件和目录的管理.ppt_第3页
第3页 / 共90页
05文件和目录的管理.ppt_第4页
第4页 / 共90页
05文件和目录的管理.ppt_第5页
第5页 / 共90页
点击查看更多>>
资源描述

1、第五章 文件和目录的管理,本章学习要求,掌握文件和目录的基本操作 掌握文件和目录的权限设置 掌握重定向和管道的操作 掌握压缩和解压文件,5.1 文件名每个文件都有一个名字,即文件名。文件名的最大长度与文件系统的类型有关。Linux系统要求文件名的长度不超过255个字符。 5.1.1 命名字符在Linux系统中,用户在给文件命名时,几乎任何字符都可以作为文件名,但一般选择并使用以下字符的组合: 大小写字母(A-Za-z) 数字(0-9) 下划线(_) 英文名点(.) 英文逗号(,),由于目录是一种特殊类型的文件,因此,目录的命名也应同样遵循文件名的命令规则。在Linux系统中,根目录是一个特殊的

2、目录,它使用字符“/”来表示。其它文件不能将“/”作为文件名,也不能将它作为文件名中的一个字符,但可以用在文件的路径中,因为“/”是目录间的分隔符。,5.1.2 文件的扩展名文件的扩展名是指文件名中跟在句点后的部分,它是用来描述文件类型的。Linux系统下的一些软件包或程序都是与特定的扩展名相关联的,在大多数情况下,扩展名是可选的,灵活地使用扩展名可以帮助用户了解文件的类型。在文件名中,可使用多个英文句点,如php-5.2.4.tar.gz文件。,5.1.3 隐藏文件在Linux系统中,以英文句点开头的文件名称为隐藏文件。用户使用不带任何参数的ls命令显示文件列表时,以英文句点开头的文件不会被

3、显示,但使用ls -a就可以显示所有文件,包括以英文句点开头的文件名。,在Linux系统中,初始化文件的名称通常以英文句点开头,这样可以避免目录列表的混乱。另外,在每一个目录中,都有两个特殊的目录,.和目录,这两个特殊的目录也是不可见的。用户在对文件或目录进行命名时,应注意以下几点内容:Linux要求同一个目录下的文件名不能同名,而不同目录下的文件可以重名。Linux系统区分大小写字母,在同一个目录下,test、Test和TEST代表3个不同的文件。用户在命名时,文件名要尽可能有意义。如用户或其他用户看到文件名时,就能从文件名来大致判断该文件的内容或类型等。,文件名中不要包含空格。虽然文件名中

4、可以使用空格,但不提倡这样做。因为空格是命令行中必须使用的字符。当遇到要使用空格时,可用英文句点(.)、下划线(_)来代替。文件名不要以单连字符(-)或双连字符(-)开头。因为单连字符或双连字符常在命令行上表示参数的内容。在命名时,不要使用不可见的特殊字符。,5.2 文件的操作,5.2.1 显示文件ls(list)命令是显示指定目录下的文件。默认情况下,ls按照文件名的字母表顺序显示文件的信息。ls是Linux系统中使用最频繁的命令之一,也是最基础的一个命令。该命令的语法格式如下:ls optionsfile-list不带任何参数的ls命令只显示工作目录下的可见文件(不以英文句点开头的文件)。

5、file-list可以是一个或多个普通文件、目录文件或设备文件的路径名列表,也可以是通配符。当指定目录时,ls只显示该目录中的文件;当指定为文件时,ls将查找该文件是否存在于指定的目录中。,ls命令中的常用options如下: -a,-all 显示所有的文件和目录,包括以.开头的文件。-a也可用-all代替,以下类同。 -l显示文件的详细信息,如文件的所有者、同组用户、文件的大小、最近修改的时间等。 -h,-human-readable从K(千字节)、M(兆字节)和G(千兆字节)中选择合适的单位显示文件的大小。该选项仅可以与-l选项一起使用。 -r,-reverse以相反的顺序显示文件名列表。

6、,R,-recursive递归显示子目录中的文件。 -F,-classify该选项使得每个目录后显示/;每个可执行的文件后显示*;每个符号链接后显示。 -i,-inode显示每个文件的inode号。当与-l选项一起使用时,将在第1列显示inode号,其它内容将向右移动一列。 -help显示ls的帮助信息。 -version查看ls命令的版本号。,ls命令使用选项-l将分行列出文件的详细信息,如下例所示。每行由7列构成,各列对应的含义为:文件的类型和权限、硬链接数、文件的所有者(也称属主)、同组用户、文件的大小(以字节计算)、文件的最近修改时间。下面将对每1列的内容进行介绍:,rootlocal

7、host #ls -l total 36 -rw-r-r- 1 root root 1129 Apr 30 08:58 anaconda-ks.cfg -rw-r-r- 1 root root 23563 Apr 30 08:55 install.log -rw-r-r- 1 root root 3608 Apr 30 08:54 install.log.syslog drwxr-xr-x 2 root root 4096 Jun 9 21:25 test第一行“total 36”表示所列出文件总共使用磁盘的空间为36K。,第1列表示文件的类型和权限,它包含10个字符,第1个字符描述文件的类型

8、。文件类型如表5-2所示。 表5-2 文件类型,后面的9个字符为文件的访问权限。这9个字符又分为3组,这3组字符串分别表示文件的所有者、同组用户、其他用户对文件的访问权限。每组由3个字符组成,依次表示为对文件的读(r表示)、写(w表示)和执行(x表示)权限。当用户没有相应的权限时,该权限所对应的位置使用“-”来表示。在每组的第3个字符位,除为x和-外,有时还会出现s或S。若为s,说明文件拥有suid/guid权限和执行权限;若为S,则表明拥有suid/guid权限而没有执行权限。,第2列表示文件的硬链接数,硬链接请参考ln命令内容。第3列和第4列表示文件的所有者和同组用户。第5列以字节为单位显

9、示文件的大小。如果显示的是设备文件的信息,则显示主设备号和次设备号;如果显示的是目录的信息,则显示目录的大小,而不是目录内文件的大小。使用-h选项(即ls -lh)系统将自动选择以K、M、G之一为单位显示文件的大小。第6列和第7列表示文件的最近修改时间和文件名。,5.2.2 查找文件find命令为查找文件命令。find命令的语法格式如下:find path expressionpath用来指定find命令查找文件的路径。当find查找某个目录时,它将查找该目录下所有的子目录。当没有给出path时,find命令将只查找当前目录。expression为条件内容。find对path中的每个文件进行测

10、试,查找符合expression条件的文件,当没有给出expression参数时,该参数默认为-print。expression内的每个元素都是一个单独的参数。参数与参数之间用空格分隔,每个括号、叹号、条件等其它元素的两侧都必须是空格。,-name-name选项是find命令最常用的选项。可以使用某种文件名模式来匹配文件,记住要用双引号将文件名引起来,若文件名中没有空格或其它特殊字符时,也可不用双引号将文件名引起来。若要在当前目录及子目录中查找所有扩展名为txt的文件。命令用法如下: rootlocalhost #find . -name “*.txt“ 若要在当前目录及子目录中查找以一个大写

11、字母开头的文件。命令用法如下: rootlocalhost #find . -name “A-Z*“,-size按照文件的大小来查找文件,文件的大小可以以块(block)为单位,也可以以字节(byte)为单位。以字节为单位计量文件大小时表达形式记为Nc;以块为单位计量文件大小时只用数字表示即可。如在当前目录下查找文件大小大于1024字节的文件,命令用法如下: rootlocalhost #find . -size +1024c命令中的“-”表示要查找小于指定大小的文件;“+”表示大于指定大小的文件;如果命令中没有“+”也没有“-”,表示查找指定大小的文件。,-exec,-ok在查找文件时,当匹

12、配到一些文件后,用户可能希望进行某些操作,这时就可以使用-exec选项。一旦find命令匹配到了相应的文件,就可以用-exec选项中的命令对其进行操作,如使用这一选项可以查找旧文件并将它们删除。-exec选项后跟要执行的命令,然后是一对,一个空格和一个,最后是一个分号。如查找/etc目录下的普通文件并显示文件的详细信息。命令用法如下: rootlocalhost #find /etc -type f -exec ls -l ;,使用find命令查找系统中所有扩展名为log的文件,并删除,命令用法如下: rootlocalhost #find / -name “*.log“ -exec rm -

13、f ;在shell中删除文件是一项非常危险的操作,这时可以使用-ok选项,在删除文件之前,提示用户,按y或Y键删除文件,按n或N键不删除文件。命令用法如下: rootlocalhost #find / -name “*.log“ -ok rm ;find命令是一个非常优秀的工具,它可以按照用户指定的要求来匹配文件,并可以使用-exec或-ok完成查找后要执行的动作。find命令也是非常复杂的一条命令,它常用在shell的编程环境中。,5.2.3 搜索文件的内容grep为搜索文件内容的命令。该命令的语法格式如下: grep options pattern file-list,grep可以在一个或

14、多个文件中按行搜索pattern。其中,pattern可以是简单的一个字符串,也可以是正则表达式。该命令可以从命令行上指定的文件获取输入,也可以从标准输入获取输入。,不带任何选项的grep会把找到的包含匹配pattern的行发送到标准输出。当在命令行上指定多个文件时,grep将在显示的每行前标上文件名和冒号。file-list是文件列表,文件列表选项是可选的,并用空格分隔多个文件。,正则表达式(RE,Regular Expression)是使用一个字符串来描述一个特征,然后去验证另一个字符串是否符合这个特征。,表5-3 正则表达式中的基本元字符集,在使用grep命令时,options即选项部分

15、一般都不用,grep命令常与管道操作符(|)配合使用。,5.2.4 显示文本文件的内容,显示文本文件内容的命令有cat、more、less、head和tail。,more和less为分屏显示文本文件的内容;head为显示文本文件前几行内容,不带行参数时,只显示前10行的内容;tail为显示文本文件的后几行内容,不带行参数时,只显示文本文件的最后10行内容;而cat为显示文本文件的全部内容,当文本文件有很多行时,用户将只能看到最后一屏的内容。,head和tail命令可以指定显示的行数。命令后跟连字符-和数字即可指定显示的行数。,显示文本文件readme的前3行内容。命令格式如下: rootloc

16、alhost #head -3 readme,5.2.5 复制文件cp(copy)即为复制文件的命令。它是常用的文件操作命令之一,其命令的语法格式如下: cp options source-file destination-file cp options source-file-list destination-directory,source-file为cp要复制文件的路径名(也称源文件),destination-file为副本文件的路径名(也称目标文件)。source-file-list为cp要复制文件的路径名列表,destination-directory为cp存放副本文件的目录。使用第

17、2种格式,cp将使副本文件名与原文件名同名。,cp命令的常用options内容如下: -i,-interactive当用户使用cp命令复制文件前,若destination-file存在,当用户执行cp命令时,系统会要求用户进行确认,如果用户这时按下y或Y键,原文件将会被覆盖;如果用户按下n或N键,source-file将不进行复制操作。当cp命令不带任何选项时,默认为-i选项。,-f,-force-f选项与-i正好相反,当destination-file存在时,系统不进行任何提示,原文件将被强行覆盖。 -R,-recursive递归复制子目录下的文件。默认情况下cp命令只复制目录下的文件(不包

18、括子目录)。当需要将目录下的所有文件(包括子目录及子目录下的文件时)进行复制时,应使用-R选项。 -a,-archive在复制文件时,尽可能多地保留source-file中的属性。用户在使用cp命令时,source-file可使用通配符。,在当前目录下备份file为file.bak。 rootlocalhost #cp file file.bak将/etc/rc.local文件复制到当前目录。 rootlocalhost #cp /etc/rc.local .复制/etc目录下的所有文件(包括子目录及子目录下的文件)到/test目录,并且若目标文件相同时,强行进行覆盖操作。 rootlocal

19、host #cp -R -f /etc/* /test,5.2.6 删除文件rm(remove)是删除文件系统中的文件及整个目录的命令。使用rm命令删除文件或目录时,可以使用通配符。其命令的语法格式如下: rm options file-list,rm命令的常用options如下: -f,-force不进行询问,直接删除用户不具有写权限的文件。 -i,-interactive删除每个文件时进行询问。rm不带任何选项时,默认为-i。 -r,-recursive递归删除指定目录的内容,包括所有子目录和目录本身。使用rm命令时,谨慎使用该选项。,下例为删除当前目录下的文件test和强行删除/home

20、/pubs/temp目录及目录下的所有文件。 rootlocalhost #rm test rootlocalhost #rm -rf /home/pubs/temp,5.2.7 重命名或移动文件重命名或移动文件的命令为mv(move)。其命令的语法格式如下: mv options existing-file new-filename mv options existing-file-list directory mv options existing-directory new-directory,第1种为使用指定的新名字对某个文件重命名;第2种为移动一个或多个文件到指定的目录下;第3种为重

21、命名目录。,mv命令常用options内容如下: -u,-update若mv要重写某个已存在的文件时,该选项在执行时会比较源文件与目标文件的修改时间,如果目标文件具有更近的修改时间,mv命令将不会被执行。 -i,-interactive当mv要重写已存在的目标文件时,该选项会给用户提示信息。若用户按下y或Y键,mv就会重写目标文件,否则,mv命令将不会被执行。,-f,-force如果mv命令要重写一个已经存在的目标文件,且用户不具有对该文件的写权限,-f选项在重写该文件时将不给出提示信息。,mv的命令举例如下: 将当前目录下的文件test更名为test.bak。 rootlocalhost #

22、mv test test.bak 将当前目录下的文件test.bak移动到/etc目录下,并命名为tools。 rootlocalhost #mv test.bak /etc/tools 将/soft目录更名为/tools目录。 rootlocalhost #mv /soft /tools,5.2.8链接链接表示指向文件的指针。当用户使用工具(如vi)创建文件时,对应目录下就会产生一个指向该文件的指针,该指针将文件名和磁盘的某个位置建立关联。,在Linux系统中,链接分为两种:硬链接和符号链接(也称软链接),创建链接的命令为ln(link)。下面将分别对它们进行介绍:,不带任何选项的ln命令可

23、为已经存在的文件创建附加的硬链接,其语法格式如下: ln existing-file new-link将当前目录下的notepad文件创建一个新链接,且名为/share/program/notice。 rootlocalhost #ln notepad /share/program/notice,由于所有的硬链接文件都只对应一个文件,因此,所有链接文件的属性信息,如访问权限、所有者、文件的修改时间等都相同,只是文件名不同。当其中一个用户对链接文件进行修改后,与该文件创建的链接文件的内容都会被修改,因为链接文件的指针都是指向磁盘的同一个位置。文件在创建时,系统自动为该文件创建一个硬链接,并指向该

24、文件存放在物理磁盘上的位置。当为某个文件创建一硬链接时,该硬链接同样指向原文件存放在物理磁盘上的位置,并且其属性(如所有者、同组用户、权限等)、inode号都完全相同。用户可使用ls -i查看文件的inode编号,若某几个文件使用相同的inode编号,则说明它们都是指向同一个文件的硬链接。,rootlocalhost #ls -l -i notepad /share/program/notice273814 -rw-r-r- 2 root root 8 Jun 15 14:58 notepad273814 -rw-r-r- 2 root root 8 Jun 15 14:58 /share/p

25、rogram/notice ls查看硬链接产生的文件与原文件的状态信息完全一致。,符号链接(symbolic link)通常也被称为软链接。,符号链接是基于硬链接的局限性而引入的。如用户无法创建某个目录的硬链接,但可以创建目录的符号链接;文件的所有硬链接都必须在同一个文件系统中,而符号链接则可以指向任何文件,无论这些文件处于文件结构中的哪个位置。,创建符号链接的命令为带-s或-symbolic参数的ln命令。若使用ls -l查看文件时,符号链接文件将显示链接的名称和指向的文件名。如下所示。 rootlocalhost #ln -s readme readme.txt rootlocalhost

26、 #ls -l -i 273812 -rw-r-r- 1 root root 7 Jun 15 14:56 readme 273813 lrwxrwxrwx 1 root root 6 Jun 15 14:56 readme.txt - readmels查看符号链接产生的文件与原文件的大小、修改时间、权限、inode编号都不同。即符号链接与原文件具有不同的状态信息。,5.3 目录操作,5.3.1 工作目录用户在登录到Linux系统并执行操作时,每时每刻都在某个目录中,此目录就称为工作目录或当前目录。当用户刚登录到Linux系统时,其所在的目录(用户主目录)就是其工作目录。,5.3.2 用户主目

27、录在Linux系统中,每个用户都有自己的主目录(包括root用户。用户刚登录Linux系统时所在的目录就是该用户的主目录,主目录一般与用户名相同。对于普通用户,主目录的位置一般位于/home/之下,而对于root用户,其主目录是/root。,5.3.3 系统目录,Linux文件系统结构,/:根目录。它是所有文件(包括目录)的祖先。/bin:该目录下为基本命令的二进制(binary)文件。包含启动系统和在单用户模式下运行所需的文件,如常用的命令ls、cp、mv、rm等。/boot:该目录下存放有引导系统加载的静态文件,包含引导系统启动的大多数文件。如GRUB的配置信息,initrd程序映像文件等

28、。/dev:该目录下存放有本机的设备文件,包含本机所有外围设备的文件,如打印机、磁盘驱动器等。但用户应了解,在该目录下的这些文件并不是设备的驱动程序,它和windows系统不一样。在Linux系统中,用户访问本机的设备就是访问其对应的文件。,/etc:该目录下存放有系统的全部配置文件,包括管理文件、配置文件和系统文件等。这个目录下几乎存放了Linux系统全部的配置文件。/home:用户主目录的父目录。如root创建了一用户pubs,则pubs用户的主目录即为/home/pubs/。/sbin:该目录下存放有系统的基本的二进制系统文件,用于系统管理的工具都存放在/sbin或/usr/sbin目录

29、下。其中,/sbin中包含有引导进程所需的工具,/usr/sbin包含有系统启动运行后使用的工具。/lib:该目录下存放有共享库和内核模块文件,它是library的缩写。几乎所有的应用程序都会用到这个目录下的共享库文件。,/tmp:临时文件夹,它用于存放临时文件。/root:该目录为root用户的主目录。 /proc:可以在该目录下获取系统的信息,这些信息存放在内存中,并由系统启动时产生,如CPU、网络中的路由信息等。/usr:该目录下存放有包含系统所需信息的子目录,这些子目录中的文件不常改动,可由多个系统共享。/var:该目录下的子目录包含有系统运行时内容会改变的文件,这些文件多数是临时文件

30、,如系统日志文件、假脱机文件和用户邮箱文件等。,5.3.4 创建目录,创建目录的命令为mkdir(make directory)。该命令的语法格式如下: mkdir option directory-listdirectory-list为mkdir要创建的一个或多个目录的路径名列表。,mkdir的常用选项如下: -p,-parents该选项为创建目录及其父目录,该父目录必须是子目录路径名中不存在的目录。,例:在/下创建一个/soft目录,并在/soft目录下再创建一个php目录,即使用命令如下: rootlocalhost #mkdir /soft rootlocalhost #mkdir /

31、soft/php以上的两条命令可使用一条带-p选项的mkdir命令代替。使用命令如下所示: rootlocalhost #mkdir -p /soft/php带-p选项的mkdir命令适合于一次创建一个很深的子目录。,5.3.5 删除目录,删除目录的命令为rmdir(remove directory)。在工作目录下,用户无法删除当前工作目录,并且当要删除的目录为非空目录时,应使用rm命令将该目录下的所有文件都删除(包括以.开头的隐藏的文件,但不包括.和),然后再使用rmdir命令删除该目录。rmdir命令的语法格式如下: rmdir directory-listdirectory-list为r

32、mdir要删除的空目录列表,并用空格分隔目录名列表。,例:删除空目录/test。使用命令如下所示: rootlocalhost #rmdir /test,在Linux系统中,除使用rmdir命令删除目录(空目录)外,还可以使用带-r选项的rm命令删除目录(非空目录),即删除目录中包含的子目录和文件,还有目录本身,但使用rm -r命令时要小心谨慎。,删除非空目录/soft。若使用rmdir命令执行删除非空目录,操作可能需要执行多条命令才能完成,但使用rm -rf的话,只需要一条命令就可以完成。使用命令如下所示: rootlocalhost #rm -rf /soft,5.3.6 改变目录改变当前

33、目录的命令为cd(change directory)。其语法格式如下: cd directory,directory为改变到所指定的目录。如果没有指定目录,就返回到用户主目录。cd命令使用最简单,但使用也最频繁。,例:cd常用命令 返回用户主目录,cd命令不指定目录。 rootlocalhost #cd 返回用户主目录,cd命令指定目录为即可。 rootlocalhost #cd 返回上一级目录,即父目录。 rootlocalhost #cd 返回到根目录。 rootlocalhost #cd /,5.3.7 显示当前目录,显示当前目录的命令为pwd。该命令用于显示用户当前所在的目录(以绝对路

34、径形式表示)。执行pwd命令的格式如下所示: rootlocalhost #pwd,5.4标准输入输出,在shell模式下,用户输入数据可以使用标准输入(一般为键盘)或一个文件作为输入;对于输出数据可以使用标准输出(一般为终端屏幕)或指定某个文件作为输出。,当用户在shell中执行命令时,每个进程都会和3个自动打开的标准文件相关联,它们是标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都与终端屏幕相关联。,在实际操作中,常使用文件描述符来引用标准输入、标准输出和标准错误输出文件。如标准输入文件的文件描述符为0;标准输出文

35、件的文件描述符为1;标准错误输出文件的文件描述符为2。,在使用Linux命令时,直接使用标准输入和标准输出文件存在如下问题:(1)用户从终端输入数据时,用户花了好长时间输入的数据只能使用一次,下次使用时只能重新再次输入,并且在终端上输入数据时,若输入有误,修改不便。,(2)输出到终端屏幕上的信息只能看不能修改,因此无法对输出的数据作更多的处理,如将输出的数据作为另一个命令的输入进行进一步的处理等操作。为了解决上述问题,Linux系统为输入和输出引入了两种机制,即输入/输出的重定向和管道。,5.4.1 重定向重定向(redirection)是指改变shell标准输入来源和标准输出去向的各种方式。

36、如shell的标准输入与键盘相关联,标准输出与屏幕相关联,但使用重定向可以将标准输入和标准输出指向某个命令或文件。重定向分为输入重定向和输出重定向。,输出重定向输出重定向使用“”或“”符号可以将输出重定向到指定的文件而不再是屏幕。输出重定向的命令行格式如下: command arguments filename command arguments filename,例1:查找当前目录下的目录文件,并将查找结果保存在files.out文件中,若files.out文件存在,覆盖该文件的内容。 rootlocalhost #ls -l | grep d files.out,例2:查找当前目录下以大写

37、字母开头的文件,并将查找结果追加到files.out文件的末尾。 rootlocalhost #ls | grep A-Z* files.out,用户可以使用以下的命令完成输出的错误信息的重定向。 1、错误输出重定向到filename文件 command 2 filename 2、标准输出和错误输出都重定向到filename文件 command filename 2&1 3、错误输出追加到filename文件的末尾) command 2 filename 4、标准输出和错误输出追加到filename文件的末尾 command filename 2&1输出重定向(包括错误输出重定向)是shell

38、编程时常用到的一种操作方式。,输入重定向通过使用输入重定向符号“”可以使shell将命令的输入重定向为来自指定的文件而不是键盘。输入重定向的命令行格式如下: command arguments filename在上述的命令行格式中,command为可执行的命令;arguments为可选参数;filename为shell来自输入重定向的普通文件。例:在CLI环境下打印files.out文件的内容。 rootlocalhost #lpr files.out,5.4.2 管道shell使用管道(pipe)将一个命令的输出作为另一个命令的输入。管道的工作过程是:首先将一个命令的标准输出重定向到一个文件

39、,然后将该文件作为另一个命令的标准输入。管道不会单独处理每条命令,并且不需要中间的临时文件。管道的符号使用“|”表示,其命令行格式如下: command1 arguments | command2 arguments | . | commandn arguments,例:查找日志文件/var/log/messages中包含有succeed的行。 rootlocalhost #cat /var/log/messages | grep succeed使用上述命令管理员可以查看是否有用户成功登录到本机。,5.5 文件安全与权限,一个文件一旦被创建,它就具有三种访问方式: 读(r):可以显示该文件的内

40、容。 写(w):可以编辑或删除它。 执行(x):如果该文件是一个shell脚本或程序。根用户(即root用户)可以改变任何普通用户的设置。,针对用户对文件的访问,文件的权限可分为三类: 文件的所有者,也称属主:创建该文件的用户。 同组中的用户:拥有该文件的同组用户中的任何用户。 其他用户:即不属于拥有该文件的用户组的某一用户。,5.5.1 设置权限位,root用户在修改文件和目录的访问权限时,一定要考虑好哪些用户可以访问该文件(包括目录)。修改文件的访问权限可使用chmod命令来进行设置。chmod有两种模式:符号模式和绝对模式。chmod命令的语法格式如下:1、符号模式 chmod opti

41、ons who operator permission file-list2、绝对模式 chmod options mode file-list chmod命令可以改变文件所有者、同组用户和其他用户对文件和目录的访问模式,但只有文件的所有者或root用户可以修改文件的访问权限。,符号模式符号模式可以设置多个项目:who(用户类型)、operator(操作符)和permission(权限),其中每个项目的设置使用空格分隔。,who的符号模式,operator的符号模式,permission的符号模式,例:假定myfiletest文件的最初权限为:rwxrwxrwx,chmod的符号模式举例,绝对

42、模式在绝对模式中,权限部分有不同的含义。每个权限位用一个八进制数来表示,即使用八进制数来指定用户的访问模式,,八进制目录/文件权限表示,在使用绝对模式设置文件和目录的访问权限时,只要按表5-8查出文件的所有者、同组用户和其他用户所具有的权限与之相对应的数字,并把它们相加,就是相应的权限。从表5-8分析可知,所有者、同组用户和其他用户对文件或目录拥有最大权限时,其值为7 。,chmod的绝对模式举例,chmod命令的常用选项为-R(-recursive)。该选项为将递归地修改该目录下的所有文件(包括子目录及子目录下的文件)的访问权限。在使用chmod命令设置文件的访问权限时,可以使用符号模式也可

43、以使用绝对模式。对于符号模式,它可以设置或取消个别的权限位,而在绝对模式中则不行。用户应根据实际的应用环境灵活地使用。,注意:在Linux系统中,目录的访问权限和文件的访问权限有所不同。目录的读权限为用户可以列出其中的内容;写权限为用户可以在该目录中创建文件;执行权限为用户可以搜索和访问该目录。如把同组用户或其他用户针对某一目录的访问权限设置为-x,那么他们将无法列出该目录中的文件,但如果该目录中有一个可执行的脚本或程序文件,只要用户知道它的路径和文件名,用户仍然可以执行它,即用户不能够进入该目录并不妨碍执行目录下的脚本或程序。,5.5.2 suid/guid,suid为如果某个用户对属于自己

44、的shell脚本设置了这种权限,那么其他用户在执行这一脚本时也会具有其属主的相应权限。因此,如果根用户的某一个脚本设置了这种权限,那么其他普通用户在执行该脚本时也同样具有根用户的权限。同样的原则也适用于guid,执行相应脚本的用户将具有该文件所属用户组中用户的权限。,在Linux系统中,使用suid/guid会给管理员带来一些方便。如某用户管理着几个大型的数据库系统,而对它们进行备份操作需要有root的权限。但对于管理员,不想给这个用户root的权限,这时,管理员就可以编写一个脚本文件,并设置它为guid,这样管理员指定的一些用户只要执行了这个脚本就可以完成数据库的备份操作,则不须以root的

45、权限登录系统,以免破坏数据库系统。用户通过执行设置了guid的脚本,完成数据库的备份操作后,就又恢复到他们作为普通用户的权限了。,在Linux系统中,有一些命令也被设置了suid和guid,用户可在/bin或/sbin目录下使用如下命令查找被设置了suid和guid的命令文件: rootlocalhost #ls -l | grep .s 这条命令用来查找suid的文件。 rootlocalhost #ls -l | grep .ss这条命令是用来查找suid和guid的文件。,注意:使用chmod命令的绝对模式设置suid,应将相应的权限位之前的那一位设置为4;设置guid,应将相应的权限位

46、之前的那一位设置为2;设置suid和guid,应将相应的权限位之前的那一位设置为4+2,即6。一旦设置了suid或guid,一个s将出现在x的位置上,但用户应记住:在设置suid或guid时,相应的执行权限位必须要被设置。若没有设置执行权限就设置suid或guid,则会在文件的执行权限位出现S(大写的S),这被称为伪suid或伪guid,它没有任何意义。,例:如要设置文件execfile的suid,该文件当前的权限为rwxrw-r-(761),执行的命令如下所示: rootlocalhost #chmod 4761 execfile使用chmod命令的符号模式设置suid/guid,设置的方法

47、要比绝对模式方便。如上一命令与如下命令等价: rootlocalhost #chmod u+s execfile在Linux系统中,用户应慎用suid/guid设置有执行权限的脚本文件。,5.5.3 文件的所有者和关联组,改变文件和目录的所有者及其关联组,可使用chown命令来执行操作。chown命令的语法格式如下: chown options owner file-list chown options owner:group file-list chown options owner: file-list chown options :group file-list,owner参数为新所有者

48、用户对应的ID值或用户名。file-list为要修改所有者的文件名列表。group为文件新关联组的名称或组ID值,owner和group的指定方式,例: rootlocalhost #ls -l testfile -rw-r-r- 1 root root 0 Jun 22 04:56 testfile rootlocalhost #chown pubs testfile rootlocalhost #ls -l testfile -rw-r-r- 1 pubs root 0 Jun 22 04:56 testfile将目录/home/data/oracle目录下所有文件的所有者设置为pubs,

49、关联组为pubs用户所属的组,使用命令如下: rootlocalhost #chown -R pubs: /home/data/oracle将目录/home/data/oracle目录下所有文件的所有者设置为pubs,关联组设置为backg,使用命令如下: rootlocalhost #chown -R pubs:backg /home/data/oracle,使用chown命令不仅可以改变文件和目录的所有者,还可以改变文件和目录的关联组。在Linux系统中,还可以使用chgrp命令改变文件和目录的关联组。chgrp命令的语法格式如下: chgrp options group file-list 例:将/home/data/oracle目录下所有文件的关联组设置为backg。 rootlocalhost #chgrp -R backg /home/data/oracle只有文件的所有者和root用户可以改变文件和目录的关联组。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报