|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。
( X9 O' Z" x. ~- C+ W4 V% p
3 U" J2 o8 I" B9 ^( U文件或目录的访问权限分为只读,只写和可执行三种。(0无权限,1可执行,2可写,4可读)
9 j; m! _6 B9 x* p9 w! _0 N以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作。可执行权限表示允许将该文件作为一个程序执行。文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的任何组合。
) ?3 E8 m. T ?' m' r7 W7 y8 l5 r
. g9 z/ k- ]; P0 o- `7 ~有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户、其他用户。所有者一般是文件的创建者。所有者可以允许同组用户有权访问文件,还可以将文件的访问权限赋予系统中的其他用户。在这种情况下,系统中每一位用户都能访问该用户拥有的文件或目录。: g* p/ k' V0 p, n( F) u; E1 z
( [! V2 w- }+ m4 B1 E# H+ S0 e每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。当用ls -l命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限。例如:
- g: ^# V& R1 i: L3 }: z( d2 l2 V6 j* k
- $ ls -l sobsrc. tgz
- -rw-r--r-- 1 root root 483997 Ju1 l5 17:3l sobsrc. tgz* R6 @8 t9 d# v. Y; Y7 G) R
0 ]3 j1 B8 m# a( N- {1 a
/ v$ w, [3 v' q, \$ h1 A7 @横线代表空许可,r代表只读,w代表写,x代表可执行。注意这里共有10个位置。第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。+ T# s8 ^: _8 C# B/ x
. o/ g1 m E5 p/ y' L! k5 f
如果第一个字符含义:
; s8 Q# v* _7 ~+ [- i; Z. G+ i0 j& d9 a+ _( {
- 普通文件! ^& ^* E% t+ O6 E' |1 X
3 t, B+ u, [+ g: r8 M2 P
d 目录& P8 [$ C+ `4 D( @
( j) V& h2 z3 c! W% [1 ^0 _+ r7 d
s 本地套接字# `2 B3 |2 D# a0 P+ ~, G: K
8 t, X- z' }3 g+ j, J1 \/ B
c 字符设备" j* z! e. N2 f/ p Q( n- f
2 ?) T( V! N' i* T8 ~b 块设备
o' X/ J( A) u/ e" {4 g7 i
! J: @5 h9 Y0 il 符号链接: w7 f! w: l8 }9 ]* n/ N
2 \# ]* g' p( S8 pp 有名管道/ @/ D% x: `% O* S+ s! Y$ ~
) H1 ~0 e' Z# T! E" [
- 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
i0 x" i& g& J! D 3 P- i6 O9 R0 g5 V4 B
# l V- `& y; j, e8 y例如:
9 a; z; Y( L" y/ S4 s - rw- r-- r--' g. @" Y$ g4 I
9 S% x1 I6 Q& t& G/ J) ^
普通文件 文件主 组用户 其他用户3 n6 Y5 N% x! l. U
是文件sobsrc.tgz 的访问权限,表示sobsrc.tgz是一个普通文件;sobsrc.tgz的属主有读写权限;与sobsrc.tgz属主同组的用户只有读权限;其他用户也只有读权限。
* d& f. f$ _& E3 W) I j, B- L$ C" X z: j
确定了一个文件的访问权限后,用户可以利用Linux系统提供的chmod命令来重新设定不同的访问权限。也可以利用chown命令来更改某个文件或目录的所有者。利用chgrp命令来更改某个文件或目录的用户组。
: v5 I) E# ?0 E* J* a* g6 u# g$ E4 _2 T0 _0 h
下面分别对这些命令加以介绍。
+ P9 r5 R" A' F! ochmod 命令
; | e1 t; i! O3 H" kchmod命令用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。
$ N6 o: t4 U0 x, V" J! R4 z! r6 }该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。! i! E8 }4 Y2 Y
* s% u* d# S& W7 L" u
1. 文字设定法
; U) `: K! b4 ~4 w. \, rchmod [who] [+ | - | =] [mode] 文件名?
4 I$ Z4 H$ c8 N, {0 L% J4 U# | m5 E+ E0 d
命令中各选项的含义为:
8 m$ h5 M- |' _- S) ?4 i) |4 }操作对象who可是下述字母中的任一个或者它们的组合:
2 H- u* u3 M- Y* s% x1 cu 表示“用户(user)”,即文件或目录的所有者。
; ?# n" h8 P9 [( Tg 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
- }3 _, b9 } a( c) ~3 w' l9 P; X) Qo 表示“其他(others)用户”。
* _, v5 n8 O8 F& Ta 表示“所有(all)用户”。它是系统默认值。
6 B. O4 B, O5 E& j" v* b4 Z3 q7 s# Y
4 c. R- H/ `+ T4 s% S操作符号可以是:7 x4 F) R7 B, W/ d0 ?3 G& C
+ 添加某个权限。/ C5 r4 u0 y0 t2 ~9 J ^5 U# g+ d, \
- 取消某个权限。( v- \( D4 n$ C8 N5 C( v5 v0 W, e
= 赋予给定权限并取消其他所有权限(如果有的话)。
! I7 z# a6 @# |, _1 w5 t9 Z
1 w% r; i4 R m0 s设置mode所表示的权限可用下述字母的任意组合:
' Q! B0 J v4 x7 u4 t. V# ^r 可读。5 F( W2 S- A: h7 e% o8 d
w 可写。
9 N( ^; Q( Z) I1 P, ^: Vx 可执行。
- Z$ h, x9 j3 i! MX 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
$ e) y4 G& n3 b6 }& l x& w0 I5 is 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。) {: I0 T* }9 d: t" S3 u
t 保存程序的文本到交换设备上。
) L+ Z$ j4 d3 z2 G0 o5 M1 tu 与文件属主拥有一样的权限。. E- v5 ]; d( ]2 @: A( y1 c
g 与和文件属主同组的用户拥有一样的权限。
( z% T# Q6 T% Ao 与其他用户拥有一样的权限。
- G& \& f+ _+ c! M' `
0 f2 g! i2 }# j文件名:以空格分开的要改变权限的文件列表,支持通配符。
1 A' \7 z* d3 v在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:chmod g+r,o+r example
5 ^. @8 `9 w. b/ C使同组和其他用户对文件example 有读权限。2 s% u# T6 X$ r. u1 M
& W2 l f- f8 H7 M! l) ?
例1:$ chmod a+x sort
( T' K1 {1 |& a; z即设定文件sort的属性为:
' ^7 T+ I4 E, p9 J% w7 [文件属主(u) 增加执行权限,与文件属主同组用户(g) 增加执行权限,其他用户(o) 增加执行权限。
5 F" g, z" I" j. i5 H- S8 h' s9 n/ U$ f' p' a9 W3 K. @& S" ^
例2:$ chmod ug+w,o-x text
j$ u5 |8 W( v8 s4 E+ x3 k即设定文件text的属性为:
6 X3 P9 @' g4 O, l% B. t0 }! w文件属主(u) 增加写权限,与文件属主同组用户(g) 增加写权限,其他用户(o) 删除执行权限。: j* y9 y4 D+ f- ]
0 H" }! |& J7 [7 T: m. \
例3:$ chmod u+s a.out
% \0 L1 k$ S( Q假设执行chmod后a.out的权限为(可以用ls – l a.out命令来看):( ]$ \1 F9 e/ K0 J3 z% i$ {* i g
–rws--x--x 1 inin users 7192 Nov 4 14:22 a.out% b9 f% p7 _) H, u2 {' {
8 A# D; V& b7 Q" ?$ I! ]' _5 F
并且这个执行文件要用到一个文本文件shiyan1.c,其文件存取权限为“–rw-------”,即该文件只有其属主具有读写权限。8 {/ E$ m3 n& ?
& u1 T1 ^8 |" V* P- \当其他用户执行a.out这个程序时,他的身份因这个程序暂时变成inin(由于chmod命令中使用了s选项),所以他就能够读取shiyan1.c这个文件(虽然这个文件被设定为其他人不具备任何权限),这就是s的功能。
; d' ?/ B% e, v: T/ e因此,在整个系统中特别是root本身,最好不要过多的设置这种类型的文件(除非必要)这样可以保障系统的安全,避免因为某些程序的bug而使系统遭到入侵。
/ a! |6 W* J' O: p, {
% i/ l1 A- l3 K- N0 |例4:
1 B0 E( @# _2 B& U9 M. w0 E
5 V6 O3 x2 _" ^: N$ chmod a–x mm.txt. Y. |* H7 k! ]
$ chmod –x mm.txt
. k9 Z! x$ y& o* q$ chmod ugo–x mm.txt
2 J5 V, X0 R- k- m0 t以上这三个命令都是将文件mm.txt的执行权限删除,它设定的对象为所有使用者。
# n; q) H$ S* d) U% x% d
9 `+ R; {. h" h* r f5 R: r" A( y' d5 T' D f {
2. 数字设定法 (重点)7 E+ M- a1 {% A2 k8 D
我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。
1 n& ?7 O1 w0 c: ]+ [& D
# D t& g/ a: _2 i例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。" X$ G5 N3 ^1 o& L2 Y
数字设定法的一般形式为:/ X! H& U* Y/ D5 `7 l1 {
chmod [mode] 文件名?* f8 c0 I# A( i
* c4 y P5 N/ G& |- I0 U
例1: $ chmod 644 mm.txt
) }# I9 X8 T% p4 a. l6 x, }% T1 S7 X" `* V
- $ ls –l
- -rw-r--r-- 1 inin users 1155 Nov 5 11:22 mm.txt" ~6 v; O- {7 E
9 w9 C; S6 X9 T! G( {
' C- Y) E$ N9 }
即设定文件mm.txt的属性为: F7 O0 l! }# o8 o z. h" z5 d
文件属主(u)inin 拥有读、写权限,与文件属主同组人用户(g) 拥有读权限,其他人(o) 拥有读权限。
/ {9 @) b& _8 g1 e D4 a a. \. n
1 N. s& J7 o" O+ a' S. H例2: $ chmod 750 wch.txt8 _8 i+ b9 E2 G
0 A% a8 I; t+ b3 a# B! b6 P) w- $ ls –l
- -rwxr-x--- 1 inin users 44137 Nov 12 9:22 wchtxt
( C' C/ g' a+ Z8 Y ' k4 q: |* @( _9 K* v" J6 I
3 }4 d7 q4 ]# t$ t1 L/ x5 h. c即设定wchtxt这个文件的属性为:
3 I9 Y: n! R! J4 x% W, ?文件主本人(u)inin 可读/可写/可执行权,与文件主同组人(g) 可读/可执行权,其他人(o) 没有任何权限。
+ d( N2 p- H. g* t$ d* K! I. O6 n, a( S3 `" W; E) R [
chgrp命令
8 H% v3 n5 |! j8 _3 e3 I功能:改变文件或目录的属组。8 G2 |4 K* D4 m* { B, E5 _+ z
语法:chgrp [选项] group filename?! `! E1 R* ?& J! z& C
$ k; |+ Z* F( D3 q5 H& N该命令改变指定指定文件所属的用户组。其中group可以是用户组ID,也可以是/etc/group文件中用户组的组名。文件名是以空格分开的要改变属组的文件列表,支持通配符。如果用户不是该文件的属主或超级用户,则不能改变该文件的组。1 h$ w/ C+ Q: w% F
6 R: O& k0 L! \# f该命令的各选项含义为:8 h; x. G1 F2 p( t. `
- R 递归式地改变指定目录及其下的所有子目录和文件的属组。
) J5 Y4 ]2 \+ N+ Z) x4 H6 ~
3 d- I% U/ G" Y5 ^+ P* R2 r$ U例1:$ sudo chgrp - R book /opt/local /book# e) \- k7 ?& k U
改变/opt/local /book/及其子目录下的所有文件的属组为book。( X: s% g' C O3 a( C
0 b- n% ?( G+ c0 j6 }: X. L例2: sudo chgrp -R zslf test F& k# u+ S: K2 `
将test目录所在的组由root修改为zslf组9 A, L1 _& T! L# w
- W4 b: t5 [( ?% [- 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 ..6 X3 m/ V( c8 l
4 [: c- x1 C( W
& @4 I7 d9 U0 {9 @4 u! [8 b9 jchown 命令
/ J6 c7 A; @5 P功能:更改某个文件或目录的属主和属组。这个命令也很常用。例如root用户把自己的一个文件拷贝给用户xu,为了让用户xu能够存取这个文件,root用户应该把这个文件的属主设为xu,否则,用户xu无法存取这个文件。8 C, Q: Z5 {7 C0 R
, V/ r' u8 R4 B2 k% K; i语法:chown [选项] 用户或组 文件
( @0 u1 o5 {! s4 K说明:chown将指定文件的拥有者改为指定的用户或组。用户可以是用户名或用户ID。组可以是组名或组ID。文件是以空格分开的要改变权限的文件列表,支持通配符。
" W# j# A, v4 T3 `: P6 ]* @- A* @7 ]! m% R+ ^! U
该命令的各选项含义如下:" A' [$ ?% [/ F! n0 E
- R 递归式地改变指定目录及其下的所有子目录和文件的拥有者。7 p3 Q3 k/ c7 ~3 O( P
- v 显示chown命令所做的工作。
- E' w, {2 G; c) {) N
$ j* M1 s0 T9 p( T8 |! G3 x. w z: x例1:sudo chown -R zslf test
3 C; ]# A6 z) l8 L! d将test目录下的所有文件和子目录的属主由root改为zslf/ w0 Z2 }4 a8 T. m. p! A& u @3 B
/ Z/ x+ d: h$ w9 z7 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, C) G# u M2 [; K5 o' l. Q% J
! L5 o- o- r+ h9 h7 M" k$ P1 x2 W) U
, c4 i8 Q1 L% J- ^' |3 U, h" p, f0 P% \5 I
例2:sudo chown -R zslf.zslf test
5 L- ?9 f3 U4 `! z. Y7 n3 a8 Y
/ T3 T9 A5 ^7 E2 z9 ?* q- 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/ E2 L0 t) P( O1 H+ ~
2 T2 J& X/ Q- e
& b" O6 a5 L/ s3 `# }$ a; i将test目录下的所有文件和子目录的属主由root改为zslf,属组有root改为zslf。$ K3 q, i3 D) ]7 r; w
# N2 A6 o. F- L! @6 c) i
+ B4 V. g6 `& W
; w* n6 `& k8 Z; W
|
|