Linux文件权限
- 文件基本权限
- 文件特殊权限
文件基本权限
- 文件所属
U:所有者
就是创建文件的用户,这个用户拥有对它所创建的文件的一切权限,所有者可以允许其所在的用户组可以访问所有者的文件。
G:用户组
用户组是具有相同特征用户的逻辑集合,有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,显然这种方法不太合理;另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限。这就是用户组。
O:其它用户
系统内的其他所有者用户就是other用户类
- 权限说明
权限对文件和目录的影响有三种权限可以应用:读取,写入与执行,这些权限对访问文件和目录的影响如下:
权限 | 对文件的影响 | 对目录的影响 |
---|---|---|
r(读取) | 可以读取文件的内容 | 可以列出目录的内容(文件名) |
w(写入) | 可以更改文件的内容 | 可以创建或删除目录中的任意文件 |
x(执行) | 可以作为命令执行文件 | 可以访问目录的内容(取决于目录中文件的权限) |
对于文件来说:
- r:读
- w:写
- x:执行
对于目录来说:
- r:读(看到目录里面有什么) ls
- w:在目录里面建文件,删除,移动 touch mkdir rm mv cp
- x:进入 cd cat
示例:
权限标识 | 说明 |
---|---|
rwx------ | 文件所有者对文件具有读取、写入和执行的权限。 |
rwxr--r-- | 文件所有者具有读、写与执行的权限,用户组里用户及其他用户则具有读取的权限。 |
rw-rw-r-x | 文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。 |
drwx--x—x | 目录所有者具有读写与进入目录的权限,其他用户近能进入该目录,却无法读取任何数据。 |
drwx----- | 除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。 |
- 权限命令
chown
- 作用:修改文件所属者
语法:
- chown user:group filename 比如:chown hr:san a.txt 把文件的属主和属组改为hr,san
- chown user filename 比如:chown san a.txt 把文件的属主改为san用户
- chown :group filename 比如: chown :miao a.txt 把文件的属组改为miao这个组\
- chown user: filename 比如:chown san: a.txt 自动继承这个用户所有的组
- chgrp hr filename 比如: chgrp hr f.txt
- -R :递归(目录下的所有内容都更改,否则只修改目录)
示例:
[root@love ~]# touch {a,b,c}.txt
[root@love ~]# ll *.txt
-rw-r--r-- 1 root root 0 5月 8 21:03 a.txt
-rw-r--r-- 1 root root 0 5月 8 21:03 b.txt
-rw-r--r-- 1 root root 0 5月 8 21:03 c.txt
chmod
- 作用:修改文件,目录的权限
- 语法:chmod [对谁操作] [操作符] [赋于什么权限] 文件名
对谁操作:
- u----> 用户user,表示文件或目录的所有者
- g---->用户组group,表示文件或目录所属的用户组
- o---->其它用户others
- a---->所有用户all
操作符:
- + 添加权限
- - 减少权限
- = 直接给定一个权限
- 权限:r w x
例如下在的组合:
- u-w user 拥有者
- g+x group 组
- o=r other 其他人
- a+x all 所有人
示例:chmod修改权限
[root@love ~]# touch 1.txt
[root@love ~]# ll 1.txt
-rw-r--r-- 1 root root 0 5月 8 21:20 1.txt
[root@love ~]#
[root@love ~]# chmod u-w 1.txt
[root@love ~]# ll 1.txt
使用八进制(0-7)数字表示权限法
权限 | 二进制值 | 八进制值 | 描述 |
---|---|---|---|
--- | 000 | 0 | 没有任何权限 |
--x | 001 | 1 | 只有执行权限 |
-w- | 010 | 2 | 只有写入权限 |
-wx | 011 | 3 | 有写入和执行权限 |
r-- | 100 | 4 | 只有读取权限 |
r-x | 101 | 5 | 有读取和执行权限 |
rw- | 110 | 6 | 有读取和写入权限 |
rwx | 111 | 7 | 有全部权限 |
语法:chmod 755 文件或文件夹名字
chmod a=rwx b.txt 等于 chmod 777 b.txt
文件的特殊权限
- 文件的特殊权限:suid sgid sticky
SUID(set uid设置用户ID):
限定:只能设置在二进制可执行程序上面。对目录设置无效
功能:程序运行时的权限从执行者变更成程序所有者的权限
SGID:
限定:既可以给二进制可执行程序设置,也可以对目录设置
功能:在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会,继承上级目录的所属组
Stickybit:粘滞位权限是针对目录的,对文件无效,也叫防删除位
这3个特殊权限对应的数值为
SUID | SGID | Stickybit |
---|---|---|
u+s或u=4 | g+s或g=2 | o+t或o=1 |
SUID:SUID属性一般用在可执行文件上
功能:当用户执行该文件时,会临时拥有该执行文件的所有者权限。使用”ls -l” 或者”ll”命令浏览文件时,如果可执行文件所有者权限的第三位是一个小写的”s”,就表明该执行文件拥有SUID属性。比如/usr/bin/passwd文件
SGID:既可以给二进制可执行程序设置,也可以给目录设置。
功能:在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会继承上级目录的权限。
Stickybit:只作用于目录
功能:目录下创建的文件只有root、文件创建者、目录所有者才能删除。
# 例:系统中的tmp目录就是这样
[root@love ~]# ll -d /tmp/
drwxrwxrwt. 11 root root 4096 Jan 24 19:41 /tmp/
# 用法:
chmod o+t /tmp/test/
- 文件扩展权限ACL
扩展ACL :access control list
例1:设置用户mk对文件a.txt拥有的rwx权限 ,mk不属于a.txt的所属主和组,mk是other。怎么做?
[root@love ~]# touch /tmp/a.txt
[root@love ~]# getfacl /tmp/a.txt
getfacl: Removing leading '/' from absolute path names
# file: tmp/a.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
#setfacl -m u:mk:rwx /tmp/a.txt u : 设置某个用户拥有的权限
[root@love ~]# getfacl /tmp/a.txt
getfacl: Removing leading '/' from absolute path names
...
user::rw-
user:mk:rwx
[mk@love ~]$ vim /tmp/a.txt
[mk@love ~]$ ll /tmp/a.txt
-rw-rwxr--+ 1 root root 8 5月 8 22:42 /tmp/a.txt
例2:给目录加扩展权限
[root@love ~]# mkdir /tmp/test
setfacl -m d:u:mk:rwx /tmp/test # -d default 设置默认acl,对目录有效,此目录下新建的目录或文件都继承此acl权限
# 例:测试一下 -d 参数:
[root@love ~]# mkdir /tmp/test
[root@love ~]# setfacl -m d:u:mk:rwx /tmp/test
[root@love ~]# getfacl /tmp/test/
getfacl: Removing leading '/' from absolute path names
# file: tmp/test/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:mk:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
[root@love ~]# touch /tmp/test/a.txt
[root@love ~]# mkdir /tmp/test/data
[root@love ~]# getfacl /tmp/test/a.txt #因为-d参数,所以test下所有创建的文件和目录都继承了默认的acl权限
getfacl: Removing leading '/' from absolute path names
# file: tmp/test/a.txt
# owner: root
# group: root
user::rw-
user:mk:rwx #effective:rw-
group::r-x #effective:r--
mask::rw-
other::r--
[root@love ~]# getfacl /tmp/test/data
getfacl: Removing leading '/' from absolute path names
# file: tmp/test/data
# owner: root
# group: root
user::rwx
user:mk:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:mk:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
例3:给目录下所有文件都加扩展权限
[root@love ~]# setfacl -R -m u:lee:rw- testdirectory/ #-R一定要在-m前面,表示目录下所有文件
[root@love ~]# setfacl -x u:mk /tmp/a.txt # 去掉单个权限
[root@love ~]# setfacl -b /tmp/a.txt # 去掉所有acl权限
实战:创建一个让root都无法删除的文件
[root@love ~]# touch hack.sh aa.sh
[root@love ~]# ll hack.sh aa.sh
-rw-r--r-- 1 root root 0 May 24 21:29 aa.sh
-rw-r--r-- 1 root root 0 May 24 21:29 hack.sh
[root@love ~]# rm -rf aa.sh
# 黑客使用xShell悄悄执行在后台添加attr扩展属性:(这个别让学员看到^_^)
[root@love ~]# chattr +i hack.sh
Comments | NOTHING
该文章已经关闭评论