1、Linux权限介绍
2、Linux文件属性
3、如何改变Linux文件属性权限
4、新建文件默认权限
1、Linux权限介绍
Linux是个多人多任务系统。而为了让各个用户具有较保密的文件数据,因此文件的权限管理就比较重要了。
Linux一般将文件存储的身份分为三个类别,分别是owner/group/other,而且三种身份各有read/write/excude等权限。
Linux系统中,默认情况下:
用户相关信息存放在/etc/passwd;密码存放在/etc/shadow;组名都存放在/etc/group。
文件权限:
r:可使用文件查看类工具获取其内容
w:可修改其内容
x:可以把此文件提请内核启动为一个进程
目录权限:
r:可以使用ls查看此目录中文件列表
w:可在此目录中创建文件,也可删除此目录中的文件
x:可以cd进入此目录,也可以执行目录里面的文件。执行是基础权限。
目录的执行权限是基础权限:
- ls命令需要r和x权限,否则看不了文件的元数据,只能看到文件明名,也无法读目录里面的文件
- 创建和删除目录的文件必须同时有目录的w和x权限
X(x权限特殊形式)
对于目录,给目录执行权限。
对于文件如果文件任意一种角色有执行权限,那么文件会被加上执行权限;如果文件三种角色都没有执行权限,那么X不会给该文件执行权限
我们想给某个目录下所有子目录执行权限,而不给目录下的文件执行权限,就用到X。
例子:chmod -R o+X /app
注意:判断一个用户能否删除文件,是看该用户对于文件所在的目录的权限,而不是用户对于文件的权限。因为删除某个文件,本质上是删除文件所在目录上的文件名数据。
2、Linux文件属性
[root@CentOS7 ~]#ls -al
dr-xr-x---. 14 root root 4096 May 18 10:18 .
dr-xr-xr-x. 18 root root 244 May 17 14:50 ..
-rw-------. 1 root root 1758 May 17 14:51 anaconda-ks.cfg
-rw-------. 1 root root 962 May 18 10:18 .bash_history
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
drwx------. 11 root root 222 May 17 15:05 .cache
drwx------. 17 root root 4096 May 17 16:34 .config
文件的属性有七个字段,其中第一个字段分别代表文件的类型以及owner/group/other三种身份的read/write/execude权限。
系统判断某个用户的权限时,匹配的顺序是:是否文件所有者>是否属于文件所属组>other。
假如用户已经匹配上某种身份,不会再去看其他身份的权限。
例如这个文件
----r--r--. 1 luo luo 176 Dec 29 2013 lizi
这个文件中,luo用户没有任何读写执行权限。 因为luo用户是文件的owner,权限是---,因此系统不会看组的权限,也不会看other的权限。
root帐号有所有文件的读写权限。
一个文件如果所有角色都没有执行权限,那么root也没有执行权限。
一个文件如果某个角色有执行权限,那么root也有执行权限。(root可以蹭权限)
3、如何改变Linux文件属性权限
chgrp
改变文件所属群组(普通用可以把属于自己的文件改成自己所在的组)
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
-R 递归
chown
改变文件拥有者(普通用户无权限把属于自己的文件权限改成他人的)
chown [OPTION]... [OWNER][:[GROUP]] FILE...
用法:
OWNER
OWNER:GROUP
:GROUP
命令中的冒号可用.替换
-R: 递归
chown [OPTION]... --reference=RFILE FILE...
chmod
改变文件的权限
改变文件权限的方法有两种:分别可以用数字或者符号进行权限的变更。
(1)数字类型改变文件权限
权限分数对照如下:
r:4
w:2
x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累
加的,例如当权限为[-rwxrwx---] 分数则是:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0
例子:chmod 777 .config
//把.config文件的owner/group/other的权限改为rwxrwxrwx
(2) 符号类型改变文件权限
u、g、o分别代表user、group、other,此外a代表all即全部身份而
rwx分别带表读写执行权限。-表示去除,+表示增加,=表示赋予。
例子:chmod g-wr .config //e.config的group增加w和r权限
4、新建文件默认权限
我们创建一个文件,系统会默认设置文件的权限值,umask就是用来设置新文件权限的掩码命令。
umask [选项] [掩码]
当新目录或者文件被创建时,其最初的权限由umask决定。用户每次注册进入系统时,umask命令都被执行,并自动设置掩码改变默认值,新的权限将会把旧的覆盖。
umask:从777(目录)或者666(文件)中,将文件对应的权限位去掉,得到默认权限。
算法:将umask取二进制反码,和777或者666进行与运算。
例子:umask为021的时候,系统创建新文件的权限计算如下:
021---->000010001
反码--->111101110
666---->110110110
权限--->110100110--->646--->rw-r--wr
umask: 查看
umask #: 设定
umask 002
umask –S 模式方式显示
umask –p 输出可被调用
全局设置: /etc/bashrc 用户设置: ~/.bashrc
5、linux文件的特殊权限SUID、SGID、Sticky
(1) 任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行权限
(2) 启动为进程之后,其进程的属主为发起者,进程的属组为发起者所属的组
(3) 进程访问文件时的权限,取决于进程的发起者
- 进程的发起者,同文件的属主:则应用文件属主权限
- 进程的发起者,属于文件属组;则应用文件属组权限
- 应用文件“其它”权限
SUID和GUID作用在可执行的二进制程序文件上
SUID:让本来没有执行该文件的用户运行这个程序时,继承了程序所有者的权限,从而可以访问没有权限访问的资源。
权限设定:
chmod u+s FILE
chmod u-s FILE
例如普通用户是没有对shadow的读写权限的,但当普通用户使用passwd时,继承了passwd这个程序的所有者root的权限,从而有了对shadow文件修改的权限。(当然,普通用户只能修改自己的密码)
GUID:让本来没有执行该文件的用户运行这个程序时,继承了程序所属组的权限,从而可以访问没有权限访问的资源。
当SUID作用在目录下的作用另有含义:新建文件的所属组自动继承父目录所属组。
Sticky:作用在目录下,只有文件所有者和root才能删除该文件。
sticky 设置在文件上无意义
权限设定:
chmod o+t DIR
chmod o-t DIR