




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux 文件和目录的属性目录1、 Linux 文件的属性概说;2、 关于inode;2.10 inode 相同的文件是硬链接文件;2.11 创建硬链接,硬链接和源文件关系;2.12 软链接的创建,及软接与源文件的关系; 3、文件类型;4、文件的权限;4.1 关于权限位;4.2 改变权限的命令 chmod ; 4.21 通过 chmod 八进制语法来改变文件或目录的权限; 4.22 通过 chmod 助记语法来改变文件或目录的权限; 4.3 默认权限分配的命令 umask ; 5、setuid和setgid 位;5.1 setuid和setgid的解说 ; 5.2 setuid和setgid的实例应用;5.3 setuid和setgid的设置方法; 6、粘贴位及设置方法;7、文件或目录的归属关系;7.1 改变文件的当属关系的工具 chown ;7.2 改变文件的属组工具 chgrp ;7.3 文件属主和属组的特殊情况 ; 8、影响文件的读写执行的因素;9、文件被修改或被访问的时间;10、文件属性和文件系统属性的关系;11、关于本文;12、后记;13、参考文档;14、相关文档;1、 Linux 文件属性概说;Linux 文件或目录的属性主要包括:文件或目录的节点、种类、权限模式、链接数量、所归属的用户和用户组、最近访问或修改的时间等内容;rootlocalhost # ls -lih总计 104K2408949 -rwxr-xr-x 1 root root 7 04-21 12:47 lsfile.sh2408830 drwxr-xr-x 2 root root 4.0K 04-21 12:46 mkuml-2004.07.172408260 drwxr-xr-x 2 root root 4.0K 04-21 22:15 mydir2408258 lrwxrwxrwx 1 root root 7 04-21 22:16 sun001.txt - sun.txt2408263 -rw-r-r- 2 root root 11 04-20 14:17 sun002.txt2408263 -rw-r-r- 2 root root 11 04-20 14:17 sun.txt解释:第一字段:inode第二字段:文件种类和权限;第三字段: 硬链接个数;第四字段: 属主;第五字段:所归属的组;第六字段:文件或目录的大小;第七字段和第八字段:最后访问或修改时间;第九字段:文件名或目录名我们以lsfile.sh为例:2408949 -rwxr-xr-x 1 root root 7 04-21 12:47 lsfile.shinode 的值是:2408949文件类型:文件类型是-,表示这是一个普通文件; 关于文件的类型,请参考:Linux 文件类型和文件扩展文件权限:文件权限是rwxr-xr-x ,表示文件属主可读、可写、可执行,文件所归属的用户组可读可执行,其它用户可读可执行;硬链接个数: lsfile.sh这个文件没有硬链接;因为数值是1,就是他本身;文件属主:也就是这个文件归哪于哪个用户 ,它归于root,也就是第一个root;文件属组:也就是说,对于这个文件,它归属于哪个用户组,在这里是root用户组;文件大小:文件大小是7个字节;访问可修改时间 :这里的时间是最后访问的时间,最后访问和文件被修改或创建的时间,有时并不是一致的; 当然文档的属性不仅仅包括这些,这些是我们最常用的一些属性。我们把比较重要的说一说,比如文件所归属的种类、权限、硬链接个数 . .2、 关于inode;inode 译成中文就是索引节点。每个存储设备或存储设备的分区(存储设备是硬盘、软盘、U盘 . . )被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的找到相对应的文件。做个比喻,比如一本书,存储设备或分区就相当于这本书,Block相当于书中的每一页,inode 就相当于这本书前面的目录,一本书有很多的内容,如果想查找某部份的内容,我们可以先查目录,通过目录能最快的找到我们想要看的内容。虽然不太恰当,但还是比较形象。当我们用ls 查看某个目录或文件时,如果加上-i 参数,就可以看到inode节点了;比如我们前面所说的例子;rootlocalhost # ls -li lsfile.sh2408949 -rwxr-xr-x 1 root root 7 04-21 12:47 lsfile.shlsfile.sh 的inode值是 2408949 ; 查看一个文件或目录的inode,要通过ls 命令的的 -i参数。2.10 inode 相同的文件是硬链接文件;在Linux 文件系统中,inode值相同的文件是硬链接文件,也就是说,不同的文件名,inode可能是相同的,一个inode值可以对应多个文件。理解链接文件并不难,看看例子就会了。在Linux中,链接文件是通过ln工具来创建的。2.11 创建硬链接,硬链接和源文件关系;用ln 创建文件硬链接的语法:# ln 源文件 目标文件下面我们举一个例子,在这个例子中,我们要为sun.txt 创建其硬链接sun002.txt。然后看一下sun.txt和sun002.txt的属性的变化;rootlocalhost # ls -li sun.txt 注:查看sun.txt的属性;2408263 -rw-r-r- 1 root root 29 04-22 21:02 sun.txt 注:这是sun.txt的属性;rootlocalhost # ln sun.txt sun002.txt 注:我们通过ln 来创建sun.txt的硬链接文件sun002.txt rootlocalhost # ls -li sun* 注:我们列一下sun.txt 和sun002.txt2408263 -rw-r-r- 2 root root 29 04-22 21:02 sun002.txt2408263 -rw-r-r- 2 root root 29 04-22 21:02 sun.txt我们可以看到sun.txt在没有创建硬链接文件sun002.txt的时候,其链接个数是1(也就是-rw-r-r-后的那个数值),创建了硬链接sun002.txt创建后,这个值变成了2。也就是说,我们每次为sun.txt创建一个新的硬链接文件后,其硬链接个数都会增加1。inode值相同的文件,他们的关系是互为硬链接的关系。当我们修改其中一个文件的内容时,互为硬链接的文件的内容也会跟着变化。如果我们删除互为硬链接关系的某个文件时,其它的文件并不受影响。比如我们把sun.txt删除后,我们还是一样能看到sun002.txt的内容,并且sun02.txt仍是存在的。可以这么理解,互为硬链接关系的文件,他们好象是克隆体,他们的属性几乎是完全一样;下面的例子,我们把sun.txt删除,然后我们看一下sun002.txt 是不是能看到其内容。rootlocalhost # rm -rf sun.txt rootlocalhost # more sun002.txt 注意:硬链接不能为目录创建,只有文件才能创建硬链接。2.12 软链接的创建,及软接与源文件的关系;创建软链接(也被称为符号链接)的语法;# ln -s 源文文件或目录 目标文件或目录软链接也叫符号链接,他和硬链接有所不同,软链接文件只是其源文件的一个标记。当我们删除了源文件后,链接文件不能独立存在,虽然仍保留文件名,但我们却不能查看软链接文件的内容了。rootlocalhost # ls -li linuxsir001.txt2408274 -rw-r-r- 1 root root 29 04-22 21:53 linuxsir001.txtrootlocalhost # ln -s linuxsir001.txt linuxsir002.txtrootlocalhost # ls -li linuxsir001.txt linuxsir002.txt2408274 -rw-r-r- 1 root root 29 04-22 21:53 linuxsir001.txt2408795 lrwxrwxrwx 1 root root 15 04-22 21:54 linuxsir002.txt - linuxsir001.txt解释上面的例子,首先我们查看 linuxsir001.txt 的属性,比如inode 、所属文件种类、创建或修改时间等. .我们来对比一下:首先 对比一下节点:两个文件的节点不同;其次 两个文件的归属的种类不同 linuxsir001.txt是-,也就是普通文件,而linuxsir002.txt 是l,它是一个链接文件;第三 两个文件的读写权限不同 linuxsir001.txt 是rw-r-r- ,而linuxsir002.txt的读写权限是 rwxrwxrwx第三 两者的硬链接个数相同;都是1第四 两文件的属主和所归属的用户组相同;第五 修改(或访问、创建)时间不同;我们还注意到了linuxsir002.txt 后面有一个标记 -,这表示linuxsir002.txt是linuxsir001.txt的软链接文件。值得我们注意的是:当我们修改链接文件的内容时,就意味着我们在修改源文件的内容。当然源文件的属性也会发生改变,链接文件的属性并不会发生变化。当我们把源文件删除后,链接文件只存在一个文件名,因为失去了源文件,所以软链接文件也就不存在了。这一点和硬链接是不同的;rootlocalhost # rm -rf linuxsir001.txt注:删除linuxsir001.txt rootlocalhost # ls -li linuxsir002.txt注:查看linuxsir002 的属性;2408795 lrwxrwxrwx 1 root root 15 04-22 21:54 linuxsir002.txt - linuxsir001.txtrootlocalhost # more linuxsir002.txt注:查看linuxsir002.txt的内容;linuxsir002.txt: 没有那个文件或目录注:得到提示,linuxsir002.txt不存在。上面的例子告诉我们,如果一个链接文件失去了源,就意味着他已经不存在了;我们可以看到软链接文件,其实只是源文件的一个标记,当源文件失去时,他也就是存在了。软链接文件只是占用了inode来存储软链接文件属性等信息,但文件存储是指向源文件的。软件链接,可以为文件或目录都适用。无论是软链接还是硬链接,都可以用rm来删除。rm工具是通用的。3、文件类型;当用ls指令的长格式显示文件或目录的属性时;比如:rootlocalhost # ls -lih总计 104K2408949 -rwxr-xr-x 1 root root 7 04-21 12:47 lsfile.sh2408830 drwxr-xr-x 2 root root 4.0K 04-21 12:46 mkuml-2004.07.172408260 drwxr-xr-x 2 root root 4.0K 04-21 22:15 mydir2408258 lrwxrwxrwx 1 root root 7 04-21 22:16 sun001.txt - sun.txt2408263 -rw-r-r- 2 root root 11 04-20 14:17 sun002.txt2408263 -rw-r-r- 2 root root 11 04-20 14:17 sun.txt我们来看一下lsfile.sh这行,其中有这样一个字段 -rwxr-xr-x 。这个字段包括两个信息,一是文件类型,二是文件的权限;文件类型就第一个字符,lsfile.sh的文件所归属的文件种类是- 。同理 mkuml-2004.07.17的这段是drwxr-xr-x,它所归属的文件种类应该是d;sun001.txt文件呢,对应的lrwxrwxrwx,sun001.txt所归属的文件种类应该是-l 。我们可以知道Linux文件可以分为如普通文件、目录、符号链接文件、字符和块设备文件、套接口文件等。详情请参考 :Linux 文件类型和文件的扩展名4、文件的权限;Linux文件或目录的权限是和用户和用户组联系在一起的,所以理解这部份内容,您首先得了解一下Linux用户管理方面的知识 。请参考 :Linux 用户(user)和用户组(group)管理概述。如果您是新手,要把这篇文档的相关文档也了解一下,这对您理解本文真的很重要;每个文件或目录都有一组9个权限位,每三位被分为一组,他们分别是属主权限位(占三个位置 )、用户组权限位(占三个位置)、其它用户权限位(占三个位置)。比如rwxr-xr-x ,我们数一下就知道是不是9个位置了,正是这9个权限位来控制文件属主、用户组以及其它用户的权限。4.1 关于权限位;Linux文件或目录的权限位是由 9 个权限位来控制,每三位为一组,它们分别是文件属主(Ower)的读、写、执行,用户组(Group)的读、写、执行以及(Other)其它用户的读、写、执行;文件属主: 读r、写w、执行x用 户 组 : 读r、写w、执行x其它用户: 读r、写w、执行x 如果权限位不可读、不可写、不可执行,是用-来表示。对于普通文件的读、写、执行权限可以这样理解:可读:意味着我们可以查看阅读;可写:意味着,可以修改或删除(不过删除或修改的权限受父目录上的权限控制);可执行:意味着如果文件就可以运行,比如二进制文件(比如命令),或脚本(要用脚本语言解释器来解释运行)。比如:rootlocalhost # ls -l lsfile.sh-rwxr-xr-x 1 root root 7 04-21 12:47 lsfile.sh第一个字段 -rwxr-xr-x中的第一个字符是-,表示lsfile.sh是一个普通文件;lsfile.sh的权限是 rwxr-xr-x。表示lsfile.sh文件,文件的属主root,拥有rwx(可读、可写、可执行)权限,用户组root,拥有 r-x(可读、可写)权限 ,其它用户拥有 r-x(可读、可写)权限。这9个权限连在一起就是 rwxr-xr-x,也就是说,lsfile.sh 文件,文件属主root拥有可读、可写、可执行权限,用户组root下的所有用户拥有可读可执行权限,其它用户拥有可读可执行权限。查看文件的属性用 ls -l 文件 ;查看目录的属性是 ls -d 目录。请参考 :4.2 改变权限的命令 chmod ;chmod 是用来改变文件或目录权限的命令,但只有文件的属主和超级权限用户root才有这种权限。通过chmod 来改变文件或目录的权限有两种方法,一种是通过八进制的语法,另一种是通过助记语法; 举例:rootlocalhost # touch linuxsir007.txt 注:创建linuxsir007.txt文件;rootlocalhost # touch linuxsir008.txt 注:创建linuxsir008.txt 文件;rootlocalhost # ls -lh linuxsir007.txt linuxsir008.txt 注:查看linuxsir007.txt和linuxsir008.txt文件属性;-rw-r-r- 1 root root 0 04-23 20:11 linuxsir007.txt 注:linuxsir007.txt 文件属性;-rw-r-r- 1 root root 0 04-23 20:11 linuxsir008.txt 注:linuxsir008.txt 文件属性; rootlocalhost # chmod 755 linuxsir007.txt 注:通过八进制语法来改变linuxsir007.txt的权限;rootlocalhost # chmod u+x,og+x linuxsir008.txt 注:通过助记语法来改变linuxsir008.txt的权限;rootlocalhost # ls -lh linuxsir007.txt linuxsir008.txt 注:查看linuxsir007.txt和linuxsir008.txt文件属性;-rwxr-xr-x 1 root root 0 04-23 20:11 linuxsir007.txt -rwxr-xr-x 1 root root 0 04-23 20:11 linuxsir008.txt上 面例子是一个演示通过chmod的两种语法来改变权限的例子,我所要说明的是,两种方法都能达到同一目的。这个过程是:首先:创建linuxsir007.txt和linuxsir008.txt两个文件;其次:查看两个文件的属性;他们的权限都是一样的,都是 rw-r-r- ,表示文件属主可读可写、文件所归属的用户组对文件可读、其它用户可读;第三:通过chmod的八进制语法来改变linuxsir007.txt 的权限;通过chmod的助记语法来改变linuxsir008.txt的权限; 我们用两种方法来改变linuxsir007.txt和linuxsir008.txt 文件,通过chmod的两种不同的语法来让两个文件的权限达以一致。在八进制语法中,我们用了 755 ,而在助记语法中,我们用了 u+x,og+x。虽然用了两种不同的语法,但达到的目的是一样的,最后的结果,我们可以看到两个文件的权限都是 rwxr-xr-x。也就是说文件的属主对文件有可读可写可执行的权限,文件所归属的用户组有可读可执行的权限,其它用户有可读可执行的权限。由此我们引出了通过chmod 工具来改变文件或目录权限的的两种方法:chmod 的八进制语法,chmod的助记语法;4.21 通过 chmod 八进制语法来改变文件或目录的权限;我们前面已经说了,文件或目录的权限位总共有9个位置 ,文件属主、文件所归属的组占用三位和其它用户各占用三个位置。看个例子:-rwxr-xr-x 1 root root 0 04-23 20:11 linuxsir007.txt 说明:属主权限位:占用三个位置,三个位置的顺序是读r、写w、执行x。如果是没有权限,则为-。在这个例子中,我们看到rwx,表示属主在三个权位上都有权限,也就是可读可写可执行;属组权限位:占用三个位置,三个位置的顺序是读r、写w、执行x。如果是没有权限,则为-。在这个例子中,我们看到的是r-x,在写的位置上是-,表示没有写权限,文件所归属的组对文件拥有的是可读可执行,但没有写的权限。其它用户权限位:占用三个位置 ,三个位置的顺序是读r、写w、执行x,如果是没有权限,则为-。在这个例子中,我们看其它用户的权限位是r-x,在写的位置上是-,表示没有写权限,文件所归属的组对文件拥有的是可读可执行,但没有写的权限。chmod 的八进制语法的数字说明;r 4w 2 x 1 - 0属主的权限用数字表达:属主的那三个权限位的数字加起来的总和。比如上面的例子中属主的权限是rwx ,也就是4+2+1 ,应该是7;属组的权限用数字表达:属组的那个权限位数字的相加的总和。比如上面的例子中的r-x ,也就是4+0+1 ,应该是5;其它用户的权限数字表达:其它用户权限位的数字相加的总和。比如上面例子中是 r-x ,也就是4+0+1 ,应该是5;rootlocalhost # ls -l sun.txt-rwxr-xr-x 2 root root 29 04-22 21:02 sun.txt 注:查看sun.txt的属性,我们看到sun.txt的权限位是rwxr-xr-x,用八进制数字表示是755 ;rootlocalhost # chmod 644 sun.txt 注;我们改变它的权限为属主可读可写、属组可读、其它用户可读,也就是rw-r-r-,用数字表示就是644;rootlocalhost # ls -l sun.txt-rw-r-r- 2 root root 29 04-22 21:02 sun.txt 注:是不是达到目的了?是的!每个三位的权限代码(分别是属主、属组,其它用户)组合,有8种可能;八进制数字 权限 0 -1-x2-w-3-wx4r-5r-x6rw-7rwx注解:我们可以根据上面的数字列表来组合权限,比如我想让属主拥有 rwx(所对应的数字是7),属组拥有 -x(所对应的数字是1),其它用户拥有 -(所对应的数字是0),这样我们把各组的权限组合起来就是是 rwx-x-(对应的数字是710)。rootlocalhost # ls -l sun.txt-rw-r-r- 2 root root 29 04-22 21:02 sun.txtrootlocalhost # chmod 710 sun.txtrootlocalhost # ls -l sun.txt-rwx-x- 2 root root 29 04-22 21:02 sun.txt如果我们想改变的仅仅是打开目录的权限 ,不用加任何参数。如果想把目录以下的所有文件或子目录改变,应该加-R参数;rootlocalhost # ls -ld testdir/drwxr-xr-x 3 root root 4096 04-24 11:01 testdir/rootlocalhost # ls -lr testdir/总计 4-rw-r-r- 1 root root 0 04-24 11:01 sir01.txtdrwxr-xr-x 2 root root 4096 04-24 11:01 linuxsir我们仅仅改变testdir的权限,让其拥有属主可读可写、属组可读、其它用户可读,也就是rw-r-r- ,用八进制的算数应该是644。rootlocalhost # ls -ld testdir/ 注:我们查看到的testdir目录的权限是rwxr-r-;drwxr-xr-x 3 root root 4096 04-24 11:01 testdir/ rootlocalhost # chmod 644 testdir/rootlocalhost # ls -ld testdir/drw-r-r- 3 root root 4096 04-24 11:01 testdir/ 注:改变成功;rootlocalhost # ls -lr testdir/ 注:我们查看一下testdir目录下的子目录是否改变了?尝试一下改变testdir及其子目录和文件权限都要改变为 rw-r-r-权限。我们要用到-R参数;rootlocalhost # chmod -R 644 testdir/ 注:我们改变testdir下所有的文件或子目录的权限都为 rw-r-r-rootlocalhost # ls -ld testdir/ drw-r-r- 3 root root 4096 04-24 11:01 testdir/rootlocalhost # ls -lr testdir/总计 4-rw-r-r- 1 root root 0 04-24 11:01 sir01.txtdrw-r-r- 2 root root 4096 04-24 11:01 linuxsir值得注意的是:chmod 改变一个目录下的所有.file时,要小心操作。比如我们要改变testdir下的所有.file 的权限为 rwxr-r-,但我们不想改变testdir目录的权限 。下面的例子操作是错误的。rootlocalhost # ls -ld testdir/drw-r-r- 3 root root 4096 04-24 11:01 testdir/rootlocalhost # ls -lr testdir/总计 4-rw-r-r- 1 root root 0 04-24 11:01 sir01.txtdrw-r-r- 2 root root 4096 04-24 11:01 linuxsirrootlocalhost # chmod -R 755 testdir/.* 注:这样操作,会把testdir目录的权限一并改为 rwxr-r- rootlocalhost # ls -ld testdir/drwxr-xr-x 3 root root 4096 04-24 11:01 testdir/ 所以当您想改变一个目录下的所有.file权限,并且想保留该目录的原有权限时,请不要用.*通配符。至于应该怎么做,我想大家都明白。比如下面的匹配;rootlocalhost # chmod -R 644 testdir/.a-z*上面的例子chmod 会匹配所有以.a到.z 开头的文件。4.22 通过 chmod 助记语法来改变文件或目录的权限;chmod 的助记语法相对简单,对文件或目录权限的改变时,是通过比较直观的字符的形式来完成;在助记语法中,相关字母的定义;用户或用户组定义:u 代表属主g 代表属组o 代表其它用户a 代表属主、属组和其它用户,也就是上面三个用户(或组)的所有;权限定义字母:r 代表读权限;w 代表写权限;x 代表执行权限;权限增减字符;- 代表减去相关权限;+ 代表增加相关权限;示例一: rootlocalhost # ls -l linuxsir007.txt-rwxr-xr-x 1 root root 0 04-23 20:11 linuxsir007.txtrootlocalhost # chmod ugo-x linuxsir007.txt 注:把属主、用户组及其它用户的执行权限都减掉;rootlocalhost # ls -l linuxsir007.txt-rw-r-r- 1 root root 0 04-23 20:11 linuxsir007.txt示例二:rootlocalhost # ls -l linuxsir007.txt-rw-r-r- 1 root root 0 04-23 20:11 linuxsir007.txtrootlocalhost # chmod u+x linuxsir007.txt 注:为文件的属主增加执行权限 rootlocalhost # ls -l linuxsir007.txt -rwxr-r- 1 root root 0 04-23 20:11 linuxsir007.txt示例三:rootlocalhost # ls -l linuxsir007.txt -rwxr-r- 1 root root 0 04-23 20:11 linuxsir007.txtrootlocalhost # chmod u-x,go+rw linuxsir007.txt 注:减去文件属主对文件的执行权,增加属组和其它用户对文件的可读可写权;rootlocalhost # ls -l linuxsir007.txt-rw-rw-rw- 1 root root 0 04-23 20:11 linuxsir007.txt用助记语法比较灵活,组合起来比较方便;比如;u=r+x 为文件属主添加读写权限;ug=rwx,o=r 为属主和属组添加读、写、执行权限,为其它用户设置读权限。a+x 为文件的属主、属组和其它用户添加执行权限;g=u 让文件的属组和属主和权限相同;对于目录权限的设置,要用到-R参数;和八进制方法一样,如果我们为一个目录及其下的子目录和文件具有相同的属性,就可以用-R参数;rootlocalhost # chmod -R a+rwx testdir/rootlocalhost # ls -lr testdir/总计 4-rwxrwxrwx 1 root root 0 04-24 11:01 sir01.txtdrwxrwxrwx 2 root root 4096 04-24 11:01 linuxsir4.3 默认权限分配的命令 umask ;umask 是通过八进制的数值来定义用户创建文件或目录的默认权限。umask 表示的是禁止权限。不过文件和目录有点不同。对于文件来说,umask 的设置是在假定文件拥有八进制666权限上进行,文件的权限就是是666减去umask的掩码数值;对于目录来说,umask 的设置是在假定文件拥有八进制777权限上进行,目录八进制权限777减去umask的掩码数值;实例一:rootlocalhost # umask 066rootlocalhost # mkdir testdir003rootlocalhost # ls -ld testdir003/drwx-x-x 2 root root 4096 04-24 15:01 testdir003/rootlocalhost # ls -lh sun998.txt-rw- 1 root root 0 04-25 15:57 sun998.txt实例二:系统用户的家目录的权限是通过在配置文件中指定的,比如Fedora 中是用的 /etc/login.defs文件;其中有这样一段:CREATE_HOME yesUMASK 077表示的意思是,当我们创建用户时,他的家目录umask的数值是077 。我们怎么理解这个077呢。当用户添加时,系统自动在/home中创建用户的家目录,并且设置它的权限为777-077=711 ,也就是rwx- ;我们看一下/home下的某个用户的家目录是不是这样的呢?rootlocalhost # ls -ld beinandrwx- 36 beinan beinan 4096 04-24 15:08 /home/beinanumask 一般都是放在用户相关SHELL的配置文件中,比如用户家目录下的.bashrc 或.profile ,也可以放在全局性的用户配置文件中,比如 /etc/login.defs,还可以放在SHELL全局的配置文件中,比如/etc/profile 或/etc/bashrc或/etc/csh.cshrc 等;umask 放在相关的配置文件中,目的是当管理员创建用户时,系统会自动为用户创建文件或目录时配置默认的权限代码。5、setuid和setgid 位;本部份内容做为了解,看看就行了;5.1 setuid和setgid的解说 ;setuid 和setgid位是让普通用户可以以root用户的角色运行只有root帐号才能运行的程序或命令。比如我们用普通用户运行passwd命令来更改自己的口令,实际上最终更改的是/etc/passwd文件。我们知道/etc/passwd文件是用户管理的配置文件,只有root权限的用户才能更改。rootlocalhost # ls -l /etc/passwd-rw-r-r- 1 root root 2379 04-21 13:18 /etc/passwd作为普通用户如果修改自己的口令通过修改/etc/passwd肯定是不可完成的任务,但是不是可以通过一个命令来修改呢。答案是肯定的,作为普通用户可以通过passwd 来修改自己的口令。这归功于passwd命令的权限。我们来看一下;rootlocalhost # ls -l /usr/bin/passwd-r-s-x-x 1 root root 21944 02-12 16:15 /usr/bin/passwd因为/usr/bin/passwd 文件已经设置了setuid 权限位(也就是r-s-x-x中的s),所以普通用户能临时变成root,间接的修改/etc/passwd,以达到修改自己口令的权限。我们在Linux 系统中的超级权限的控制中有提到过。我们知道Linux的用户管理是极为严格的,不同的用户拥有不同的权限,为了完成只有root用户才能完成的工作,我们必须为普通用户提升权限,最常用的方法就是su或sudo。虽然setuid 和setgid也是让普通用户超越自身拥有的普通权限达到root权限的方法,但我不推荐大家使用,因为它能为系统带来安全隐患!注意:setuid和setgid会面临风险,所以尽可能的少用,了解了解既可5.2 setuid和setgid的实例应用;我们想让一个普通用户beinan拥有root用户拥有超级rm删除权限,我们除了用su或sudo 临时切换到 root身份操作以外,还能怎么做呢? rootlocalhost #cd /home 注:进入/home目录 rootlocalhost home# touch beinantest.txt 注:创建一个测试文件;rootlocalhost home# ls -l beinantest.txt 注:查看文件属性;-rw-r-r- 1 root root 0 04-24 18:03 beinantest.txt 注:文件的属性;rootlocalhost home# su beinan 注:切换到普通用户 beinan beinanlocalhost home$ rm -rf beinantest.txt 注:以普通用户身份来删除beinantest.txt文件; rm: 无法删除 “beinantest.txt”: 权限不够 那我们怎么才能让beinan 这个普通用户也拥有root超级的rm 删除功力呢?rootlocalhost # ls -l /bin/rm -rwxr-xr-x 1 root root 93876 02-11 14:43 /bin/rm rootlocalhost # chmod 4755 /bin/rm 注:设置rm的权限为4755 , 就把setuid 位设置好了。rootlocalhost # ls -l /bin/rm-rwsr-xr-x 1 root root 43980 02-11 14:43 /bin/rmrootlocalhost # cd /home/rootlocalhost home# su beinan 注:切换到beinan用户身份;rootlocalhost home$ ls -l beinantest.txt 注:查看文件属性;-rw-r-r- 1 root root 0 04-24 18:03 beinantest.txt 注:文件的属性;beinanlocalhost home$ rm -rf beinantest.txt 注:删除beinantest.txt文件;我们只是设置了rm的setuid位,让普通用户在rm指令上有超级root的删除超级权力。通过这个例子,我们应该能明白setuid和setgid位的应用了,如同前面所说,让普通用户超越本身的能力,让普通用户能执行只有root才能执行的命令。在这一点,我们要和su和sudo 区分开来。请参见su和sudo的文档:Linux 系统中的超级权限的控制5.3 setuid和setgid的设置方法;第一种方法:八进制方法:setuid位是的设置用八进制的4000,setgid占用的是八进制的2000 ;比如我们前面所说的 chmod 4755 /bin/rm 就是设置的setuid位;至于setuid的设置方法,只是在我们通过chmod设置文件或目录权限位的八进制方法的前面多加一个数字,也就是4。比如:rootlocalhost # chmod 4755 /bin/rm 注:设置rm的权限为4755 , 就把setuid 位设置好了。作为setgid 位占用的是八进制的2000位,我们下面举个例子;rootlocalhost # cd /home/rootlocalhost home# mkdir slackdirrootlocalhost home# ls -ld slackdir/drwxr-xr-x 2 root root 4096 04-24 18:25 slackdir/rootlocalhost home# chmod 2755 slackdir/rootlocalhost home# ls -ld slackdir/drwxr-sr-x 2 root root 4096 04-24 18:25 slackdir/我们看到 slackdir这个目录,经过改变权限后的,目录所归属用户组的那三个权限位是 r-s。 如果我们见到的是小写的s,表明文件所归属的用户组位有执行权限x。因为我们用了2755 ,意思是说文件属主拥有可读可写可执行权限,所归属的用户组拥有可读可执行权限,并且设置了setuid,所以这时本来文件所归属的用户组拥有r-x,现在加了setgid位,就把其中的x换成了s。如果文件所归属的用户组没有执行权限,这个权限应该是S。同理setuid位的中的大写的S和小写的s,也是这个原理。见下面的例子;rootlocalhost home# chmod 2740 slackdir/rootlocalhost home# ls -ld slackdir/drwxr-S- 2 root root 4096 04-24 18:25 slackdir/这个例子是因为目录slackdir所归属的组没有执行权限,这时本来在执行权限位上显示-,由于有了setuid,所以显示为S。如果我们为一个文件的权限拥有 属主可读可写可执行、所归的组拥有可读可执行,其它用户可读可执行,并且同时设置setuid和setgid位,我们应该怎么运行命令呢?rootlocalhost # touch gooddoc.txtrootlocalhost # ls -l gooddoc.txt-rw-r-r- 1 root root 0 04-24 18:47 gooddoc.txtrootlocalhost # chmod 6755 gooddoc.txtrootlocalhost # ls -l gooddoc.txt-rwsr-sr-x 1 root root 0 04-24 18:47 gooddoc.txt所以,同时设置setuid和setgid,就是把setuid和setgid两个八进位的值相加 (4000+2000=6000),然后加上文件或目录的权限位的三位数值(上面的例子是755),然后通过chmod 运行就行了。所以上面例子中用了6755 。第二种方法:通过助记语法;还是延用chmod的助记语法,通过u+s 或u-s 来增减setuid位,同理,我们可以通过g+s 或g-s 来setgid位;rootlocalhost # touch mydoc.txt 注:创建一个文件;rootlocalhost # ls -l mydoc.txt-rw-r-r- 1 root root 0 04-24 19:00 mydoc.txtrootlocalhost # chmod u+s mydoc.txtrootlocalhost # ls -l mydoc.txt-rwSr-r- 1 root root 0 04-24 19:00 mydoc.txt我们也可以用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年专业服务行业共享经济市场前景分析报告
- 2025年电子游戏行业虚拟现实技术应用前景预测报告
- 2025年零售行业移动支付应用前景研究报告
- 2025年金融行业区块链数字货币应用前景研究报告
- 2025年人类基因编辑行业伦理风险与医疗应用前景研究报告
- 商场全员安全培训制度课件
- 2025年区块链技术在金融行业应用前景分析研究报告
- 宁波市2025浙江宁波市交通运输局局属事业单位招聘3人笔试历年参考题库附带答案详解
- 国家事业单位招聘2025中国文联所属单位招聘拟聘用人员笔试历年参考题库附带答案详解
- 吉林省2025年度柳河县事业单位域外人才回引笔试历年参考题库附带答案详解
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案
- 我国军兵种介绍课件
- 2025全国农业(水产)行业职业技能大赛(水生物病害防治员)选拔赛试题库(含答案)
- Unit 4 Reading and Thinking 学案-高中英语人教版(2019) 选择性必修第一册
- 广告及宣传印刷品制作服务方案
- 安全评价工作程序框图流程图
- 医共体成员单位人力资源工作制度
- 如何建立高效学习小组
- 汽车系统动力学与控制 教学大纲
- 手卫生持续质量改进ppt课件
评论
0/150
提交评论