|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。: Q2 d4 S* n' U+ \: U
$ k' t. u$ Q F6 T4 n t( Z文件或目录的访问权限分为只读,只写和可执行三种。(0无权限,1可执行,2可写,4可读)3 l5 ~, O9 e. A ~9 y# l
以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作。可执行权限表示允许将该文件作为一个程序执行。文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。用户也可根据需要把访问权限设置为需要的任何组合。) |" p/ q1 w( B( |' I+ o1 \1 h; R1 U
9 [6 T# Q& U! m9 |
有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户、其他用户。所有者一般是文件的创建者。所有者可以允许同组用户有权访问文件,还可以将文件的访问权限赋予系统中的其他用户。在这种情况下,系统中每一位用户都能访问该用户拥有的文件或目录。
7 Y! e5 R4 j* C& j! |, y4 \$ ?
* h' S F0 v# e# s, L每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。当用ls -l命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限。例如:
, c; K! p2 {9 h: _4 o! O2 n8 w! Q4 \
- $ ls -l sobsrc. tgz
- -rw-r--r-- 1 root root 483997 Ju1 l5 17:3l sobsrc. tgz3 X1 d& |! m: r
: ]$ P; {& ~- P7 o: K* W9 d
0 Z/ `: J7 K& b" |/ p, O横线代表空许可,r代表只读,w代表写,x代表可执行。注意这里共有10个位置。第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。! M; X5 B) z3 D& t- @. H3 p' M
; C6 v6 T4 F6 @' s
如果第一个字符含义:
' c8 z l H# V5 k! o6 @6 j$ |% s
9 f% g! G1 ^+ e( B& @, `5 [) m- 普通文件
* P6 a3 W# G0 D4 Y8 _+ p. B' C. M$ l* O: q% @7 i
d 目录+ V c* [3 x% b Q! {9 T
5 U1 D2 }/ }1 _" A3 Ws 本地套接字
# M O5 b' {! W/ `" N6 G! R$ w! P
) o$ i/ E' |5 [ C7 K6 |2 o2 ~c 字符设备
; E6 R9 ^& |4 o6 c2 o, Y
) o' [$ O4 F, l8 Nb 块设备
6 y0 \6 f' r- L- Y2 ]8 K& s
& J z, r3 t. C6 A) z0 }; Fl 符号链接* K, w. ~& q% B& f+ J
" b- o" t7 G. `7 \) ~6 l& cp 有名管道
- {/ J. {9 c% N; ]/ _. k+ E4 K" `0 b4 V6 b/ [ f6 o0 l, n2 O+ _
- 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_uclibc1 c7 _5 Q( y6 {% h, h' [$ T
6 B1 K' @! p" a# W4 H, b4 X- T6 n1 p, I8 g+ t) S, G
例如:0 L w; ]5 j$ c, M4 j* Z5 l+ ^
- rw- r-- r--
' ^% ], B$ W' ^& s `2 I9 f3 Z- C5 T6 O+ |1 F$ I* L
普通文件 文件主 组用户 其他用户. P' P3 i, p& L7 J
是文件sobsrc.tgz 的访问权限,表示sobsrc.tgz是一个普通文件;sobsrc.tgz的属主有读写权限;与sobsrc.tgz属主同组的用户只有读权限;其他用户也只有读权限。
6 }8 p; c% D6 d8 g9 q9 B" l0 w) U$ z. B) |
确定了一个文件的访问权限后,用户可以利用Linux系统提供的chmod命令来重新设定不同的访问权限。也可以利用chown命令来更改某个文件或目录的所有者。利用chgrp命令来更改某个文件或目录的用户组。
! U1 z- q1 D) g( ~
( G% A4 J% L" [ ]; F下面分别对这些命令加以介绍。 m1 o* r& x8 U) @; E4 N+ M
chmod 命令
, m2 p; T0 T5 \4 @chmod命令用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。
: T$ y& R# [& z/ x: M# l W该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
1 n+ a& [ F$ ]( c
! N7 C. p) R4 }0 {7 m& ?1. 文字设定法9 t, Q5 s8 t) t. C
chmod [who] [+ | - | =] [mode] 文件名?) y9 R0 d% Z, J& M+ B
- d' W, Q7 b, q% h- F
命令中各选项的含义为:
9 ^0 X7 F7 b3 Q& M/ M! Z3 `1 {操作对象who可是下述字母中的任一个或者它们的组合:6 ^( p5 J% V8 F9 O: o \8 r
u 表示“用户(user)”,即文件或目录的所有者。) x! d2 C- `) ?$ t
g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
# d x6 y$ M1 S; J' l! Io 表示“其他(others)用户”。
4 }4 `0 ?6 D, wa 表示“所有(all)用户”。它是系统默认值。
, t4 u5 M2 S2 ]2 }* H5 b$ H. f$ j; R3 B+ _' \5 [
操作符号可以是:# G; j g; j4 N& m, V
+ 添加某个权限。
" w, F. i- T$ R) X- 取消某个权限。
( k9 }, Q2 o7 {/ B8 _= 赋予给定权限并取消其他所有权限(如果有的话)。
+ R8 _* a9 u7 S- r6 t3 T4 L5 n( J' j
设置mode所表示的权限可用下述字母的任意组合:
( V! z: D0 `9 u+ ^. E/ Pr 可读。, T: g9 D$ m2 `( g. \1 }
w 可写。
6 K7 _) ~6 X- K7 O8 vx 可执行。
0 u# k! A5 Z. L$ V& y2 _ v; t+ CX 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。9 v. D0 @) _/ |6 W M. \$ E& G
s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。 J: v2 S& V [
t 保存程序的文本到交换设备上。
- ^* l* @; _; f3 e' fu 与文件属主拥有一样的权限。
/ ]# ~" u/ H4 y0 E5 T( Y" W0 m) L9 ^2 ~g 与和文件属主同组的用户拥有一样的权限。* y0 T0 `( v y: d9 ?: \( K. Y3 M" W4 D
o 与其他用户拥有一样的权限。0 o# P ^& y+ [0 U9 b0 {; c
0 M0 W7 S8 N$ I( F* R O文件名:以空格分开的要改变权限的文件列表,支持通配符。
6 r% @+ b% @# V7 p0 O在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:chmod g+r,o+r example
! |, U* y8 s. ^使同组和其他用户对文件example 有读权限。4 A! ]4 m: C: O0 t
: _+ B) M) i* s9 E: @- u例1:$ chmod a+x sort
2 a, v% W/ e+ @; B2 V: A即设定文件sort的属性为:/ g6 P+ _6 A% e: T& Q) f5 i. \
文件属主(u) 增加执行权限,与文件属主同组用户(g) 增加执行权限,其他用户(o) 增加执行权限。8 S P' _# h$ P5 Q4 N
5 K/ {, ~0 _2 O/ E8 D例2:$ chmod ug+w,o-x text
1 x( a3 U9 D B/ V5 Q( o* v即设定文件text的属性为:' n" a& d1 g( }+ a
文件属主(u) 增加写权限,与文件属主同组用户(g) 增加写权限,其他用户(o) 删除执行权限。, k$ s1 c% F$ d/ r+ t# ^+ N
8 x m% `! w8 Y. h7 ?# E" a# {例3:$ chmod u+s a.out9 _/ ^$ J/ S9 }' c( |3 A. ]+ U
假设执行chmod后a.out的权限为(可以用ls – l a.out命令来看):: w9 v( h% e. L* W* A$ c. P6 C
–rws--x--x 1 inin users 7192 Nov 4 14:22 a.out. W. M$ ]* a% c- R$ P( {; b9 T
& R! G9 |+ ^# e. S: I3 V; a并且这个执行文件要用到一个文本文件shiyan1.c,其文件存取权限为“–rw-------”,即该文件只有其属主具有读写权限。
" p$ n d4 G6 A; e. S6 W [* {2 l9 Q
当其他用户执行a.out这个程序时,他的身份因这个程序暂时变成inin(由于chmod命令中使用了s选项),所以他就能够读取shiyan1.c这个文件(虽然这个文件被设定为其他人不具备任何权限),这就是s的功能。
! U4 @! o. M3 C8 M( |7 V因此,在整个系统中特别是root本身,最好不要过多的设置这种类型的文件(除非必要)这样可以保障系统的安全,避免因为某些程序的bug而使系统遭到入侵。
5 ~! m* g* r0 K0 |& P6 {( Z3 C+ h1 G4 E2 X/ Q1 Z T& Z! Z/ R
例4:
- W% z5 o0 v6 u M) z' a4 B6 p3 o, L. n9 ^* E
$ chmod a–x mm.txt
: `5 G( H ?) Z# ~. j$ chmod –x mm.txt7 E9 g& C6 \$ }2 q7 M7 `7 ?6 [
$ chmod ugo–x mm.txt
& Y4 u+ g# ]+ V0 e$ C" Y以上这三个命令都是将文件mm.txt的执行权限删除,它设定的对象为所有使用者。2 G+ t9 a7 ?* O8 v& ~
, [3 ~: H: C$ z% x/ s1 M$ g
" `+ N6 h% G3 A# y, A. j2. 数字设定法 (重点)" T% d. `" B" u& g- Z) F9 x
我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。
4 J- P+ Y" q+ f) D
4 N+ ~' q `, e: w9 h1 R; ~6 w例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。1 p0 L1 @: ~& x9 N
数字设定法的一般形式为:
& E6 }0 P1 V" n/ \8 gchmod [mode] 文件名?
7 q7 ~9 a$ O5 H) L* g. O4 o6 I7 D4 f+ l% D
例1: $ chmod 644 mm.txt# E* l# i& j6 U: b2 U% R" }
X8 L6 Q; b4 i& F( g; u- $ ls –l
- -rw-r--r-- 1 inin users 1155 Nov 5 11:22 mm.txt
# Z i' I8 B1 D4 f2 h5 s% Y % m( a" d t, X) I' C
" O$ G5 C( e! f3 t% l1 N2 e
即设定文件mm.txt的属性为:
, u) d; p8 P: ^. }- E% e. V5 b. q. E文件属主(u)inin 拥有读、写权限,与文件属主同组人用户(g) 拥有读权限,其他人(o) 拥有读权限。' U4 p& f: I7 Q
$ d# L/ a0 {$ i. i( [. v
例2: $ chmod 750 wch.txt$ S" x$ Q6 b( x
8 H% J* n) |- o# ~+ }' j; W; K% Z
- $ ls –l
- -rwxr-x--- 1 inin users 44137 Nov 12 9:22 wchtxt& N+ }7 c1 B; q$ }$ B; ^3 T
& T6 {& I5 N4 S P( @3 P s5 E( V! s3 p* {
即设定wchtxt这个文件的属性为:
# w: ~" i# f/ ]6 y4 W文件主本人(u)inin 可读/可写/可执行权,与文件主同组人(g) 可读/可执行权,其他人(o) 没有任何权限。! _* G# \ `& g3 t
, x% M- c+ t# W1 X' n
chgrp命令* z$ I7 E, x; ~/ a) d8 _
功能:改变文件或目录的属组。
" y; Z) x) F6 i! b [5 v语法:chgrp [选项] group filename?. J% c( @4 h1 @8 N1 V6 P
, a. m1 @1 t# p' a, x% {; l- H- |3 M该命令改变指定指定文件所属的用户组。其中group可以是用户组ID,也可以是/etc/group文件中用户组的组名。文件名是以空格分开的要改变属组的文件列表,支持通配符。如果用户不是该文件的属主或超级用户,则不能改变该文件的组。0 U+ ^3 `' }0 A5 Z! f t
/ R! o% m7 y- m1 E该命令的各选项含义为:
& n2 w. h, ?% B) l- R 递归式地改变指定目录及其下的所有子目录和文件的属组。4 p" ~. _2 Q0 Q% p0 F
) ^- ^! ^4 M) s* N2 x# A! z, T例1:$ sudo chgrp - R book /opt/local /book3 u$ @1 L8 G) ?4 p. z% j) f! ]; ]
改变/opt/local /book/及其子目录下的所有文件的属组为book。
; s+ \, \2 ]) V
1 g7 G% X3 @/ @9 @! N) o例2: sudo chgrp -R zslf test : A5 F9 D, _, V" A& B8 C) w
将test目录所在的组由root修改为zslf组
* F/ w' ]/ N7 @0 ]& w4 |9 c! X; ~" q/ ?1 O: ~' m5 a7 W' u
- 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 .. x7 Z, T7 Z: E
; w" T8 C* ^5 O) s n3 o6 T
+ J$ t1 @; A2 Z3 j' S9 ^+ ^chown 命令' w# y& R! E& g# Y* i
功能:更改某个文件或目录的属主和属组。这个命令也很常用。例如root用户把自己的一个文件拷贝给用户xu,为了让用户xu能够存取这个文件,root用户应该把这个文件的属主设为xu,否则,用户xu无法存取这个文件。$ B. N: M8 x1 @3 Q* _. i
) Y$ r! `+ g; J7 ~% Y' I) s语法:chown [选项] 用户或组 文件
) X; b+ y8 ~ f j说明:chown将指定文件的拥有者改为指定的用户或组。用户可以是用户名或用户ID。组可以是组名或组ID。文件是以空格分开的要改变权限的文件列表,支持通配符。
# c y5 r7 w/ o% V, k$ V& y( V6 t+ {6 t7 u4 c8 N8 d
该命令的各选项含义如下:9 f# M$ b- ]$ R. H
- R 递归式地改变指定目录及其下的所有子目录和文件的拥有者。' ?1 D* L$ i0 W9 f0 B; B
- v 显示chown命令所做的工作。& M4 c* H$ ]5 \: d
, j1 y' ~" H) T; v) U2 g0 U
例1:sudo chown -R zslf test
5 L+ a9 G B9 x6 ^将test目录下的所有文件和子目录的属主由root改为zslf
- q9 p& j; ^) K) g" g* Y5 m! r5 D
- 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
1 H" z1 I6 s4 O% D8 Y
/ K; z# x7 _) ^6 i% i
2 z4 H0 ~1 i# E: Q: ]1 I$ U# X, ?+ \" r+ M* U! r
例2:sudo chown -R zslf.zslf test2 S% G) Z$ H% ?
& F+ v( E0 x) F' J, j- B: Z5 I
- 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
, V+ A2 L1 `6 w- |3 {
% e9 S) e% I$ ^% l2 D
/ e+ r: n1 X, q1 `2 l将test目录下的所有文件和子目录的属主由root改为zslf,属组有root改为zslf。- v' w2 Q) s4 S* ]1 p( D3 o' y; H
0 E' E+ c( e G) k8 \( P2 [. k
6 R1 ?2 V& s8 z
( `* D k, }7 D |
|