linux学习--权限和特殊权限

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
7
d:目录文件
-:普通文件
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
7
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
//当用户的id大于199,并且用户名称和组名称相等的时候,umask的值就是002
//普通给用户id一般是大于199的,因而通过修改这个值来达到修改默认权限的目的

Contents
  1. 1. 1 linux文件权限概念
    1. 1.1. 权限的查看
    2. 1.2. 权限的详细信息
  2. 2. 修改文件属性和权限
    1. 2.1. 修改文件的拥有者和拥有组
    2. 2.2. 修改文件的权限,使用chmod命令
  3. 3. 三种特殊权限
    1. 3.1. SUID
    2. 3.2. SGID
    3. 3.3. Sticky Bit
  4. 4. 设置文件与目录的默认权限
    1. 4.1. umask的意义
    2. 4.2. umask的修改
,