为什么权限管理会用124三个数字?

系统 Linux
相信很多人在Linux里面,遇到文件权限问题的时候,总是喜欢把文件的权限修改为777。觉得这样可以解决一切问题。

 [[354717]]

相信很多人在Linux里面,遇到文件权限问题的时候,总是喜欢把文件的权限修改为777。觉得这样可以解决一切问题。

那么大家有没有想过一个问题,为什么数字7表示一个文件具有可读、可写、可运行的权限?对于当前用户,如果想给文件权限设置为可写可执行不可读,那么应该用哪个数字?如果想让文件可读可写不可执行,又要用哪个权限?系统强制要求SSH私钥的权限为600,这里的600表示什么意思?如果想再加一个修改权限,那么它用哪个数字比较好?

我们知道,1,2,4这三个数字可以表示7以内的所有数字。例如:

  1. 1: 1 
  2. 2: 2 
  3. 3: 1 + 2 
  4. 4: 4 
  5. 5: 1 + 4 
  6. 6: 2 + 4 
  7. 7: 1 + 2 + 4 

那么,如果要表示15以内的所有数字,还需要增加哪个数?你可能要想半天,才知道,需要增加一个8。

但是,如果我们从二进制的视角来看这些数字,就会发现实际上问题非常简单:

  1. 1: 001 
  2. 2: 010 
  3. 4: 100 

如果我们令可执行权限对应001,可写权限对应010,可读权限对应100。那么,可读又可写对应110,也就是十进制的6。可写又可执行对应011也就是十进制的3。显然,111为可读可写可执行,对应十进制的7。

如果我们要增加一个控制能否修改的参数,那么我们就可以用高4位来表示,可修改:1000。

由于 Linux 中,文件的权限分别需要为文件所有者、跟所有者在同一个用户组的其他人以及不在同一组的其他人设置。如果不能读,不能写,不能执行,就是二进制的000对应十进制的0.

对于 SSH 私钥这种极度敏感的文件,显然只能文件所有者可读可写,于是它的权限为:110 000 000也就是600了。

如果要对所有登录系统的人都可读可写可修改,显然文件权限为111 111 111自然就是十进制的777。

网上有一些垃圾文章,会引诱你把文件权限设置为777。只要你看到这种文章,那么这个文章的作者一定是一个水货。

请大家记住这样一句话:对于一个合理设计的软件、程序或者项目,如果某个地方需要你把权限设置为777才能使用,那么一定是你之前有地方搞错了!一定是你出错了。任何让你给文件设置权限为777的人,不是蠢,就是坏。

最后给大家出一道思考题,使用二进制位来表示权限有什么好处?

本文转载自微信公众号「未闻Code」,可以通过以下二维码关注。转载本文请联系未闻Code公众号。

 

责任编辑:武晓燕 来源: 未闻Code
相关推荐

2022-07-30 23:22:19

Linux权限数字

2013-01-06 10:25:25

2009-08-08 08:47:07

Windows 7新特性

2023-05-10 16:42:35

2015-06-23 09:10:04

Spark主机托管云平台

2024-04-19 14:27:39

2013-05-03 10:11:26

信息安全BYOT

2020-09-28 12:28:15

数字化企业数字文化

2020-06-11 09:00:27

SDN网络架构网络

2022-07-17 15:56:33

数字化转型工具IT

2021-07-27 18:13:00

比特币加密货币货币

2018-11-06 15:49:27

2010-03-10 10:41:23

Linux管理效率

2018-03-13 12:24:51

2024-03-27 08:21:07

reactUpdate生命周期

2017-09-15 17:07:04

2022-06-11 23:19:47

数字化转型数字化信息技术

2022-09-16 10:42:55

数字化转型IT团队

2023-09-08 14:09:31

云转型云技术

2012-02-28 09:41:00

Linux管理效率技巧
点赞
收藏

51CTO技术栈公众号