linux文件权限

众所周知,linux是多用户多任务的操作系统,linux有很多用户和用户组,这就决定某些文件不想让某个用户读取或者写入,所以呢我们要建立文件权限的概念。

1.查看文件属性:

以第一列数据为例我们来分析一下:

- rw-r--r-- 1 root root 2229 Jan 20 2015 anaconda-ks.cfg

文件类型文件权限 连接数文件所属用户 文件所属组 文件大小 最后一次修改日期文件名称

第一个字符是文件类型 - 表示文件 ,d 表示目录 , l 表示连接文件 , b 表示设备文件里边可供存储的接口块设备, c 表示设备文件里的串口设备(如键盘,鼠标等)

 

第二列为文件权限分user、group、others3种身份,我们用u, g,o来代表三种身份,每个用户有读取(r),写入(w),执行(x)三种权限

第三列为连接数,当是文件时,表示文件的连接数(一般为硬链接)至于为什么是硬链接不是软连接这里暂不做介绍,明白软硬链接的区别就懂了。当是目录时表示该目录下文件的个数

2.修改文件属性与权限:

 

chown     username   filename          # 修改文件所有人
chgrp     username   filename          # 修改文件所属组
chmod     ugo+-=rwx  filename          #修改文件权限  

 

改变文件所有者:

 

<strong>[root@burgess ~]# chown bin test  #将文件所有者改为bin
[root@burgess ~]# ll test 
-rw-r--r-- 1 bin root 0 Aug  2 15:30 test
[root@burgess ~]# chown root:root test  #将文件所有人和所属组改为root
[root@burgess ~]# ll test 
-rw-r--r-- 1 root root 0 Aug  2 15:30 test</strong>

 

 

改变文件所属组:

<span style="color:#666666"><strong>[root@burgess ~]# chgrp -R  dirname/filename
参数:-R 表示递归,连同子目录下的文件目录
[root@burgess ~]# ll test 
-rw-r--r-- 1 root users 0 Aug  2 15:30 test</strong></span>


改变文件权限:

 

 

 

 

文件的权限数值表示为   r :4 ,  w: 2 , x:1

每种身份的权限分数是要累加的,例如当某个文件权限是【-rwxrw-r--】则相应的分数为:

owner = rwx = 4+2+1 = 7

group = rw- = 4+2+0 = 6

others = r-- = 4+0+0 = 4

既可以使用数字也可以用符号进行权限的修改

 

<strong>[root@burgess ~]# ll tcps.c 
-rw-r--r-- 1 root root 1018 May  1 14:31 tcps.c
[root@burgess ~]# chmod u=rwx,go=rx tcps.c      #修改文件权限
[root@burgess ~]# ll tcps.c 
-rwxr-xr-x 1 root root 1018 May  1 14:31 tcps.c

[root@burgess ~]# chmod a-x tcps.c 
[root@burgess ~]# ll tcps.c 
-rw-r--r-- 1 root root 1018 May  1 14:31 tcps.c
[root@burgess ~]# chmod 644 tcps.c 
[root@burgess ~]# ll tcps.c 
-rw-r--r-- 1 root root 1018 May  1 14:31 tcps.c</strong>

 

 

3.文件默认权限umask:

 

 

umask是指目前用户在创建新文件或者目录时的默认权限值

 

 

[root@burgess ~]# umask
0022
[root@burgess ~]# umask -S
u=rwx,g=rx,o=rx

 

umask的后三位与一般权限有关。第一位与特殊权限有关暂时不考虑

 

用户创建“文件”时,则默认没有可执行权限(x),即只有r、w,也就是最大为666 【-rw-rw-rw-】

若用户新建“目录”,则由于x与是否可以进入目录有关,因此默认所有权限开放777【drwxrwxrwx】

umask值是“默认值要减掉的权限”,r、w、x分别是4、2、1也就是说要拿掉读权限就是4,拿掉写权限就是2

默认root用户umask值为022,也就是说所属用户并没有被拿掉任何权限,group和others被拿掉了2(也就是写权限)

新建文件时:(-rw-rw-rw-)- ( -----w--w- ) ==>-rw-r--r--

新建目录时:(drwxrwxrwx)- (d----w--w-)==>drwxr-xr-x

umask对新建文件与目录的默认权限有很大关系,在计算时尽量遵照上面的按符号计算的方式来算,不可直接用数值进行计算

假设umask为003,去掉的权限应该是-------wx,因此

新建文件:(-rw-rw-rw-)-(-------wx)= -rw-rw-r--

新建目录:(drwxrwxrwx)-(--------wx) = drwxrwxr--

但是要用文件默认属性666与目录默认属性777来与umask进行想减运算这个时候就会有问题

文件:666 - 003 = 663就变成了-rw-rw-wx显然不对,原本文件就已经去除x的默认属性了,这里又突然冒出来了

所以在进行运算是最好采用符号计算。

修改umask值

 

<strong>vim /etc/bashrc				#71行是普通用户的更改,73是超级用户的更改
vim /etc/profile			#60行是普通用户的更改,62是超级用户的更改
source /etc/bashrc /etc/profile        	##让更改立即生效</strong>

 

 


4.文件隐藏属性:

chattr 和 lsattr

chattr设置文件隐藏属性用法:

 

chattr    【+-=】 【ASacdistu】 filename/dirname

a 属性设置之后,这个文件只能增加数据,不能删除也不能修改数据
i 属性可以使文件不能删除改名

[root@burgess ~]# chattr +i attrtest 
[root@burgess ~]# rm -f attrtest 
rm: cannot remove 'attrtest': Operation not permitted     #加上i属性后文件不可删除

[root@burgess ~]# lsattr attrtest                         #查看隐藏属性
----i----------- attrtest

 

 

 

 

注意:chattr命令只能在Ext2/Ext3的文件系统上面生效


5.文件特殊权限:

 

<1> SUID
u+s###针对文件,文件记录动作在执行时是以文件所有人身份执行的,与是谁发起的无关
chmod u+s file
chmod 4777 file

 

 <2> SGID

g+s##对于目录,在目录中创建的文件都自动归属到目录所在组,

##对于二进制文件,文件内记录的程序在执行时和执行者的组身份没有关系,而是以二进制文件的所有组的身份执行的

chmod g+s file|directory
chmod 2777 file|directory

<3>sticky bit

o+t###只针对目录有效,当一个目录上有t权限时,这个目录中的文件只能被文件拥有者删除
t=1
chmod o+t directroy
chmod 1777 directory

 

 

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值