|
Linux中的Chmod命令用于更改或分配文件和目录的权限。在Linux/Unix系统中,文件和目录的可访问性是由文件所有权和权限决定的。在上一篇文章中,我们了解了如何使用chown命令管理文件和目录的所有权。在本教程中,我们将介绍chmod命令。 chmod命令(change mode的缩写)用于管理文件和目录权限,并确定谁可以访问它们。现在让我们深入了解文件和目录权限的本质,以及如何修改它们。Linux权限 d9 m$ u8 ~ |% Y3 y# v& A+ \ , z! B. X) ]' r 为了更好地理解chmod命令是如何工作的,我们该谨慎地研究Linux文件权限模型。在Linux中,我们具有3种类型的文件权限:读(r),写(w)和执行(x)权限。这些权限确定哪些用户可以读取,写入或执行文件。您可以使用文本或八进制(数字)表示法来分配这些权限,我们将在本教程后面讨论。文件和目录可以属于文件(u),组(g)或其他(o)的所有者
从最左端开始,第一个字符/符号表示文件类型。一个连字符( - ) ,表示该文件是一个普通文件。符号d表示它是目录。符号l表示它是符号链接。其余的9个字符分成3个三元组,每个三元组带有三个符号r(read),w(write)和x(execute)。如前所述,第一部分指向所有者权限,第二部分指示组权限,最后一部分指定其他用户对该文件或目录具有的权限。从输出中,我们可以看到我们有4个文件和2个目录。让我们查看下第一个文件-rw-rw-r-- 1 linuxmi linuxmi 1087 10月 3 20:23 linuxmi.com.cpp对于第一个文件,-rw-rw-r–权限表示该文件的所有者具有读取和写入权限,该组还具有读取和写入权限,而其他用户仅具有读取权限。再看看目录的权限:drwxrwxr-x 3 linuxmi linuxmi 4096 10月 12 13:31 Linux迷我们可以看到目录和组的所有者拥有所有权限(读取,写入和执行),而其他用户仅具有读取和执行权限。在三重连字符符号-表示没有权限已被授予该文件,小组或其他用户的所有者。 9 ?$ T% C$ y a; t9 _9 X) z: q 使用chmod命令设置文件和目录权限6 n% S/ Q0 Y3 j" D6 D% u 1 V! K H! U( a) u. A+ c! W* B 在查看了文件权限以及如何查看它们之后,我们不再关注如何修改这些权限。Linux中的chmod命令用于使用文本(符号)或数字(八进制)表示法更改文件和目录权限。它采用以下语法: $ chmod [选项]模式文件名只有root用户或具有sudo特权的普通用户才能更改文件或目录权限。您可以在命令语法中传递多个文件或目录,并用空格分隔。现在让我们深入研究并查看chmod命令的不同示例。7 y& V* Y0 o' ~2 M% ^2 | 2 U! p- ]/ v% @: s7 f Q0 H - s, B4 Y3 X0 X9 Q5 P! g 示例1)使用数字符号分配权限 0 t' n O5 O3 z }3 p1 z3 u- o: v 使用数字样式/符号设置权限时,请使用以下语法:$ sudo chmod [选项]数字值文件名数值可以为3或4个数字。但是,在大多数情况下,使用3个数字。读取,写入和执行权限采用以下值:
' X( Q2 {/ r6 n0 ^& k: p& x 这是什么意思? 8 g. p, F2 J" v9 A$ v3 H ) D* [) V/ {5 l, e! H2 j1 r' m% _ 假设所有者具有读取,写入和执行权限,该组具有读取和执行权限,而其他用户仅具有读取权限,可以将其细分如下:u:rwx = 7( _+ H/ s/ W1 V: H4 O5 V, ` g:rx = 55 S' {- [- s7 K o:r– = 4因此,我们得到的值为754,作为给定文件的文件权限的数值。要将读取,写入和执行权限分配给所有者,而仅将读取权限分配给组和其他用户,请运行以下命令:$ chmod 744 www.linuxmi.com.txt要将所有权限分配给文件的所有者,请对该组读取和执行权限,而对其他用户则完全没有权限,请执行:$ chmod 750 www.linuxmi.com.txt要将所有权限分配给文件的所有者,请对该组具有读写权限,其他用户请运行以下命令:$ chmod 755 linuxmi.txt . N7 D: B" @3 n4 {0 ] 示例2)递归分配目录权限 " f; K! Q! V4 o# ? 为目录分配权限时,请使用-R标志以递归方式为其目录和子文件夹分配权限。例如:$ chmod 755 -R 目录名$ chmod 755 -R /home/linuxmi/linux5 y4 y# J6 d4 l1 x3 e' J9 Y8 ? 示例3)使用文本表示法指定权限3 o$ s& T. _2 A- z. C 分配权限的另一种方法是使用文本表示法。在此方法中,chmod命令采用标志或符号,这些标志或符号代表语法中的所有者,组,其他或所有用户(u,g和o)。该方法不像以前的方法那样简单明了,应注意避免分配错误的权限。这是语法的样子$ chmod [选项] [ugoa] [– + =] [r,w,x]文件让我们分解一下。第一组参数[ugoa]指定权限将更改的用户类别
$ chmod o = r 文件名上面的命令仅将用符号“ o”表示的其他用户分配给该文件的读取权限,并删除先前分配给' others '段的权限。取得具有以下权限的linuxmi.txtlinuxmi@linuxmi:~/www.linuxmi.com$ ls -l linuxmi.txt -rwxrwxr-x 1 linuxmi linuxmi 1087 10月 3 20:23 linuxmi.txt% g. z/ ]% e& L" \0 K; f
分配“others (o)”段的读权限,请仅运行linuxmi@linuxmi:~/www.linuxmi.com$ sudo chmod o=r linuxmi.txt9 Y& y/ Q" p# p [sudo] linuxmi 的密码:* o( M3 J5 |, t) ?1 W ?9 d9 L linuxmi@linuxmi:~/www.linuxmi.com$ ls -l linuxmi.txt -rwxrwxr-- 1 linuxmi linuxmi 1087 10月 3 20:23 linuxmi.txt
从输出中,我们可以看到已为“others”段分配了读取权限,而同时又失去了执行权限。这意味着=运算符将分配新的权限,而同时会删除以前的权限。 % a$ Q) L& r, C * K2 J# n( b6 H! l2 [( g 示例5)向文件和组所有者分配执行权限0 Z- l/ W1 z( { + H# e( Y8 L7 G$ O* B linuxmi@linuxmi:~/www.linuxmi.com$ sudo chmod ug+x linuxmi.txt linuxmi@linuxmi:~/www.linuxmi.com$ ls -l linuxmi.txt -rwxrwxr-- 1 linuxmi linuxmi 1087 10月 3 20:23 linuxmi.txt上面的命令将执行权限添加到文件的所有者和组。使用我们的文件,它将变成:1 L! Y1 l6 H; c1 E3 m
. H; A& _* E1 U! k 示例6)为文件,组和其他分配不同的权限 , F$ v. }) F& a. g% W) V y# {4 u& ~0 ^ sudo chmod u=rwx,g=rw,o=r filename上面的命令将所有权限分配给文件的所有者,将读写权限分配给组,仅将读取权限授予其他用户。
% S) s/ h9 ]9 l* n+ N; G 注意: 4 d8 t/ q* M, z# Y 0 b2 C) d7 Z3 Y 如果在=运算符之后未指定任何权限,则将删除该用户段中的所有权限。 ; B( \) R, i# C& L& Z" x6 K % [7 _. U% w8 r# z- i3 a) U 示例7)删除其他用户的所有权限 " O# j$ R" [7 J+ v) Z2 ] $ sudo chmod o= filenamesudo chmod o= linuxmi.txt$ sudo chmod o-rwx linuxmi.txt上面的命令从“其他”用户段中删除指定文件的所有权限。该命令与以下命令具有相同的作用:$ sudo chmod o-rwx filenamelinuxmi@linuxmi:~/www.linuxmi.com$ sudo chmod o= linuxmi.txt linuxmi@linuxmi:~/www.linuxmi.com$ ls -l linuxmi.txt( u& k( z+ q2 R- ?% X7 s/ e# X! [: P -rwxrw---- 1 linuxmi linuxmi 1087 10月 3 20:23 linuxmi.txt9 C# W$ C$ J! ~" L, s# M- e/ P+ W linuxmi@linuxmi:~/www.linuxmi.com$ sudo chmod o-rwx linuxmi.txt linuxmi@linuxmi:~/www.linuxmi.com$ ls -l linuxmi.txt -rwxrw---- 1 linuxmi linuxmi 1087 10月 3 20:23 linuxmi.txt
% z0 H6 v L% g2 y* O0 D 示例8)使用模板文件分配权限+ k% a7 d# `; V& H. N7 H* Q ) w# b' f1 l$ W: X& h 分配文件权限的另一种便捷方法是使用参考文件。在此方法中,您使用--reference=<模板文件> 选项将文件的权限设置为与另一个参考文件的权限相同。使用以下语法$ sudo chmod –reference=ref_file filename例如,要将linuxmi.txt的文件权限设置为与www.linuxmi.com.py的权限相同,请运行以下命令:$ sudo chmod --reference=www.linuxmi.com.py linuxmi.txt模板文件是www.linuxmi.com.py,将linuxmi.txt更改为模板文件相同的权限。
6 r( y" D2 B3 w* ` K 示例9)仅将执行权限分配给目录 ; k& }* Q; q2 w6 [0 d9 M, z* F # p0 o9 \0 ?1 I# |: p 假设我们有一个包含文件和子目录的目录,并且我们希望仅对目录分配执行权限,而不接触文件。因此,这可以通过使用以下chmod命令来实现,$ chmod a+X *如果您已经注意到,我们已经使用大写的X作为执行权限,以上命令将在当前工作目录的所有目录上设置执行权限。 ( H* b0 b1 o# F: B2 {3 b3 X 总结7 N: I3 _1 w+ W' }. y( u/ `: d% q ! K6 `" c# M$ d. h $ M8 U. O5 E7 v4 J% Q 这个话题暂时到此结束。我们查看了chmod命令,并了解了可以使用该命令更改文件权限的各种示例。. R7 E9 p: X, w2 I |
微信公众号
手机版