[Linux]权限详解

前言

权限是操作系统用来限制资源访问的机制,权限一般分为读、写、执行。

系统中每个文件都拥有特定的权限、所属用户及所属组,通过这样的机制来限制哪些用户、哪些组可以对特定的文件进行什么样的操作。

每个进程都是以某个用户的身份运行,所以进程的权限与该用户的权限一样,用户的权限越大,该进程所拥有的权限也就越大。

文件权限

权限对文件的影响对目录的影响
r(读取)可读取文件内容 可列出目录内容
w(写入) 可以修改文件内容(注:这里很多人存在误解,文件拥有W权限,不一定可以删除文件) 可在目录创建、删除文件
x(执行) 可以作为命令执行(注:这里很多人存在误解,文件拥有X权限,不一定可以执行文件) 可访问目录内容

权限说明

一般我们将r权限用4表示,w权限用2表示,x权限用1表示,-表示无权限

例:
  rwx  ->  7
  r-x  ->  5
  r--  ->  4
  -wx  ->  3
  -w-  ->  2
  --x  ->  1
  ---  ->  0

#在Linux中如何查看权限
[root@Jia user]# ll
drw-r--r-x. 2 root test  4096 69 19:15 ceshi
#对上面这一行的解释
1> d : 表示是一个目录,同时还有以下情况, -:文件,l:软链接 , c:字符设备, b:块文件  
2> rw- : 表示所有者权限
3> r-- : 表示用户组权限
4> r-x : 表示其他人权限
5> 2 : 表示该目录下有2个子目录
6> root : 表示该目录所有者为root
7> test : 表示该目录所属的用户组为test
8> 4096 : 文件大小,目录都是4096
9> 69 19:15 : 最后创建/修改的时间
10> ceshi : 文件/文件夹名词

相关命令

更改用户所在组
usermod -g group username
更改文件的所有者
chown username file
更改文件所在组
chgrp group file
更改文件及所有子目录的所有者与用户组
chown -R username:group file

#注:只能在root用户下才能chown,chgrp 
更改文件权限
chmod [777] file

重点

#很多人对文件的w和x权限有误解,不是文件拥有w权限就一定可以删除文件!!
#并且文件拥有x权限,不一定代表一定可执行!!
#下面我会进行举例说明

准备工作

# 1> 创建两个用户 wukong  bajie
# 2> 创建一个目录 test
# 3> 在test目录下创建文件test.sh
# 4> test.sh 中的内容为 echo "haha"
# 5> test目录的所有者与test.sh所有者均为用户wukong  

文件x权限详解

wukongbajie
#修改test与test.sh的权限
1> cd test/
2> chmod 777 test/
3> cd test/
4> chmod 777 test.sh
5> cd test/
6> ll
7> -rwxrwxrwx. test.sh
8> chmod 766 test/
9> ./test.sh
-bash: ./test.sh: 权限不够

这里执行test.sh为什么权限不够了呢??

#注:此时test.sh的权限还是rwxrwxrwx,但是为什么没有x权限了??

详解:
  从上面例子中我们不难发现,test目录权限已经失去了x权限
  所以得出结论
  # 文件的x权限与父目录有密切关系!
  # 文件做x权限时不仅需要自己本身需要有x权限,同时父目录必须也必须有x权限!

文件w权限详解

wukongbajie
#修改test与test.sh的权限
1> cd test/
2> chmod 777 test/
3> cd test/
4> chmod 777 test.sh
5> cd test/
6> ll
7> -rwxrwxrwx. test.sh
8> chmod 755 test/
9> rm -rf test.sh
rm: 无法删除”test.sh”: 权限不够

这里执行rm为什么权限不够了呢??

#注:此时test.sh的权限还是rwxrwxrwx,但是为什么没有w权限了??

详解:
  从上面例子中我们不难发现,test目录权限已经失去了x权限
  这里直接给出结论
  # 文件的w权限与父目录有密切关系!
  # 文件做w权限时父目录必须有w权限,自己本身有没有w权限都可以删除!

关于一个w权限的一个坑点

wukongbajie
#修改test与test.sh的权限
1> cd test/
2> chmod 777 test/
3> cd test/
4> chmod 755 test.sh
5> ll
-rwxr-xr-x. 1 wukong yaoguai 27 6月 9 20:48 test.sh
5> cd test/
6> ll
7> -rwxr-xr-x. 1 wukong yaoguai 27 6月 9 20:48 test.sh
8> vim test.sh
(注此时会提示是只读文件,没关系继续修改文件保存) 9> ll
10>-rwxr-xr-x. 1 bajie yaoguai 30 6月 9 21:01 test.sh
11> ll
-rwxr-xr-x. 1 bajie yaoguai 30 6月 9 21:01 test.sh

注意坑点来了!为什么用户 bajie 明明没有w权限,却把文件修改了?并且文件所有者都变为了 bajie? !!

针对这种情况,我做了以下测试

1

#以下是我对此的理解
#1> 当父文件夹拥有x权限(r权限可有可无),子文件必须拥有w权限才能修改,并且所有者不会变化
#2> 当父文件夹拥有rwx权限时,子文件只有rw及以上权限才能修改,并且所有者不会变化
#3> 当父文件夹拥有rwx权限时,子文件权限若在rw(6)以下,可以强制修改,但是所有者也会发生变化

至此Linux的权限介绍完毕

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值