tid=186& 本帖最後由 media 於 2014-12-21 14:12 編輯
: e- _/ x+ {8 A- m# y, k4 L. |' B3 z
su=switch user ,轉換到root 帳號
4 i( V( O0 s+ l# j3 C/ i" O usudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:7 c& E. @' e4 |0 d; I3 ?+ S
1 d" e) H& e5 Y6 y' J6 E# d* mLinux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。
3 ]3 m; B# V$ Y" W0 `& r. e. A( A4 g" v. z/ n1 x: l
1. 使用su指令 - #用su切換使用者
, N2 S. H& ~( Z$ P$ w; g/ o - [aaron@phoenix ~]$ su#使用su切換為root* l3 U: ?2 y8 n" D
- Password:[輸入root密碼]
H% d6 n& F5 B0 g4 r - % Y5 `, \7 Y6 O z
- [root@phoenix aaron]# service httpd restart#已切換為root
6 n/ g& F8 [ B - Stopping httpd: [ OK ]
" U4 r( q4 Z3 E+ P - Starting httpd: [ OK ]
$ w' o, K( h! e& f; Z - 3 c4 D8 f$ Z1 c5 t- z* Z' ^6 K
- [root@phoenix aaron]# exit#切換回aaron* @2 ^ `. G8 ]8 x
- 7 Y; | Z' Q: a: M- J; @' \
- #執行單一指令,不需要切換為root
! r9 W) e- @6 ` - [aaron@phoenix ~]$ su -c "service httpd restart"
" q+ x; x1 H% Y& u* @; a- x - Password:[輸入root密碼]
* u) J2 `# Z/ v- L - Stopping httpd: [ OK ]$ X3 \: m' s4 V
- Starting httpd: [ OK ]4 s9 x1 o1 d' y7 D
- : R/ K% X+ S7 y* t: g$ [
- #執行su與su -的差別(Shell環境是否跟著切換)! b- ^& M* O. @3 \0 o& G- I
- [aaron@phoenix ~]$ su; s3 L$ c0 `, [. ]0 E/ e
- Password:[輸入root密碼]
- _: }7 A5 W$ r8 W) x - [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數4 f0 M) c( Y4 v6 ^7 Y! {
- /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin
2 l1 Z, t, Z3 z5 ?
# _: S! U0 N B) ?) ? [$ Q- [aaron@phoenix ~]$ su -0 j+ _) E( q1 i* T; i8 i, C' o
- Password:[輸入root密碼]$ B& z8 p+ p2 W8 j) K
- [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數
$ O, a$ b) J& d1 D - /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼 % H6 c, u/ b; ]) E
2. 設定sudoer
4 X) V6 G$ G& M% f7 `
- [aaron@phoenix ~]$ su
' @( B( |: o4 r, V+ D E - Password:[輸入root密碼]% G% c7 u; s" |% n
- / Y! G/ i3 p; P' {! C
- [root@phoenix aaron]# vim /etc/sudoers
0 e0 Y7 @ ?# M: ]" y - , |- N. E1 p& d7 Q
- ## Allow root to run any commands anywhere
- ?! I4 X! ` q; c - root ALL=(ALL) ALL6 R0 p: b) s' x+ g% d
, E# M. ^4 W, Q! N6 H- ## Allow users to run any commands anywhere
& u; ^4 q K& x8 c7 T2 k- N5 j+ n - aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼 : U3 x7 a d+ n5 j
3. 範例- #沒有最高權限,所以就被擋了1 p7 Q$ Q' L5 J; I% Y! y4 U
- [aaron@phoenix ~]$ service httpd restart
, M7 l1 n$ G# w; X - Stopping httpd:6 F) n$ }! f& V/ p
- rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied
; u' u4 ^6 H; ~1 a! ?- S# X - * L8 x0 z l, n) C0 r0 K4 ^
- Starting httpd:
1 V6 L2 c2 @0 B. b% e - touch: cannot touch `/var/lock/subsys/httpd': Permission denied
: }6 [5 S# V' Q8 | - 4 a+ s# H" U# o3 t* w# v
- #用sudo就可以
; }0 I5 E+ n1 A: w4 ]4 ]- `- w1 L - [aaron@phoenix ~]$ sudo service httpd restart' T% P2 w1 Q; P6 w6 {2 N
- [sudo] password for aaron:[輸入密碼]" q4 D0 J [* S, O& R
- Stopping httpd: [ OK ]) g/ h f# F5 L9 N7 k
- Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。7 F7 C3 {+ y- B- l* V1 d* a. l
可參考http://kezeodsnx.pixnet.net/blog/post/25810396 |