tid=186& 本帖最後由 media 於 2014-12-21 14:12 編輯
% Z9 y N+ }" t: u) k" F$ S
/ L6 L+ l* V6 i; x" a$ ?su=switch user ,轉換到root 帳號, B% K7 K. E0 K7 j
sudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:
; u2 X0 P# [* Z9 T2 t$ @7 `* }$ ]8 l/ z, _6 ~& A! n; v8 D! R
Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。 - C. N+ V) P: g
2 g5 J) Y5 ^6 `1. 使用su指令 - #用su切換使用者7 W9 i& Z1 z$ t7 b! L3 Q' W5 e
- [aaron@phoenix ~]$ su#使用su切換為root8 D* s( J) {$ `2 h" D
- Password:[輸入root密碼]
7 S5 _1 n$ [ h5 z" d. ~; ^) {9 j - : U( p7 r, v' G& t& y
- [root@phoenix aaron]# service httpd restart#已切換為root) J* K, M! w( s
- Stopping httpd: [ OK ]. Y( }+ M, b& S' ~. R2 x
- Starting httpd: [ OK ]3 q1 Y& P3 Z! y: w) u0 E, R$ y
- ! b( @& s8 |/ \* \/ V* I \
- [root@phoenix aaron]# exit#切換回aaron
" a B& F K0 L) E; S: P - 5 I0 v& u" y! [5 ^) v) p
- #執行單一指令,不需要切換為root
; v c* ~. K/ q5 R9 g6 F - [aaron@phoenix ~]$ su -c "service httpd restart". f" `$ x9 }+ X/ d' r5 t! Z2 r
- Password:[輸入root密碼]+ G+ X' ?8 v/ Z% w. _3 \
- Stopping httpd: [ OK ]
- G0 F" V' @& D q& Q9 o1 C - Starting httpd: [ OK ]
; W: c K! B# \; P( F5 L - 1 C% i5 s- f! q+ `
- #執行su與su -的差別(Shell環境是否跟著切換)
3 |# [1 N' ^: M) B - [aaron@phoenix ~]$ su
9 k1 `8 l. a6 n: `4 U v4 L* D - Password:[輸入root密碼]* `, ^0 K' A. q, J% \9 {4 j, J5 c* W
- [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數7 _7 d' k) p) x7 B/ H, y! N1 U4 A: b$ [
- /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin
0 K9 g: ~" q/ Y& F; F7 k - ; |- M) i' Z) m7 C* @7 G
- [aaron@phoenix ~]$ su -
2 h* h# {4 j! D - Password:[輸入root密碼]
4 q5 E0 ~2 ? p [ - [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數 }* n6 o. z7 a8 Z
- /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼 $ O+ p) `4 }8 p# M& M8 p
2. 設定sudoer
|" l& ^: Y5 s2 a- \
- [aaron@phoenix ~]$ su
+ i. g; \' \$ O K" v5 n2 j: { - Password:[輸入root密碼]
; n' A* G8 ?6 R - / \0 k% n2 c% [+ e/ X
- [root@phoenix aaron]# vim /etc/sudoers1 x; v, X9 `3 u; j# x6 ]; x0 \: G
& n" T" q% C: `/ M- ## Allow root to run any commands anywhere. Q- P) |7 O; U+ z
- root ALL=(ALL) ALL( _- H5 s) K, p
- & q. H O' t* W# E) {9 f, Q$ G
- ## Allow users to run any commands anywhere
4 O0 S' M/ q* x2 M5 ]4 m# j% L+ D - aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼
: }" O' C5 F; s, O2 Z3. 範例- #沒有最高權限,所以就被擋了4 x3 I3 R2 N- T$ b! o9 K1 ~
- [aaron@phoenix ~]$ service httpd restart
" I$ I3 a9 G4 P6 b" @6 G3 Q, B9 e; f - Stopping httpd:
) U+ w- P4 e u6 V - rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied
, O' ~& Y. z) W1 @; Z* \) g& c
0 h0 g, K: q$ F) ~2 E J- Starting httpd:
; x2 V5 j* e+ k+ H - touch: cannot touch `/var/lock/subsys/httpd': Permission denied
/ j( y3 [( S1 J5 E$ T& U
6 G2 K0 J( ~" z- #用sudo就可以
2 M' G4 G L# f - [aaron@phoenix ~]$ sudo service httpd restart
) l) B/ \$ |! r: X8 ? - [sudo] password for aaron:[輸入密碼]
7 H# [! Q- P5 e4 o' p8 ] - Stopping httpd: [ OK ]
& W! H$ c% B3 h; t - Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。! A- o k3 l2 `
可參考http://kezeodsnx.pixnet.net/blog/post/25810396 |