1 linux文件权限概念
权限的查看
可以通过ls -l
命令来查看文件的详细信息,其中就列出了文件的权限
列出的的一共有7列分别为:
以-rw-r--r--. 1 root root 2172 Jul 6 11:11 file
为例1
2
3
4
5
6
7"-rwxrwxrwx.": 文件的权限,总共有十个字符包括点
"1": 文件的硬链接的个数
"root": 文件所属的用户
"root": 文件所属的组
"2172": 文件的大小(默认单位bytes)。
"Jul 6 11:11": 这个文件的创建日期或者时最近一次的修改日期
"file" :文件名称
权限的详细信息
1 第一个字符代表文件的类型,文件总共有以下几种类型1
2
3
4
5
6
7d:目录文件
-:普通文件
l:链接文件(软链接)
b:块设备文件(可供村粗的接口设备)
c:串行端口设备(鼠标,键盘)
p:命名管道关键
s:套结字文件(通常用在网络数据连接)
2 后面九个字符分别为三种不同的身份所具有的权限1
2
3前三个: 文件所有者
中三个: 和文件所有者同一组
后三个: 其他人
3 普通文件和目录的文件夹权限rwx
含义1
2
3
4
5
6
7
8#普通文件
r: 可以读取文件内容
w: 可以编辑修改文件内容
x: 可以运行这个文件
#目录
r: 可以用ls命令查看目录中文件的名称
w: 可以在目录中新建文件
x: 可以用cd命令进入该目录
4 最后一个字符的含义1
2
3. all_T_SELINUX_ONLY
+ acl_T_YES
空白 没有acl
存在意义:请点我
修改文件属性和权限
修改文件的拥有者和拥有组
chown
命令
chown feng.feng file
把用有者改为feng,拥有组改为feng
chown feng. file
只改拥有者为feng
chown .feng file
只改拥有组为feng
chgrp
命令
chgrp feng file
把拥有组改成feng chgrp
命令只能用来修改组
修改文件的权限,使用chmod
命令
chmod
用法有多种
1 直接修改
(1) chmod u=rx,g=rx,o=r file
更改后的权限为r-xr-xr–
(2) chmod 554 file
更改的权限为554
系统给r,w,x分别赋值为4,2,1则通过三种权限相加值来修改权限
2 通过增加减少权限修改
(1) chmod u+x file
给file的所有者增加可执行权限
(2) chmod o-x file
给其他用户减少可执行权限
u 代表拥有者
g 代表拥有组
o 代表其他
a 代表所有
三种特殊权限
SUID
用于二进制的可执行程序
以/usr/touch为例
首先 ll /usr/bin/touch
当前的权限: -rwxr-xr-x. 1 root root 62432 Jan 25 2014 /usr/bin/touch
默认情况当一个目录对于others若没有w权限,是不能在目录下创建文件的,
给touch增加s权限chmod u+s /usr/bin/touch
当touch拥有s权限时,其他用户用touch命令会调用root的权限,就相当于是root在执行
当查看touch出来的文件时,可以发现,文件的所有者并不属于执行touch的用户,
而是属于root,而拥有组是用户的所在组
SGID
通过对文件和目录的group添加s权限chmod g+s test/
(1) 如果SGID针对的是文件:
文件必须为二进制程序
程序执行者对于改程序有x权限
执行者在执行的过程中会获得改群组的支持
(2) 如果SGID使用在目录上:
其他用户对于次目录具有r和x权限,能够进入目录
用户在此目录下的有效群组将会变成该目录的有效群组
若此用户在此目录下具有w权限,则使用者创建的新文件属于的组与目录岁的组群相同
Sticky Bit
给目录加t权限chmod o+t test
给test加上t权限
这个权限是目录的特殊权限简称SBIT
(1) 当用户对于此目录具有r与x权限时,用户能够进入此目录
(2) 用户在改目录下创建的文件,只有自己和root能够删除,其他用户不能删除
设置文件与目录的默认权限
umask的意义
linux系统的默认权限时由umask
决定的,文件和目录的默认权限也是有区别的
umask查看,直接输入umask
root:# umask
默认为0022
feng:$ umask
默认为0002
当用户创建文件时系统根据umask值来决定文件的权限
文件 666-umask(值的后三位) 按位相减
目录 777-umask(值的后三位) 按位相减
文件的x权限默认情况下时被取消的,所以满权限就是666
而目录时包含x的,所以时777
umask的修改
临时修改 umask 新的umask值
永久修改
更改配置文件,更改vi /etc/porfile
1
2
3
4
5
6
7if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
//当用户的id大于199,并且用户名称和组名称相等的时候,umask的值就是002
//普通给用户id一般是大于199的,因而通过修改这个值来达到修改默认权限的目的