tid=186& 本帖最後由 media 於 2014-12-21 14:12 編輯 / X0 N/ ^7 @5 [7 `, R" y
I5 _( N" |6 E4 ^2 V
su=switch user ,轉換到root 帳號* M$ E* T9 o. c+ }0 k, A# b( R
sudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:4 N4 s, x" v- p' t' N
, L3 Y! V% |% f
Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。 ( c+ a2 a5 M; x* F! w: ^3 S
7 n6 @& \( D/ N! l* Y; P: x
1. 使用su指令 - #用su切換使用者
+ ?) l" M" R; g5 |. f - [aaron@phoenix ~]$ su#使用su切換為root
[0 F/ B0 `4 t- i9 c - Password:[輸入root密碼]+ }7 d# }2 \" M6 l3 X
- 7 ^1 B+ ]6 R2 O7 h0 Y* z5 G8 X- _
- [root@phoenix aaron]# service httpd restart#已切換為root
9 u9 V# e: s9 C6 D* T0 k9 _ - Stopping httpd: [ OK ]/ I) O4 l. e, C% Q
- Starting httpd: [ OK ]2 i' w: e& x/ x. w% {8 Q
+ K" W) d; P2 T/ Q3 ^8 K% J4 g- [root@phoenix aaron]# exit#切換回aaron
1 q% Z. N: X- P. S- M - 6 `# R$ {4 ^: E5 E$ k8 ^* Y
- #執行單一指令,不需要切換為root8 W3 J. G) l( g7 N E$ s
- [aaron@phoenix ~]$ su -c "service httpd restart", l0 N9 P7 G; C
- Password:[輸入root密碼]
I$ F% K. f$ W4 G - Stopping httpd: [ OK ]
5 V) w! D+ e/ K# S4 K - Starting httpd: [ OK ] x, }% g( u: f0 i1 U9 t5 R
- & Y& N+ d( q8 W) h& N0 N" A
- #執行su與su -的差別(Shell環境是否跟著切換)
5 V: } y* [# t - [aaron@phoenix ~]$ su& @7 a, H0 [8 O a8 W# F d( p
- Password:[輸入root密碼]
* F( P8 ?% J" S; {) [ - [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數
9 b, l) ]3 Z8 ]* \; E: D( y v0 | - /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin" D" h& m# T$ T' g D) A w; `
; x8 J; o5 M8 V' D2 {- [aaron@phoenix ~]$ su -7 @1 ~( N; @9 d" ]" W+ {- Y
- Password:[輸入root密碼]
; R; O; D2 k+ Z# [( H - [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數3 u( U7 q- y& `- v0 R
- /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼
( M$ x1 d% C5 u) |% h) a6 |) [/ n! A2. 設定sudoer/ A/ M4 p2 b) x+ S9 }6 _, g% X
- [aaron@phoenix ~]$ su9 }. E0 F6 Z5 G5 v4 f. k" j& b
- Password:[輸入root密碼]
0 p1 H) v0 s9 D4 k- @
: Z8 j- m3 b" N3 e6 K/ c, W* ?- [root@phoenix aaron]# vim /etc/sudoers
- ?- w+ q5 Z. i% x
. R* p( f7 x4 y+ c! b9 l- ## Allow root to run any commands anywhere" V/ u/ E0 n( h! U. c
- root ALL=(ALL) ALL0 }9 o+ D% P# z0 J& g& P
( h, _4 S- D, L( Q! n! X6 \) E' {- ## Allow users to run any commands anywhere
3 r4 F/ ^2 p2 g. c$ o6 U0 z" t - aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼 4 m# R! c+ W" E4 D$ b/ i- P1 u' ^
3. 範例- #沒有最高權限,所以就被擋了
. Z2 U7 P; c- V) I1 ~! d j - [aaron@phoenix ~]$ service httpd restart/ h, B- ~. c3 V: I
- Stopping httpd:# H8 b5 K3 W) g$ i8 K E
- rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied" r4 y1 z4 E( Q0 {; w1 f
- 2 n& Z) O2 K5 ~- {! O7 ]! s. h3 M+ Y
- Starting httpd:
* _: w: C% C2 _0 s - touch: cannot touch `/var/lock/subsys/httpd': Permission denied' ?2 m u3 X# E- d; E; `
- 8 @2 i" w8 |7 w/ [
- #用sudo就可以2 h Z, e& N# q
- [aaron@phoenix ~]$ sudo service httpd restart
/ }' |5 C3 y0 I - [sudo] password for aaron:[輸入密碼]
( U8 A/ o4 |. y% I1 @ - Stopping httpd: [ OK ]3 j9 ~! i' J$ L: r3 ?) `: A
- Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。
5 a5 O! W, v: U: O可參考http://kezeodsnx.pixnet.net/blog/post/25810396 |