tid=186& 本帖最後由 media 於 2014-12-21 14:12 編輯 4 S, t1 k2 R/ s) m
" z2 Q7 u5 [1 P
su=switch user ,轉換到root 帳號- `2 \: f* [) v3 z8 q
sudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:& c2 ^! W" J( N6 l, T9 x, O6 s
! {+ t6 E) l: }" `8 ]0 r
Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。
) o, q8 |+ Z) R' J7 i7 `! N: u4 g2 ?( \5 a5 @3 N- S7 `
1. 使用su指令 - #用su切換使用者% |( l% @, o& ?* K
- [aaron@phoenix ~]$ su#使用su切換為root9 C, [, W! I/ k+ a8 V
- Password:[輸入root密碼]
/ ?: G6 L1 b& [& B5 M R: [/ Q
3 s9 x6 Q0 c! ^7 `8 f- [root@phoenix aaron]# service httpd restart#已切換為root% u6 C$ h8 b& z7 G+ g, M7 h
- Stopping httpd: [ OK ]' r4 u; I9 L5 g
- Starting httpd: [ OK ]
+ f6 k4 Q2 i8 p: M
' g* _3 e7 O9 a6 @+ y6 f% u. q- [root@phoenix aaron]# exit#切換回aaron
$ w) o/ W- d7 W' H$ f" K3 v - Q: J% z& ?7 J4 u3 M
- #執行單一指令,不需要切換為root
% Z* M0 ~" `- o: w! C - [aaron@phoenix ~]$ su -c "service httpd restart"
3 N5 g$ ?4 Z& }+ O+ A3 s0 h2 d z - Password:[輸入root密碼]( u, z& ]4 k2 ^
- Stopping httpd: [ OK ]
) G; B6 U, `" J/ h- z - Starting httpd: [ OK ]
: N, K$ [1 N/ _) V; D# s - 0 I+ i/ h2 P& k4 l( ^( D) k' S
- #執行su與su -的差別(Shell環境是否跟著切換)1 y0 A& E' Q. I J( M& q; h4 R( d
- [aaron@phoenix ~]$ su6 Q! z2 S ~' X8 [1 X @1 `
- Password:[輸入root密碼]
; `1 C( E7 \* G X0 Z - [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數
6 v( n: Y1 n7 Q1 g ^- o' A4 Z% y( Q - /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin
6 G' C" {; [8 p) n - 7 ~# S& ]4 l8 A2 D
- [aaron@phoenix ~]$ su -4 S U% H) l1 m; { X( O+ Z5 ^ J+ M. M
- Password:[輸入root密碼]
8 y. E$ F, ~' c6 j- G7 U5 E - [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數
, g6 b1 u0 Z. }$ e. F, E( P - /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼 8 c) e% H0 ^* i/ ~/ ]& p3 x
2. 設定sudoer3 u) p, C! a* @; ]9 ~
- [aaron@phoenix ~]$ su1 z4 ], @, h( x" n, q( h
- Password:[輸入root密碼]6 u+ n& {, c1 O5 x- m3 w
0 z# `/ b* V: l- [root@phoenix aaron]# vim /etc/sudoers9 `1 I* }9 I0 E* o, X$ B+ V* K- x" r4 R5 L
- $ ~% o, o8 q3 n/ |! \; e3 `
- ## Allow root to run any commands anywhere
! L# q8 w1 X- ~9 P( m& ?( ]6 j - root ALL=(ALL) ALL
. q. X, K3 R4 t - & j. D# l9 W. h4 f
- ## Allow users to run any commands anywhere
# L: _6 a3 [$ r* ^4 ]# k- I - aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼 ! O7 o, c; X- B5 k/ i
3. 範例- #沒有最高權限,所以就被擋了4 Y) c! k+ ]8 z d
- [aaron@phoenix ~]$ service httpd restart
) F5 x! w# q7 ~& Q: o3 t0 E3 o8 a - Stopping httpd:+ Y1 v8 k" A3 w; \% S9 e9 ^
- rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied' f, F# z' Q) j7 \
- 9 h, R; `: _* S z2 q
- Starting httpd:
0 d* l) U, ?) l; v1 r4 S - touch: cannot touch `/var/lock/subsys/httpd': Permission denied
- q2 A; r7 N* ^. B+ p - ; I: Q4 R) Z3 Z
- #用sudo就可以
% ]* K7 I! p( {! O" A - [aaron@phoenix ~]$ sudo service httpd restart+ N- J6 L Z# l' w, n. Q. W' W
- [sudo] password for aaron:[輸入密碼]$ W0 j6 {4 t1 H- [$ s! R% C; F) n
- Stopping httpd: [ OK ]
2 T! L/ ~9 ^/ x% t! U7 I8 o' p - Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。8 p/ C/ ~# P7 r$ b$ x
可參考http://kezeodsnx.pixnet.net/blog/post/25810396 |