大家好,又见面了,我是你们的朋友全栈君。
有个校招的同事问我:
(1) 使用ls –l查看文件,前面显示的-rwxrwxr-x是什么意思?
(2) chmod 755 xxx.sh又是什么意思?
1分钟简单说下,这两个和权限相关的问题。
先说下文件类型,访问方式,权限分类。
Linux下,分为这么几种文件类型:
-
d:目录directory
-
l:符号链接link
-
s:套接字socket
-
c:字符设备char
-
p:命名管道pipe
-
–:其他,不属于以上几类
文件创建后,有三种访问方式:
-
读(read):显示内容
-
写(write):编辑内容,删除文件
-
执行(execute):执行文件
针对用户,文件有三类权限:
-
创建人(user)权限:创建文件的人
-
组(group)用户权限:和拥有者处于同一用户组的其他人
-
其他(other)用户权限
了解了文件类型,访问方式,三类权限之后,第一个问题就比较好解答了。
例如,上述a.out的第一列
-rwxrwxr-x
共有十个字符,分为四个部分:
-
第1个字符表示文件的类型:[-]表示普通文件
-
第234字符表示创建人的权限:[wxr]表示可读,可写,可执行
-
第567字符表示组用户权限:[wxr]表示可读,可写,可执行
-
第890字符表示其他用户权限:[r-x]表示可读,可执行
如何改变文件的权限呢?
chmod命令用于改变文件的权限,它有两种使用方法。
第一种:chomod [who] [operator] [permission] filename
[who]
-
u:创建人
-
g:组用户
-
o:其他用户
-
a:所有用户(all)
[operator]
-
+:增加权限
-
–:取消权限
-
=:设定权限
[permission]
-
r:读
-
w:写
-
x:执行
如何给一个文本文件xxx.sh增加可执行权限?
chmod u+x xxx.sh
如何不让其他用户修改xxx.sh?
chmod go-w xxx.sh
第二种方法:chmod [mode] filename
[mode]是一个3位八进制数:
-
第一位表示创建者权限
-
第二位表示组用户权限
-
第三位表示其他用户权限
更具体的:
400:创建者可读
200:创建者可写
100:创建者可执行
040:组用户可读
020:组用户可写
010:组用户可执行
004:其他用户可读
002:其他用户可写
001:其他用户可执行
3位对应位的对应数字加起来,最终就是三类用户的最终权限。
如何回收非创建者用户对xxx.sh的所有权限?
chmod 700 xxx.sh
第一位7:4+2+1,创建者,可读可写可执行
第二位0:组用户,无权限
第三位0:其他用户,无权限
xxx.sh只允许创建者修改,允许其他用户读取和执行,怎么设置?
chmod 755 xxx.sh
第一位7:4+2+1,创建者,可读可写可执行
第二位5:4+1,组用户,可读可执行
第三位5:4+1,其他用户,可读可执行
画外音:一般来说,写了一个工具,只允许自己修改,不允许别人修改,但允许别人使用,这就是755。
-rwxrwxr-x
chmod 755
有意思么?
架构师之路-分享可落地的架构文章
最近1个月基本在写MySQL和InnoDB:
最近两篇偏底层,阅读比较低,还挺遗憾的,后续规划换一个话题。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160123.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...