本帖最後由 media 於 2014-12-21 14:12 編輯 : `4 Z) O7 [ o& i9 g6 V- G3 ?
9 Q. G5 y* [ O1 |7 K+ u
su=switch user ,轉換到root 帳號
# M: o: o; ^1 X7 k9 Msudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:) C0 e% E2 m, i7 \1 k. S! b
8 o3 N& c- K0 _. QLinux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。
; z% M1 Q* p U) I+ w
% L; k P$ h Z* x& Z$ G3 u2 [1. 使用su指令 - #用su切換使用者
# g" f+ z+ n/ \' a" c$ ~5 U - [aaron@phoenix ~]$ su#使用su切換為root( ?$ b' B; n9 S) {+ y. l$ T5 S
- Password:[輸入root密碼]
7 s8 j) K p0 a2 e
2 N* T$ D; \' T3 l) Z- [root@phoenix aaron]# service httpd restart#已切換為root. H' i# `! M& S* ?" ^7 E
- Stopping httpd: [ OK ]
) g9 H, Y6 L' x, {% M) T- r. B/ a - Starting httpd: [ OK ]
8 p0 U2 X+ U! Y; X" s
) C% [1 S& V4 X+ b8 T' Z) c- [root@phoenix aaron]# exit#切換回aaron: z( h( f) i1 |3 ?" p$ d
$ C$ a5 m+ }, S! E- #執行單一指令,不需要切換為root
; e4 E& T& ]$ Z) ^& c8 O8 \ - [aaron@phoenix ~]$ su -c "service httpd restart"6 Y; t! J, k) ?! _" n& C( X
- Password:[輸入root密碼]
! K' o" a$ m8 A# ^2 `0 l: r8 Z5 [ - Stopping httpd: [ OK ]: U( g) l9 g" c A7 k$ N
- Starting httpd: [ OK ]' p+ O# A- N3 A! y* \ r/ |
- Z# A h$ o; Q! B ^
- #執行su與su -的差別(Shell環境是否跟著切換)" ]: Y2 \. a: z# h
- [aaron@phoenix ~]$ su7 h$ h8 D. k4 d
- Password:[輸入root密碼]% |6 _0 [: ^ g3 R1 m1 s
- [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數 v1 \( p' s+ d! ]
- /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin
7 H' j# U# I! V1 h; p3 H$ z
- z& E5 K9 W0 x$ I, g- [aaron@phoenix ~]$ su -
6 A2 b0 o. U% y% E( d4 R: ]9 t - Password:[輸入root密碼]
; r( t. i0 P* Q6 ^ - [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數9 s1 c# T! u) ~& h
- /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼 * B) t9 I9 U. e4 Y3 T$ Y
2. 設定sudoer
; s1 w) t$ B. [6 v; g0 ]. J# e3 R& D
- [aaron@phoenix ~]$ su& @: z0 ~: q6 B/ p5 a; l8 J
- Password:[輸入root密碼]; p7 @, u2 ~( X7 o5 O8 V d
- % v5 Y. v' a& m i1 R |
- [root@phoenix aaron]# vim /etc/sudoers9 Q" ~( W, f7 e8 g7 Y
- 3 \5 E! Q; w; v" G
- ## Allow root to run any commands anywhere
8 E1 p5 n9 q7 ^) Z- P2 j+ Q4 S - root ALL=(ALL) ALL+ Y z; J- r0 c) `8 z
- 6 x- l: M' p/ D) k4 [' }9 L9 @
- ## Allow users to run any commands anywhere, r u+ _8 H. }: d: W( R7 N6 s
- aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼
, R- w; c/ R2 k5 P3. 範例- #沒有最高權限,所以就被擋了$ J: R! [3 z/ Y' y" y3 c
- [aaron@phoenix ~]$ service httpd restart
: n: a0 N4 u1 K - Stopping httpd:9 J. a1 l+ y4 o% v
- rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied9 Q+ N2 Y% S9 f5 l0 a; V
1 Q1 e6 j0 I) y7 L+ o# ^2 {- Starting httpd:
8 J3 A- G! k4 F2 ~& U - touch: cannot touch `/var/lock/subsys/httpd': Permission denied' F. q$ v/ W5 P M5 d+ r" U: [7 z
6 T8 O, c: w; V9 A) }4 U- #用sudo就可以+ R1 ^9 m( o9 m. l' ? T: \
- [aaron@phoenix ~]$ sudo service httpd restart0 Y4 X8 o: ?& {6 z2 b
- [sudo] password for aaron:[輸入密碼]
: z6 r8 H. N1 A: l$ `; l W" J - Stopping httpd: [ OK ]: T" b, F0 [6 g- E4 t8 h
- Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。
& h9 u9 T. @2 s0 m2 n0 t9 H3 [) Z可參考http://kezeodsnx.pixnet.net/blog/post/25810396 |