|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。
4 r$ n( ?/ C4 Y$ w3 E$ X1 @# Y1 s6 U K
文件或目录的访问权限分为只读,只写和可执行三种。(0无权限,1可执行,2可写,4可读)
& v' T: n- k- h' p+ u, B4 m以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作。可执行权限表示允许将该文件作为一个程序执行。文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的任何组合。
8 a0 ]9 a" g8 I1 E: Q& B5 t2 p5 d' }6 D$ C" ~* M) d+ a6 U4 |
有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户、其他用户。所有者一般是文件的创建者。所有者可以允许同组用户有权访问文件,还可以将文件的访问权限赋予系统中的其他用户。在这种情况下,系统中每一位用户都能访问该用户拥有的文件或目录。
$ Z3 n1 ^' Y" @) F; C% V
4 \0 v a2 z b; H( Z% y每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。当用ls -l命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限。例如:+ S2 s9 _5 a* u2 |
! s" b9 H5 D0 Y- $ ls -l sobsrc. tgz
- -rw-r--r-- 1 root root 483997 Ju1 l5 17:3l sobsrc. tgz, `9 B9 [/ D+ B- [
7 _, \6 l6 e. G# n9 @
3 J1 H/ x7 \5 a- z- b* y1 M横线代表空许可,r代表只读,w代表写,x代表可执行。注意这里共有10个位置。第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。0 c$ l0 G7 j6 O
; D$ h% T# V: S( @) _
如果第一个字符含义:
- A3 h/ k9 `- n. n f2 ]- q4 O d8 e _1 }( M* _& `
- 普通文件0 C- a! {! O3 X) w0 }' `
$ c6 b C8 j6 Z: Od 目录
% \& @0 u0 u2 l6 d+ C2 [) H* y# T5 `# X/ a
s 本地套接字( r9 G Y+ I& B3 S8 |- w4 b! v3 d
5 g6 @' P, h" l) |+ B6 l1 ^ D
c 字符设备
, W: Q& J( m+ W/ E5 q
0 K) [/ z( M4 S- T: Hb 块设备3 j4 c4 b+ |% z/ i* ?
- Q2 [- E/ j5 g/ r* el 符号链接
! |6 ], ~: h& l; }4 J7 z8 k5 T: W- y1 N& {, }
p 有名管道
! r0 N# W" K7 U/ h" A
0 x, {. E9 A4 A- x2 b- root@zslf-virtual-machine:/opt# ls -la
- 总用量 32
- drwxr-xr-x 8 root root 4096 10月 21 11:28 .
- drwxr-xr-x 23 root root 4096 9月 20 13:18 ..
- drwxrwxr-x 3 zslf zslf 4096 9月 27 13:03 ethtool-4.6
- drwxr-xr-x 4 root root 4096 9月 28 10:46 file
- drwxr-xr-x 3 root root 4096 9月 5 19:14 hisi-linux
- drwxr-xr-x 8 501 users 4096 9月 21 19:21 i2c-tools-3.0.1
- drwxr-xr-x 9 root root 4096 10月 28 14:43 mpp
- drwxr-xr-x 20 root root 4096 9月 19 15:47 rootfs_uclibc
7 K* D0 c C& m& l : R7 o/ ~) ^4 A2 Y) e$ `( Z
) E$ I9 Q% H4 e% A3 l" m$ B例如:* J) S3 L" [9 z0 e& c6 [& ~* g
- rw- r-- r--
+ C9 }' h3 z6 F% d! D" G! b
* I1 l5 a3 Y& W- U& b, m' D; j* W普通文件 文件主 组用户 其他用户
2 \- q. [6 R0 ?& \" ?7 c$ E是文件sobsrc.tgz 的访问权限,表示sobsrc.tgz是一个普通文件;sobsrc.tgz的属主有读写权限;与sobsrc.tgz属主同组的用户只有读权限;其他用户也只有读权限。
; [6 I8 i- a: z6 P: c2 m
! d; ]+ M/ z0 L6 Y8 n确定了一个文件的访问权限后,用户可以利用Linux系统提供的chmod命令来重新设定不同的访问权限。也可以利用chown命令来更改某个文件或目录的所有者。利用chgrp命令来更改某个文件或目录的用户组。
5 R$ V9 d3 ?+ j% H. J0 g, u; E
' J3 b$ L+ O9 I下面分别对这些命令加以介绍。; X7 E( x/ E& Y2 Q1 Y$ w( K
chmod 命令
7 y$ G4 |0 B, c$ e4 cchmod命令用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。
' C+ R( {+ a" @& H L. P0 d6 y该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。% M6 K" z1 B6 g v# U
0 Y4 x* G& i5 k/ y+ R9 p
1. 文字设定法
- w( _; u/ }+ Q+ }; m9 Xchmod [who] [+ | - | =] [mode] 文件名?' U! x# {5 [- u$ {
* O9 Z: k9 f4 @) D- _
命令中各选项的含义为:0 R2 j2 |9 `. Y, k5 f) r: z
操作对象who可是下述字母中的任一个或者它们的组合:# n) Z! w* }' C! C# g
u 表示“用户(user)”,即文件或目录的所有者。
( f' h2 h2 i# `g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。& [ W$ e z1 J: W+ @( ^
o 表示“其他(others)用户”。
) Z0 v" ^6 S! O" pa 表示“所有(all)用户”。它是系统默认值。
3 S8 J7 n1 }3 I+ Y- e- B/ o, M3 S) f" ^4 M# W. _4 z
操作符号可以是:
1 v( h* Q7 S; A; P$ v+ 添加某个权限。
$ o P7 f# j1 D2 F* O3 D1 P/ |) G- 取消某个权限。; t1 y7 \6 p5 d- m$ ]
= 赋予给定权限并取消其他所有权限(如果有的话)。
* {; X1 U3 S: Z7 r. d! T$ P" g. H; y0 ?/ y4 R* y
设置mode所表示的权限可用下述字母的任意组合:
: l s9 b; R7 _& \9 Kr 可读。# R0 x: d& c Y
w 可写。
8 E- O7 A+ g5 Dx 可执行。
9 b- J; w' p7 n% m6 GX 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。1 \! K" c# g5 }" v) V$ W
s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。1 x) @* t/ i9 \* m
t 保存程序的文本到交换设备上。# V& Z, z( N" g/ ~- [
u 与文件属主拥有一样的权限。$ u5 s S$ X8 |9 I6 B4 Z: N! H
g 与和文件属主同组的用户拥有一样的权限。
& o( b: y6 F; So 与其他用户拥有一样的权限。! q4 \. E1 ?/ K5 \6 d; E& U
/ a9 O3 h8 h+ B6 w( l
文件名:以空格分开的要改变权限的文件列表,支持通配符。/ O( c: t! H3 m% X
在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:chmod g+r,o+r example
) n, l/ [/ F& C' P使同组和其他用户对文件example 有读权限。
# V: g* t X' G* p( K6 v
; } e& R* a3 J, q ~7 K例1:$ chmod a+x sort- Z7 Y$ i3 @5 }. }
即设定文件sort的属性为:# {% N3 P+ V7 s N! p4 t! Y0 e& \5 r; J/ z8 u
文件属主(u) 增加执行权限,与文件属主同组用户(g) 增加执行权限,其他用户(o) 增加执行权限。, v, d2 N- q; j) `! ]9 ]
$ y0 r) W+ p" B: N
例2:$ chmod ug+w,o-x text4 X8 J* Z. M9 @
即设定文件text的属性为:
5 w% v, A' N3 Q- K% n8 @文件属主(u) 增加写权限,与文件属主同组用户(g) 增加写权限,其他用户(o) 删除执行权限。
7 x6 M. X& X' C. R6 X2 V. U" Z7 Y$ ?4 _0 ~
例3:$ chmod u+s a.out
6 u: D& t6 Q) P6 w假设执行chmod后a.out的权限为(可以用ls – l a.out命令来看):
4 l$ r! E& u. J! ]6 u/ a( h7 r2 h–rws--x--x 1 inin users 7192 Nov 4 14:22 a.out, O; c" }" g' h# i) b
9 t e( p0 ^1 ^) f& J并且这个执行文件要用到一个文本文件shiyan1.c,其文件存取权限为“–rw-------”,即该文件只有其属主具有读写权限。
) V3 [! {4 X* ?( G% W6 g" k2 E! z2 }# q7 {1 O/ O
当其他用户执行a.out这个程序时,他的身份因这个程序暂时变成inin(由于chmod命令中使用了s选项),所以他就能够读取shiyan1.c这个文件(虽然这个文件被设定为其他人不具备任何权限),这就是s的功能。
9 B3 K8 X! w5 O# E" J) {0 a因此,在整个系统中特别是root本身,最好不要过多的设置这种类型的文件(除非必要)这样可以保障系统的安全,避免因为某些程序的bug而使系统遭到入侵。. q/ T& f; \. R7 M
# y. U! N' u# F- Z
例4: O) E( T# P5 C* S
% Y) V* }. N* F0 M) {1 T, Q
$ chmod a–x mm.txt! T ^% L, o* o# F& |
$ chmod –x mm.txt9 C1 J. e2 Z p2 F- \* v7 @3 ^; W
$ chmod ugo–x mm.txt
$ T1 k. A4 |* L5 L; p以上这三个命令都是将文件mm.txt的执行权限删除,它设定的对象为所有使用者。
; T% c8 q% d8 Q$ k2 U3 t
/ a8 k% l& I2 u( L4 N: P; _: h4 s3 {5 ^9 ?9 ]* }8 K
2. 数字设定法 (重点)
9 m# U, o. p! i/ i+ I3 L我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。
) G6 j* n. L1 A
, g% G+ s) h5 T, t2 w2 |; B例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。' G% o& Z" s1 H: u' c1 h
数字设定法的一般形式为:
7 v5 Q2 S7 m7 E" h- N# Y3 L2 xchmod [mode] 文件名?
3 D/ n5 G. N7 M5 H- T. a O. b4 F; ]5 W K
例1: $ chmod 644 mm.txt+ K! b( e8 C: q( d) B* j- n
( l" p- j2 n, S- $ ls –l
- -rw-r--r-- 1 inin users 1155 Nov 5 11:22 mm.txt
' _2 T& q/ b3 p6 p3 A ! S: c% r& k, ?2 X; |; r
$ G" J- p5 M& D. F0 B# J; S即设定文件mm.txt的属性为:) E, M7 B7 s3 \& F7 n# l# _
文件属主(u)inin 拥有读、写权限,与文件属主同组人用户(g) 拥有读权限,其他人(o) 拥有读权限。
& U+ g' A5 b3 h; k
! g& n9 E* q+ B9 ~* `* ?8 O例2: $ chmod 750 wch.txt
: y0 k3 I; @! y. Z. l
6 v& w1 J i/ j+ w5 E$ ^- $ ls –l
- -rwxr-x--- 1 inin users 44137 Nov 12 9:22 wchtxt* j( L. {6 p$ g" P% J* ?
T* d# n& [4 Y0 Z" ~) z
9 z1 a. i5 y4 m. ^& \1 _, w
即设定wchtxt这个文件的属性为:' |/ C2 ~( {7 R( w. b
文件主本人(u)inin 可读/可写/可执行权,与文件主同组人(g) 可读/可执行权,其他人(o) 没有任何权限。' |# J1 _( L9 ], h' b4 A
6 y7 W" J3 Z* `chgrp命令
+ m R: [+ B- u0 @( t功能:改变文件或目录的属组。3 G U5 e# U& F \' _$ E
语法:chgrp [选项] group filename?
" i, `1 u( }6 M" M" f/ K8 {! o' P7 T* Z# q- u4 S9 k9 P
该命令改变指定指定文件所属的用户组。其中group可以是用户组ID,也可以是/etc/group文件中用户组的组名。文件名是以空格分开的要改变属组的文件列表,支持通配符。如果用户不是该文件的属主或超级用户,则不能改变该文件的组。* R# [* n" q- }' [
* B1 k: E$ E) n# T7 O8 f0 m. C+ y该命令的各选项含义为:
# t1 ~2 x& ~# Y- R 递归式地改变指定目录及其下的所有子目录和文件的属组。
b. G: ?3 }0 v% S/ R
5 S& p/ |6 L9 \, N$ U例1:$ sudo chgrp - R book /opt/local /book
$ Q h( G% ]1 m- s3 @, Z! Z- r改变/opt/local /book/及其子目录下的所有文件的属组为book。* R3 P# N" ^2 B, m. S) Q
5 m: C* K6 `: [, O
例2: sudo chgrp -R zslf test # w I* d. h+ \9 `! r& y( e# K
将test目录所在的组由root修改为zslf组
2 R& v: `# u8 k) c" e& ~4 ^- ^' D4 m a" j6 P6 Y
- root@zslf-:/mnt# ls -la test/
- 总用量 8
- drwxr-xr-x 2 root zslf 4096 11月 24 17:20 .
- drwxr-xr-x 5 root root 4096 11月 24 17:20 ..: |- m# T0 ?! M$ ^, |" x
F/ S6 ~ g* |( x/ H4 b
. R9 T% L% l$ T* ?( wchown 命令3 U6 H) B8 v9 J5 ~, V/ ~
功能:更改某个文件或目录的属主和属组。这个命令也很常用。例如root用户把自己的一个文件拷贝给用户xu,为了让用户xu能够存取这个文件,root用户应该把这个文件的属主设为xu,否则,用户xu无法存取这个文件。" |. a9 Q# I, I7 g* Y( a
; P$ R: G& Y, m8 m. V语法:chown [选项] 用户或组 文件
5 d3 [5 ]" U; [说明:chown将指定文件的拥有者改为指定的用户或组。用户可以是用户名或用户ID。组可以是组名或组ID。文件是以空格分开的要改变权限的文件列表,支持通配符。
- `' g4 V% y3 F" C/ f9 j8 N! ?- E, s4 |& M, a
该命令的各选项含义如下:2 E2 L0 B! j4 `+ ^: ?4 m% d3 x
- R 递归式地改变指定目录及其下的所有子目录和文件的拥有者。5 E s2 l. A5 U) |2 h# Y$ V
- v 显示chown命令所做的工作。5 [6 a2 k {. O6 ~% e
. E+ k$ l# o. G O8 u0 ?
例1:sudo chown -R zslf test . T, u- Y: z" T) X+ {
将test目录下的所有文件和子目录的属主由root改为zslf3 g3 M1 s8 Y9 @. D
5 l( n Y8 R0 }9 `" p) P- root@zslf-virtual-machine:/mnt# ls -la test/
- 总用量 8
- drwxr-xr-x 2 zslf root 4096 11月 24 17:20 .
- drwxr-xr-x 5 root root 4096 11月 24 17:20 ..a G& U2 c* `5 I( U+ }; ]2 `
N! h3 h6 F2 I2 {, J! r7 Y+ g
# H+ v# [. k; k2 S9 U9 }
8 [0 p% d& H/ z$ w例2:sudo chown -R zslf.zslf test1 Q- u0 ^9 H1 H8 |
% y! J# x. V) M' W
- root@zslf-virtual-machine:/mnt# ls -la test/
- 总用量 8
- drwxr-xr-x 2 zslf zslf 4096 11月 24 17:33 .
- drwxr-xr-x 5 root root 4096 11月 24 17:20 ..
- -rw-r--r-- 1 zslf zslf 0 11月 24 17:33 hh
0 r0 ]4 j* Z& U
5 e U8 \. W/ o; L0 D$ _1 ]
4 O1 y2 e+ ^0 e( D6 z将test目录下的所有文件和子目录的属主由root改为zslf,属组有root改为zslf。) T+ W6 }! G; \. p5 o# D
- g s' ]1 \# F- x% r1 @ s# Z* L z" w. {
% a' l: A+ b8 k# u& i# x- J |
|