你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Linux中的Chmod命令

[复制链接]
gaosmile 发布时间:2020-10-25 22:34
Linux中的Chmod命令用于更改或分配文件和目录的权限。在Linux/Unix系统中,文件和目录的可访问性是由文件所有权和权限决定的。在上一篇文章中,我们了解了如何使用chown命令管理文件和目录的所有权。在本教程中,我们将介绍chmod命令。
chmod命令(change mode的缩写)用于管理文件和目录权限,并确定谁可以访问它们。现在让我们深入了解文件和目录权限的本质,以及如何修改它们。
' t+ J  y* W9 f
$ n5 Y% R) l' ^; b5 p
Linux权限% i+ K4 e3 b/ H1 k

% Y8 X0 f* o6 d
* \" U) h& ~* b. _% f: k# D
为了更好地理解chmod命令是如何工作的,我们该谨慎地研究Linux文件权限模型。在Linux中,我们具有3种类型的文件权限:读(r),写(w)和执行(x)权限。这些权限确定哪些用户可以读取,写入或执行文件。您可以使用文本或八进制(数字)表示法来分配这些权限,我们将在本教程后面讨论。文件和目录可以属于文件(u),组(g)或其他(o)的所有者
  • u - 所有人的权限
  • g - 所有组的权限
  • o- 其他人的权限
    ' R# t/ ], ^! p. s4 ^: n! ~* D
使用ls -l命令以长格式的形式查看当前目录下所有可见文件的详细属性。该-l标志列出文件的权限。权限分为三组:用户(user)组(group)和其他(others)。为了更好地理解文件权限,我们将列出目录的内容,如下所示:
3 p9 g$ a% ^0 D) k7 G: b6 N6 Hlinuxmi@linuxmi:~/www.linuxmi.com$ ls -l+ c/ k+ t- v3 Z  p% \* e; r
微信图片_20201025223230.png " s, j7 a. u$ a. i) I
从最左端开始,第一个字符/符号表示文件类型。一个连字符( - ) ,表示该文件是一个普通文件。符号d表示它是目录。符号l表示它是符号链接。+ e1 A- P' }& R& V
其余的9个字符分成3个三元组,每个三元组带有三个符号r(read),w(write)和x(execute)。如前所述,第一部分指向所有者权限,第二部分指示组权限,最后一部分指定其他用户对该文件或目录具有的权限。
* ~* \: ]2 o6 F2 W4 `从输出中,我们可以看到我们有4个文件和2个目录。
. c; e7 ]- O" y7 y# n让我们查看下第一个文件" [7 F9 y' g3 R3 @) X
-rw-rw-r-- 1 linuxmi linuxmi 1087 10月 3 20:23 linuxmi.com.cpp5 f$ @6 P) _7 ^* {1 L, T0 R* G6 |& i
对于第一个文件,-rw-rw-r–权限表示该文件的所有者具有读取和写入权限,该组还具有读取和写入权限,而其他用户仅具有读取权限。+ \7 `: O# l3 ^* ]
再看看目录的权限:0 P+ c) A* i, o  {& U2 F! M6 Z
drwxrwxr-x 3 linuxmi linuxmi 4096 10月 12 13:31 Linux迷! X* H  {- X2 l0 J' s/ `) a
我们可以看到目录和组的所有者拥有所有权限(读取,写入和执行),而其他用户仅具有读取和执行权限。
1 [4 _7 U  ?! u# `# i# g在三重连字符符号-表示没有权限已被授予该文件,小组或其他用户的所有者。
3 I% E& Y4 ^  V+ i使用chmod命令设置文件和目录权限$ y1 y, e% V* y+ G# W5 z' V( k
在查看了文件权限以及如何查看它们之后,我们不再关注如何修改这些权限。
7 y% u. |3 W5 ~' LLinux中的chmod命令用于使用文本(符号)或数字(八进制)表示法更改文件和目录权限。它采用以下语法:
$ chmod [选项]模式文件名
只有root用户或具有sudo特权的普通用户才能更改文件或目录权限。您可以在命令语法中传递多个文件或目录,并用空格分隔。
# _5 R* J: V. j" E现在让我们深入研究并查看chmod命令的不同示例。* ?, k, S1 _' Q; z) ^+ |
示例1)使用数字符号分配权限, j! P, U+ d2 O) w6 v/ K' Z
使用数字样式/符号设置权限时,请使用以下语法:
3 u- ~, L% ~/ a# n* m( r; W$ sudo chmod [选项]数字值文件名
, b1 h& [( a7 K  O: V! a数值可以为3或4个数字。但是,在大多数情况下,使用3个数字。读取,写入和执行权限采用以下值:
# E4 t* r% r: r: q
  • 读取权限=> 4
  • 写权限=> 2
  • 执行权限=> 1: [! j" p" |& o( ^

6 K  W5 b' n" k' U3 {  p; Q# ^
权限值的总和,即在三个段中的每一个中的读取,写入和执行,都占给定文件或目录的完整权限。! n/ \$ H/ [( s$ ^9 f& I6 K
这是什么意思?  d) w/ r1 v; r. t7 @) W
假设所有者具有读取,写入和执行权限,该组具有读取和执行权限,而其他用户仅具有读取权限,可以将其细分如下:
* m& |$ C0 C; w& o! Lu:rwx = 7
& S& I7 s5 D) T! O/ c0 Tg:rx = 5( ^2 [3 K6 k0 Y5 v0 C. a
o:r– = 4
/ ^2 R0 q' r/ H9 B$ T3 w* n7 q
因此,我们得到的值为754,作为给定文件的文件权限的数值。
8 H5 A8 A5 H$ @6 V* N2 @# O要将读取,写入和执行权限分配给所有者,而仅将读取权限分配给组和其他用户,请运行以下命令:
0 |& f/ u$ @% p8 Q$ chmod 744 www.linuxmi.com.txt
3 u4 _2 v2 i) S7 t+ Z+ G! z( M要将所有权限分配给文件的所有者,请对该组读取和执行权限,而对其他用户则完全没有权限,请执行:8 b+ {0 S" ^9 ]+ a' w
$ chmod 750 www.linuxmi.com.txt
% B* `3 m1 j7 P7 }* T( N$ F要将所有权限分配给文件的所有者,请对该组具有读写权限,其他用户请运行以下命令:
6 L9 r# [* _  D' }$ chmod 755 linuxmi.txt
. \  B' [( f) \0 s/ p示例2)递归分配目录权限1 X  \/ M" M/ ^5 ^& A4 r+ l: ]
为目录分配权限时,请使用-R标志以递归方式为其目录和子文件夹分配权限。例如:
% r+ t' C5 S" y0 k7 r1 z* U$ chmod 755 -R 目录名" S8 g; h' {0 |# s9 [
$ chmod 755 -R /home/linuxmi/linux6 ?% Q. H2 e1 j
示例3)使用文本表示法指定权限; J2 H, |9 Z$ W% e
分配权限的另一种方法是使用文本表示法。在此方法中,chmod命令采用标志或符号,这些标志或符号代表语法中的所有者,组,其他或所有用户(u,g和o)。
2 i" b  |- c, z该方法不像以前的方法那样简单明了,应注意避免分配错误的权限。
- z, n0 c  z# s9 q( J4 u/ u这是语法的样子" Y4 o% s' e4 v9 q3 E% N  n
$ chmod [选项] [ugoa] [– + =] [r,w,x]文件
$ ?4 ]/ l$ X9 a+ [% T让我们分解一下。
- I9 E' l4 |+ W9 S" C, K: D第一组参数[ugoa]指定权限将更改的用户类别
  • u:用户
  • g:组
  • o:其他
  • a:全部(包括以上所有内容)9 H1 u4 ^1 S- J1 Q! }2 ~
如果省略了这个集合,那么默认选项是a选项。
, k" o+ y6 x. i0 ?# t7 [' T第二组选项–操作员选项[– + =] –确定是要添加权限还是要从用户类别中删除权限。选项删除
  • –     :该标志从指定的用户中删除文件权限。
  • +    :将权限添加/添加到指定用户。
  • =    :为指定的用户分配不同的权限,并删除该用户段的先前权限。. L  S3 P; M6 h# D! y
示例4)为文件分配读取权限
. Z- e% w( E+ ^$ chmod o = r 文件名
3 s4 B. ~5 T: r1 _# G上面的命令仅将用符号“ o”表示的其他用户分配给该文件的读取权限,并删除先前分配给' others '段的权限。取得具有以下权限的linuxmi.txt
% h) _- t0 F. Olinuxmi@linuxmi:~/www.linuxmi.com$ ls -l linuxmi.txt) @: U* b. d$ A3 Q  y% N
-rwxrwxr-x 1 linuxmi linuxmi 1087 10月 3 20:23 linuxmi.txt
& ]7 ?# C0 s" {# M( S
微信图片_20201025223234.png
2 J4 d: z5 U! l( t! Z9 S& g分配“others (o)”段的读权限,请仅运行
; W3 r; E4 H" ~' A+ klinuxmi@linuxmi:~/www.linuxmi.com$ sudo chmod o=r linuxmi.txt8 x5 E2 P3 p/ i7 v* x. L# f% e  T
[sudo] linuxmi 的密码:
: f- S% z* D2 O! q/ Dlinuxmi@linuxmi:~/www.linuxmi.com$ ls -l linuxmi.txt
( ^: ^4 p, s. `; u7 v$ m  @-rwxrwxr-- 1 linuxmi linuxmi 1087 10月 3 20:23 linuxmi.txt
6 G) S, F: Y' s/ c# Z5 g
微信图片_20201025223236.png $ H$ f. M5 C8 m* A
从输出中,我们可以看到已为“others”段分配了读取权限,而同时又失去了执行权限。这意味着=运算符将分配新的权限,而同时会删除以前的权限。/ P) j( ~6 t6 q5 O; Q! a2 R4 ~" i
示例5)向文件和组所有者分配执行权限0 a% k! @( H) f: g9 V3 a" R& f! m# Y# Y
linuxmi@linuxmi:~/www.linuxmi.com$ sudo chmod ug+x linuxmi.txt
! E1 J  m7 f" k2 y! u, X9 Nlinuxmi@linuxmi:~/www.linuxmi.com$ ls -l linuxmi.txt
7 {$ G/ |( |% C* H% G( `1 e-rwxrwxr-- 1 linuxmi linuxmi 1087 10月 3 20:23 linuxmi.txt
& |+ E+ }) d; r6 F
上面的命令将执行权限添加到文件的所有者和组。使用我们的文件,它将变成:; R# v, k6 x% @9 \: M
微信图片_20201025223239.png
1 J2 L' a5 Q! h) G示例6)为文件,组和其他分配不同的权限, s# L5 J5 @) |9 K) z6 g7 s
sudo chmod u=rwx,g=rw,o=r filename
# j( ]$ [" c; T$ g上面的命令将所有权限分配给文件的所有者,将读写权限分配给组,仅将读取权限授予其他用户。 微信图片_20201025223243.png " y; A1 g* W7 T! J2 Z
注意:如果在=运算符之后未指定任何权限,则将删除该用户段中的所有权限。9 {5 |# Y1 a- o* ^3 u' {
示例7)删除其他用户的所有权限
( V: O9 T6 {2 q1 A$ sudo chmod o= filename
0 K) V/ w2 N' m* b! ]8 w1 d  `3 ksudo chmod o= linuxmi.txt' k" Q' g" y7 V. J  a% v
$ sudo chmod o-rwx linuxmi.txt+ }; @# E0 \) Y$ i' g: r: J+ K# Q
上面的命令从“其他”用户段中删除指定文件的所有权限。- h1 x' H$ e1 r- i# o5 I
该命令与以下命令具有相同的作用:
+ |2 A$ ?  Y/ Y  V$ G$ sudo chmod o-rwx filename! S. u, _- E. I: z- P: M
linuxmi@linuxmi:~/www.linuxmi.com$ sudo chmod o= linuxmi.txt
' k: r* O8 j* y% a4 f- dlinuxmi@linuxmi:~/www.linuxmi.com$ ls -l linuxmi.txt
: H% v* b1 Y6 m: p' ]' Y-rwxrw---- 1 linuxmi linuxmi 1087 10月 3 20:23 linuxmi.txt6 Y$ ^. c9 N2 ?8 K% S
linuxmi@linuxmi:~/www.linuxmi.com$ sudo chmod o-rwx linuxmi.txt: F: N: U; ?* w+ n( u+ {
linuxmi@linuxmi:~/www.linuxmi.com$ ls -l linuxmi.txt5 B. w# C, F/ [! a7 j1 n$ d/ P
-rwxrw---- 1 linuxmi linuxmi 1087 10月 3 20:23 linuxmi.txt
9 r) y* L2 o. |& K
微信图片_20201025223246.png $ p  ?  j* e: G3 H  V9 }/ x/ B
示例8)使用模板文件分配权限- M# A  R% d: [% [
分配文件权限的另一种便捷方法是使用参考文件。在此方法中,您使用--reference=<模板文件> 选项将文件的权限设置为与另一个参考文件的权限相同。使用以下语法3 @/ l% r$ W3 I) @0 X7 P
$ sudo chmod –reference=ref_file filename
9 @; M1 _" S7 ]& H  c. l: ?例如,要将linuxmi.txt的文件权限设置为与www.linuxmi.com.py的权限相同,请运行以下命令:
5 V" F) y' f9 F' D$ sudo chmod --reference=www.linuxmi.com.py linuxmi.txt
+ n. m% l) R" @( B* Z  e. g模板文件是www.linuxmi.com.py,将linuxmi.txt更改为模板文件相同的权限。5 z+ g. K$ d. `1 }/ F
微信图片_20201025223250.png . |! A6 h& I( X- i% }1 R
示例9)仅将执行权限分配给目录, n9 u- H* W6 T* `" n
假设我们有一个包含文件和子目录的目录,并且我们希望仅对目录分配执行权限,而不接触文件。因此,这可以通过使用以下chmod命令来实现,
! g, Q' A0 ?% ?$ E/ C4 y8 ^8 {3 v$ chmod a+X *
. {/ {3 t8 p  t, D- m! y! y1 a如果您已经注意到,我们已经使用大写的X作为执行权限,以上命令将在当前工作目录的所有目录上设置执行权限。! F, w! a$ [/ k$ x; w8 `: F7 f8 a
总结
6 _* C3 g" D* P; J这个话题暂时到此结束。我们查看了chmod命令,并了解了可以使用该命令更改文件权限的各种示例。& O5 Z$ |4 X+ `" X- n* A

) f' e9 c4 e: E6 x& A" R  l7 {" q. q8 G
赞 收藏 评论0 发布时间:2020-10-25 22:34

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版