Linux系统中文件或目录的属性主要包括:文件或目录的索引节点(inode)、类型、权限属性、连接数、所归属的用户和用户组、最近修改时间等内容:
执行 ls -lhi命令的结果:node
total 4.0K 24563 drwxr-xr-x 2 root root 4.0K Jun 28 21:30 123 6464 -rw-r--r-- 1 root root 0 Jun 28 21:37 file inode 文件类型及权限 硬连接数 用户 组 大小 最近修改时间 文件名
文件的修改、访问、建立的时间查看:linux
[root@localhost linux-study]# stat file File: `file' Size: 5 Blocks: 8 IO Block: 4096 regular file Device: 803h/2051d Inode: 6464 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2015-06-28 21:37:27.652640852 +0800 Modify: 2015-06-28 21:43:01.275627486 +0800 Change: 2015-06-28 21:43:01.275627486 +0800
inode概述:inode中文意思是索引节点。每一个存储设备或存储设备的分区(存储设备能够是硬盘、软盘、U盘...)被格式化为文件系统后,应该后又两个部分:一部分是inode,另外一部分是Block。Block是用来存储数据用的。而inode就是用来不存储这些数据信息的,这些信息包括文件大小、属主、归属的用户组、读写权限等。 inode为每一个文件进行信息索引,因此就有了inode的数值。操做系统根据指令,能经过inode值最快的找到相对应的文件。 打个比方,好比一本书,存储设备或分区就至关于这本书,Block至关于书中的每一页,inode就至关于这本书的前面的目录,一本书有不少内容,若是想查看某个部分的内容,咱们就能够先查看目录,经过目录能更快的找到咱们想要看到的内容。 虽然不恰当,可是很形象。 ls -i 咱们就能够查看到inode节点号了。 inode值相同的文件是硬连接文件
一、文件权限概述:算法
Linux中的文件或目录的权限和用户与用户组关联很大,要理解这部份内容,须要先了解一下linux系统中用户管理方面的知识。 每一个文件或目录都有一组共9个权限位。没三位被分为一组,他们分别是属主权限位(占三个字符)、用户组权限位(占三个字符)、其它用户权限位(占三个字符)。好比rwx-rxr-x.在Linux中正是9个权限位(更多权限位后面会提到)来控制文件属主、用户组以及其余用户的权限
Linux文件或目录的权限是由9个权限位来控制,每三位位一组,他们分别是文件属主(Ower)的读、写、执行,用户组的(Group)的读、写、执行以及其余用户(Other)的读、写、执行; 文件属主:读R、写W、执行X 用户 组:读R、写W、执行X 其余用户:读R、写W、执行X 若是权限位不可读、不可写、不可执行,则用-来表示。
可读R:表示具备阅读文件内容的权限。 可写W:表示具备新增、修改文件内容的权限:(特别提示:删除或修改的权限受父目录的权限控制); 可执行X:表示具备执行文件的权限。
进入目录的的权限 X 浏览目录的权限 R 修改目录内文件的权限 W
r(Read,读权限) 对文件而言,表示具备阅读文件内容的权限; 读目录来讲,表示具备浏览目录的权限(注意:与进入目录的权限不一样) w(Write,写权限) 对于文件来讲,表示具备新增、修改文件内容的权限(注意,删除和移动与文件自己属性无关) 对目录来讲,表示具备删除,移动目录内文件的权限。 x(Execute,执行权限) 对文件而言,表示具备执行的权限。 对目录而言,表示具备进入目录的权限。 -(无任何权限) 若对应位置权限位为字符“-”,表示对应用户没有读、写、执行的任何权限。
特别注意:安全
当删除或移动一个文件或目录,仅与该文件目录所在的上一层目录权限有关,与该文件自己属性无任何关系。对于文件来讲,写文件是修改文件,而不是删除文件,所以文件是与该文件的自己属性有关系的。
二、改变权限属性命令chmodbash
chmod是用来改变文件或目录的权限的命令,但只有文件的属主和超级用户root才有这种权限。经过chmod来改变文件或目录的权限有两种方法:一种是经过权限字木和操做符表达式的方法来设置权限;另一种是使用数字的方式来设置权限。 例如: chmod 755 file chmow u+x,go-x file
chmod 数字权限方法:运维
chmod [数字组合] 文件名 chmod的数字语法简单直观: r---4 w---2 x---1 "-"---0
属主的权限位三个权限位的数字加起来的总和。(归属组个其余权限算法同样)编辑器
chmod [用户类型] [+ - =] [权限字符] 文件名 用户类型:u表示主,g表示属主,o表示其余用户,a表示全部 权限定义字母:r表明读权限 ,w表明写权限,x表明执行权限 权限增减字符: +添加某个权限,-取消某个权限,=赋予制定的权限
u=r+x 为文件属主添加读写权限; ug=rwx,o=r 为属主和组添加读、写、执行权限,为其余用户设置读权限。 a+x为全部人添加执行权限 g=u 让用户的属组和属主的权限相同; 对于目录权限设置,要用到-R参数。
默认权限分配的命令umask:工具
umask是经过八进制的数值来定义用户建立文件或目录的默认权限。umask表示的是禁止的权限。具体的细节,文件和目录略有不一样。ui
对于文件来讲,umask的设置是在假定文件拥有八进制666权限上进行,文件的权限就是666 减去umask的掩码数值 对于目录来讲,umask的设置是在嘉定文件拥有八进制777权限上进行,目录八进制权限777减去umask的掩码数值 默认 文件与 目录的权限算法 666 ==>文件的起始权限值 777 ==>目录的起始权限值 022- ==>umask的值 022- ==>umask的值 \---- --- 644 755
例如:操作系统
一、umask 044 && touch file1 && mkdir test && ll -al 验证 二、linux系统用户的家目录的权限是经过在配置文件中指定的,好比Centos中用的是/etc/login.defs文件 其中有个权限umask 为077。当添加用户的时,系统在/home中建立用户的家目录,而且设置它的权限为777-077=700,也就是说权限位rwx------. 三、umask 通常都是放在用户相关的SHELL的配置文件中,好比用户家目录下的.bashrc或.profile,也能够放在全局性的用户配置文件中,好比/etc/login.defs,还能够放在SHELL全局的配置文件中,好比/etc/profile或/etc/bashrc等。 四、umask放在相关的配置文件中,目的是当管理员建立用户时,系统会自动为用户建立文件或目录时配置默认的权限代码。 特别提示:在通常的生产场景,umask的使用很少见。
一、setuid和setgid位
特别提示:在通常的生产环境,运维人员使用setuid,setgid的状况很少见,也不推荐你们使用(setuid,sitgid自己功能不错,可是会带来安全隐患) 介绍: setuid和setgid位是让普通用户能够以root用户的角色运行只有root帐号才能运行的程序和命令。(注意区分su 及sudo的区别) 在Linux中,有时执行某一个命令的时,须要对另外一个文件进行操做,而这个文件有不是普通用户有权限进行操做。例如,修改用户密码的命令passwd,实际最终修改的是/etc/passwd文件,该文件的全部者和组都是root,同组用户和其余用户具备执行权限只有个root权限的用户才能更改,但普通用户也可使用该命令修改本身的密码 [root@localhost ~]# ls -l /etc/passwd -rw-r--r--. 1 root root 904 Jun 16 23:10 /etc/passwd 若是普通用户经过修改/etc/passwd修改本身的口令确定是不可完成的任务。做为普通用户能够经过passwd来修改本身的口令,既然没有权限,为何还能修改密码呢? 让咱们来看看passwd命令的权限: [root@localhost ~]# ls -l /usr/bin/passwd -rwsr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd 由于/usr/bin/passwd文件已经设置了setuid权限位(也就是rwsr-xr-x种的s),因此普通用户在执行/usr/bin/passwd命令时可使用root用户的权限,间接地修改/etc/passwd。以达到修改本身口令的权限 咱们知道Linux的用户管理是极为严格的,不一样的用户拥有不一样的权限,为了完成只有root用户才能完成的工做,咱们必须为普通用户提高权限,最多见的方法就是su或sudo.虽然setuid和setgid也是让普通用户超越自身拥有的普通权限达到使用root权限的方法,但不推荐你们使用,由于它能为系统带来安全隐患! 特别注意:setuid和setgid会面临风险,因此尽量的少用(尤为是使用不当)
实例:
咱们想让一个普通用户longge拥有root用户才拥有的rm删除权限,咱们除了用su或sudo临时切换到root身份或以root身份操做以外。还能够怎么使用呢 chmod 4755 /bin/rm 咱们就能够轻松删除。
二、setuid和setgid设置说明:
特殊权限位数字权限(八进制)方法 setuid位的设置是用4000,setgid占用的是八进制的2000; chmod 4775 命令 chmod 2755 文件名 特别说明:咱们见过的是小写的s;代表文件归属的用户组位有执行权限X.由于咱们用了2755,意思是说文件属组拥有可读可写可执行权限,所归属的用户组拥有可读可执行权限,并设置了setuid,因此这是原本文件所归属的用户组拥有了r-x,如今加了setgid位,就把其中的x换成了s。若是文件所归属的用户组没有执行权限,这个权限应该是S.同理setuid位中的大写的S和小写的s,也是这个原理。 若是原本在该位上有x,则这些特殊标志显示为小写字母(s,s,t)、不然为大写字母(S,S,T)
特殊权限字符式语法:
仍是用chmod的字符式语法,经过u+s 或u-s来增减setuid位,同理,咱们能够经过g+s或g-s来设置setgid位 file命令也能够用来查看setuid和setgid位,固然也能够查看文件的类型。
粘贴位及设置方法:
粘贴位的理解,咱们仍是先看一个例子 [root@localhost ~]# ls -ld /tmp/ drwxrwxrwt. 4 root root 4096 Jun 28 21:26 /tmp/
咱们看到/tmp权限最后一个字母是t.这就设置了粘贴位。 粘贴位的设置,用八进制的1000来表示。 一个目录即便设置了rwxrwxrwx的权限,若是是设置了粘贴位,除非目录的属主和root用户有权限删除它,除此以外其余用户都不能删除这个目录。用途通常是把一个文件的权限都打开,而后来共享文件,像/tmp目录同样。方便带来安全隐患,生产环境通常不使用。
文件或目录的归属关系:
文件或目录的归属关系主要定义文件或目录归属那个用户全部及归属于那个用户组全部
改变文件所属关系命令chown
当咱们要改变一个文件的属组,咱们所使用的用户必须是该文件的属主并且同时是木匾属组成员,或超级用户,只有超级用户才有改变文件的属主。
三、chown语法:
chown [选项] [全部者][:[组]] 文件 说明: chown所接的新的属组和信的属组之间应该以.或:链接,属主和属组任意一个能够为空。若是属主位空,应该是:属组;若是属组位空,那就不须要. 或:。 改变文件的属组命令chgrp
四、chgrp 语法:
chgrp [参数选项] 组 文件 它的用法和chown相似,只不过他仅仅是用来改变文件或目录的属组的,-R参数用于目录及目录一下搜友文件改变属组的。和chown也是同样的,能够吧chgrp看作是chown的一个子集。通常会用chown就能够了。 [root@localhost /]# ls /home/longge/file -l -rw-rw-r-- 1 500 500 0 Jun 29 00:06 /home/longge/file 上面的理智,为何属主和属组都是一个数值。出现这种状况的缘由是系统不存在与之对应的用户,因此只能以数字形式显示了。有时咱们删除了用户,但没有删除其余家目录,这种状况下,它的家目录的属主和属组也会变成数字; 提示:删除用户的时候能够执行userdel-r longge 连同家目录一块儿删除。
文件被修改或被访问的时间:
咱们经过查看文件的属性时,会发现他的时间标记。这个时间并不表明文件被建立的时候,他表明文件被访问或被修改的时间,文件被修改的时间比较好理解,好比咱们能够用编辑器来修改文本文件,而后保存一下,这样文件的时间就变了。 固然也有其余的工具不修改文件的内容,只修改文件的时间,这是能够被称为访问时间。好比touch工具能达到这个目的。
文件属性和文件系统属性的关系:
文件系统的特性决定文件属性的定义和修该,好比咱们经过chattr来锁定一个文件为不可修改或不可删除是,要用到chattr的+i参数;这在ext2和ext3的文件系统是有效的,可是reiserfs文件系统是没有任何效果的 chattr +i file 文件就没法被删除了。