Linux 文件权限

目标内容
文件的基本权限
特殊权限


1.文件的基本权限
权限的作用
通过设定权限可以达到以下三种访问限制权限:
 只允许用户自己访问;
 允许一个预先指定的用户组中的用户访问;
 允许系统中的任何用户访问。

查看文件权限
我们可以通过ls命令来查看一个文件的具体信息,加参数 –l 可以查看这个文件的权限信息

-rw-r--r--.  1 root root       16 Jul 28 06:39 adjtime

解析
- rwx         r-x         r-x
类型 拥有者的权限 所属组的权限 其他人的权限
user1 user1 time         FILENAME
拥有者 属组 最后修改时间 对象

其中:文件类型,
可以为p、d、l、s、c、b和 –
 p表示命名管道文件
 d表示目录文件
 l表示符号连接文件
 -表示普通文件
 s表示socket文件
 c表示字符设备文件
 b表示块设备文件

引用
权限说明

对于文件:
 r:读  
 w:写  
 x:执行

对于目录:
 r:读(看到目录里面有什么)     ls
 w:建文件、删除、移动 touch   mkdir    rm   mv  cp
 x:进入 cd   cat

具体说明:
r (Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限.
w (Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
x (execute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
   -:表示不具有该项权限
结束:
对于文件的所有者或者是属主, root可以将这些权限改变为任何它想指定的权限;
例如:一个文件只有读权限,那么它就禁止任何普通用户对它的修改;如果文件只有执行权限,那么系统允许它像一个程序一样执行

文件拥有者
所有者-用户组-其他用户
所有者: 就是创建文件的用户,这个用户拥有对它所创建的文件的一切权限,所有者可以允许其所在的用户组可以访问所有者的文件。
用户组: 用户组是具有相同特征用户的逻辑集合,有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,显然这种方法不太合理;另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限。这就是用户组。
其它用户:系统内的其他所有者用户就是other用户类

常见几种文件权限组成
 -rwx------:文件所有者对文件具有读取、写入和执行的权限。
 -rwxr--r--: 文件所有者具有读、写与执行的权限,用户组里用户及其他用户则具有读取的权限
 -rw-rw-r-x:文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。
 drwx--x—x: 目录所有者具有读写与进入目录的权限,其他用户近能进入该目录,却无法读取任何数据。
 drwx------: 除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。

每个用户都拥有自己的专属目录,通常放置在/home目录下
这些专属目录的默认权限为【rwx------】表示目录所有者本身具有所有权限,其他用户无法进入该目录

修改权限
修改权限的相关命令:chmod
作用:修改文件权限
用法:(中间的+、-表示添加还是删除该用户的对应权限)
u-w user 拥有者
g+x group 组
o=r other 其他人
a+x all 所有人

删除文件的写权限
[root@localhost ~]# chmod u-x a.txt

让所有者所在的组用户拥有执行的权限
[root@localhost ~]# chmod g+x a.txt

删除其它用户对文件的读权限
[root@localhost ~]# chmod o-r a.txt

修改文件权限为所有用户都可以读
[root@localhost ~]# chmod a=r a.txt

对目录的权限修改
[root@localhost ~]# chmod u-x /abc/
[root@localhost ~]# chmod u=rwx /abc/    # 一起修改多个权限


修改文件的拥有者及所属组
用到的命令:chown
作用:修改文件拥有者和所属组
语法:
 chown user:group 对象
 chown user 对象
 chown :group 对象
 -R :递归(目录下的所有内容全部更改,否则只修改目录)

[root@localhost ~]# chown -R test:test /abc/   # 修改abc 目录下的所有文件的用户和用户组
[root@localhost ~]# chown -R test /abc/    #只修改拥有者
[root@localhost ~]# chown -R :test /abc/   #只修改用户组

使用数字表示权限
rwx
r - - - w - - - x
100 010 001 二进制
4 2 1 十进制
组合 值
rw- 4+2=6
r-x 4+1=5
rw- r-- r-- rw-=6     r--=4    r--=4    rw-r—r--=644
[root@localhost ~]# chmod -R 644 /abc/ 

补码
[root@localhost ~]# touch 4.txt
[root@localhost ~]# ll 4.txt
-rw-r--r-- 1 root root 0 Mar 10 13:59 4.txt
为什么我们创建的文件的权限是644呢?
如何改变这个默认权限呢?

umask命令
umask命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字
对于文件来说,这一数字的最大值分别是6;系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限
对于目录来说,则允许设置执行权限,这样针对目录来说,umask中各个数字最大可以到7

该命令的一般形式为:umask nnn 其中nnn为umask置000 - 777
计算方法:
文件默认权限=666-umask值   666-022=644
目录默认权限=777-umask 值  777-022=755

我们一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中设置umask值。
if [ $UID -gt 199 ] && [ "`id -gn `" = "`id -un `"];then
   umask  002
else
   umask  022
fi


2. 特殊权限
其实文件与目录设置不止这些,还有所谓的特殊权限。由于特殊权限会拥有一些“特权”.
因而用户若无特殊需求,不应该启用这些权限,避免安全方面出现严重漏洞,造成入侵,甚至摧毁系统!!!

特殊权限:
 SUID:限定:只能设置在二进制可执行程序上面。对目录设置无效
   功能:程序运行时的权限从执行者变更成程序所有者
 SGID:限定:既可以给二进制可执行程序设置,也可以对目录设置
          功能:在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会   继承上级目录的所属组
 Stickybit:粘滞位权限是针对目录的,对文件无效,也叫防删除位

s对应的数值为

SUID SGID Stickybit
u=4 g=2 o=1

注意:
1、如果一个文件被设置了SUID或SGID位,会分别表现在所有者或同组用户的权限的可执行位上;
2、linux系统规定,如果原本该位上有x,则这些属性显示问小写字母(有效),否则显示大写字母(无效)
3、由于SUID和SGID是在执行程序(程序的可执行位被设置)时起作用,而可执行位只对普通文件和目录文件有意义,所以设置其他种类文件的SUID和SGID位是没有多大意义的


给文件加SUID和SUID的命令如下:
 chmod u+s filename 设置SUID位
 chmod u-s filename 去掉SUID设置
 chmod g+s filename 设置SGID位
 chmod g-s filename 去掉SGID设置
 chmod o+t filename 设置SBIT位
 chmod o-t filename 去掉SBIT设置
 chmod 7777 filename 添加SUID,SGID,SBIT
 chmod 7770 filename 去掉SUID,SGID,SBIT

文件权限显示区别
有x权限 无x权限
sst     SST

猜你喜欢

转载自takeme.iteye.com/blog/2361405