tid=186& 本帖最後由 media 於 2014-12-21 14:12 編輯
0 f4 f. y& r1 L3 t+ E7 b) d8 k6 t& n) L
su=switch user ,轉換到root 帳號
1 l# d0 H8 e7 D* G! ^sudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:
+ y) C) T" Y$ M8 M0 }: X3 W. {: k6 l
Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。
& Z1 w- C+ V( Q9 H% _7 I- L8 M2 t( }+ p A3 o u9 P
1. 使用su指令 - #用su切換使用者! D& k5 @% Z, }
- [aaron@phoenix ~]$ su#使用su切換為root
. F; l0 T; @, C5 W/ E. X: U" e& L - Password:[輸入root密碼]3 q' B" [' T, [6 y+ Z; M) n4 X
9 f' y* w- i. K: A- [root@phoenix aaron]# service httpd restart#已切換為root
4 U P; o4 x7 x" n/ U6 r2 T7 b - Stopping httpd: [ OK ]
4 w- E$ \2 [; ]$ d: L - Starting httpd: [ OK ]
. ~- E/ v" _& C; n6 c/ _" x+ a - 4 U! X" ?& I' x# q6 ?' _2 p% S7 e; o1 l
- [root@phoenix aaron]# exit#切換回aaron: \; T: E( X! b& v, Z2 X( H
. x: `- ^& j) M" G( w- #執行單一指令,不需要切換為root
. j' U- M$ X! g. l - [aaron@phoenix ~]$ su -c "service httpd restart"
6 A/ G3 J5 g3 k9 r3 Y2 h5 |5 l - Password:[輸入root密碼]% e0 O7 R, w C. M' P
- Stopping httpd: [ OK ]
: i# O3 i. E) W% X& g - Starting httpd: [ OK ]
! }: D/ o. \9 b- `) L; ?. S- j! p) x - : W8 u9 s& a' m& Z- f) S
- #執行su與su -的差別(Shell環境是否跟著切換)! i o0 {: w$ r$ U
- [aaron@phoenix ~]$ su& H' U5 \" I9 [! Z
- Password:[輸入root密碼]
, A$ C2 B1 h5 D1 Z - [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數4 u2 a/ X9 j4 x) W1 J3 b
- /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin0 ` v' v! y: t
4 A/ [8 }7 Q2 P: r9 Z3 ~! R6 C% `) i- [aaron@phoenix ~]$ su -
' H8 L, m& ^+ k$ | - Password:[輸入root密碼] O" O# y$ R ~
- [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數
k: U0 I R% [3 z) ^2 A8 _# A' | - /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼
/ }: b. r5 h4 ?, ^2 w, C7 [1 L( @2. 設定sudoer
" ~; Z4 X9 ?. y* C% \
- [aaron@phoenix ~]$ su
K8 |. p& z" y1 C" V# Q# } - Password:[輸入root密碼]' X0 v$ B& l' ]# z- a( H
- ; O$ c. V$ \# D, w6 O0 W
- [root@phoenix aaron]# vim /etc/sudoers
6 D. U' K' }% P$ b) l+ S& w1 p# P - 0 o/ k' p* D8 x) M! @' H# G* w! n- [
- ## Allow root to run any commands anywhere
/ C, Q! q4 g3 H - root ALL=(ALL) ALL; l- c4 x$ V1 X1 p5 q3 }0 O
- * g, ^/ |; h5 M3 Q+ d3 d, i: L: {
- ## Allow users to run any commands anywhere+ m, b; l: I& R& w+ v% @# z6 B) f2 D
- aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼
) M) }& J( o+ l' r8 M0 ]3. 範例- #沒有最高權限,所以就被擋了- G0 C0 I$ F6 W! g
- [aaron@phoenix ~]$ service httpd restart
f2 i1 T$ e, i& d - Stopping httpd:
. z- R: L3 o) g4 M- f - rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied
2 x( M$ W, l1 S0 } - / p8 w. { @2 ^: g+ I' c1 I. A) J
- Starting httpd:
4 \: v# H% L9 _% E - touch: cannot touch `/var/lock/subsys/httpd': Permission denied
) E: A6 U/ a) I4 \+ m' Y
8 g# ~' w( f/ b4 f& T- #用sudo就可以- D6 z4 {# X6 ~2 Q \4 C
- [aaron@phoenix ~]$ sudo service httpd restart
; N" }2 b$ C. K6 R - [sudo] password for aaron:[輸入密碼], o8 j: a, S9 B, ~6 F
- Stopping httpd: [ OK ]# t: ^, P* Q7 y! [+ [% ]" T
- Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。
% k) d$ G% Z) y2 E2 ?) F可參考http://kezeodsnx.pixnet.net/blog/post/25810396 |