tid=186& 本帖最後由 media 於 2014-12-21 14:12 編輯 * x# V6 `# [7 \1 m# P
) C8 B: g' U; p+ C8 m$ w4 c
su=switch user ,轉換到root 帳號/ \9 G5 }! e. q- B& N+ q
sudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:
# J# N7 x- Q+ B. O
- v) j& J, f) ]/ U/ f2 DLinux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。 : S. a/ l3 O) ^% q5 W u
?$ E9 Y' w6 N# p4 G# ?$ b$ `1. 使用su指令 - #用su切換使用者
# M& {3 ?# _" }; C% Z - [aaron@phoenix ~]$ su#使用su切換為root$ j3 g$ U2 c7 ~; }, _4 I
- Password:[輸入root密碼]
. I) `3 [8 S. h4 x, p7 K
! F, G! K4 J7 [+ g+ _6 F- [root@phoenix aaron]# service httpd restart#已切換為root
4 @1 {# y- a* x ^: i3 g5 K - Stopping httpd: [ OK ]3 G$ m A# v) s4 y! H5 N- M, L" y6 r
- Starting httpd: [ OK ]
7 p' o6 g/ g/ W9 t) Q. _1 b2 L) _ - ! k9 k' F" N) ~5 ]" K* y/ J. t
- [root@phoenix aaron]# exit#切換回aaron) ]) R5 V/ Q: f$ w' @6 {8 Z$ f
$ x+ ^' w7 \1 F; q- #執行單一指令,不需要切換為root; l6 t$ r6 h% p5 h/ H- e
- [aaron@phoenix ~]$ su -c "service httpd restart"
: D+ e" q- l) g - Password:[輸入root密碼]
$ @9 L, K0 ^2 @) o2 n0 t' k - Stopping httpd: [ OK ]
# X6 Y* m0 U; K2 o - Starting httpd: [ OK ] k/ j: B4 F. ?" E
# @% \* k7 M! L( H. [0 x- #執行su與su -的差別(Shell環境是否跟著切換)
8 f& K' [/ g6 F& t9 f6 j } - [aaron@phoenix ~]$ su
/ F5 |% N2 R3 O8 d) P - Password:[輸入root密碼]$ t) s8 C+ S, x9 A$ D7 X
- [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數3 K- a* X0 ?8 e6 R7 E' w
- /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin
/ H: `4 n0 |* k+ v; }6 Q! Z+ l( ?1 | - ; v, q R" c2 E5 R6 u- s- _5 K' w
- [aaron@phoenix ~]$ su -
J( |2 K+ u0 v B6 h - Password:[輸入root密碼]
6 M" f6 }/ V, T* a - [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數
9 k& q- |3 Z) T4 c6 A1 x3 q - /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼 8 ~3 c o3 d) f. n1 `% f
2. 設定sudoer
- k& b$ d; Q/ @7 `
- [aaron@phoenix ~]$ su
3 ] T p: m( j7 S Z8 `% u - Password:[輸入root密碼]
/ V r/ c2 X7 q
( X: r9 N4 S7 K- [root@phoenix aaron]# vim /etc/sudoers0 {; Y6 j: _2 Q
3 G! s' |/ K: _, [8 O2 N- ## Allow root to run any commands anywhere8 k4 K% O3 |5 [5 ]; h
- root ALL=(ALL) ALL1 `1 C2 @4 R, L8 g# s* M3 P
% |8 M6 J$ ^) o- ## Allow users to run any commands anywhere
! t* m1 a4 T% |5 @ - aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼
$ }0 G O" c% t2 o( T3. 範例- #沒有最高權限,所以就被擋了: t0 i% ^' ~& r1 c$ J8 ^, q$ g
- [aaron@phoenix ~]$ service httpd restart) E- Q; p) ~: e4 U
- Stopping httpd:1 g% X1 z7 d ]7 j
- rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied
9 z! [, l+ g7 A
# z! B8 P% {3 M4 q+ u! j* _- Starting httpd:$ L- D, \( B! p7 K. c2 k
- touch: cannot touch `/var/lock/subsys/httpd': Permission denied% [. _- G- q+ T, C. a+ |$ G
- ( u% ^( z1 L8 W! J) x2 I
- #用sudo就可以8 V- o" p( o2 z% |- Q: Y
- [aaron@phoenix ~]$ sudo service httpd restart
% f Q3 M9 d [& r' o - [sudo] password for aaron:[輸入密碼]6 k9 \' ?7 Z4 ^) A, g: H. I/ N
- Stopping httpd: [ OK ]
5 g' o0 o& @8 \4 S6 e4 ? - Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。( x% n, ^+ P# {% A* U ?% G
可參考http://kezeodsnx.pixnet.net/blog/post/25810396 |