本帖最後由 media 於 2014-12-21 14:12 編輯 * {1 ^* n0 s/ h1 S( p4 k3 d
" `* m( h/ v+ _ Fsu=switch user ,轉換到root 帳號 k6 g2 M4 y1 `8 T
sudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:
/ Q5 {/ u% [$ o# g, h6 I d1 L" I9 k1 C3 g* f$ Z) W
Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。
/ N1 G2 x Q: z- e4 C+ K k. |# I: n9 x/ Z
1. 使用su指令 - #用su切換使用者
! R3 B3 X2 T% Y, S3 ~8 g5 d - [aaron@phoenix ~]$ su#使用su切換為root% k8 U3 e8 {1 b0 w
- Password:[輸入root密碼]) |( Z) {6 F2 d2 d+ ^+ U
- ) _, q f2 J/ e$ V+ Z
- [root@phoenix aaron]# service httpd restart#已切換為root5 k6 r6 M% c( y! M5 b5 \2 s
- Stopping httpd: [ OK ]
/ l* E0 W3 n+ H8 p - Starting httpd: [ OK ]
2 K5 N' Y% q# ]* k - 0 ]# P5 W, G# x1 Y' c. I: t
- [root@phoenix aaron]# exit#切換回aaron2 S/ n) p$ W( e! A
- & y( m! U2 H* b L- U2 B* k
- #執行單一指令,不需要切換為root+ |5 s( U; w: E: I6 F
- [aaron@phoenix ~]$ su -c "service httpd restart"
" J: [& r# _2 Y* X! r; T - Password:[輸入root密碼]2 h- r, V6 Q9 R E' D% Z
- Stopping httpd: [ OK ]
2 ~" M3 S1 B* U* [, e4 o' P/ X - Starting httpd: [ OK ]( K1 V, H3 f: w. f
6 b& y1 N$ M, r6 u- #執行su與su -的差別(Shell環境是否跟著切換)
7 [. A9 ]/ I4 V7 M - [aaron@phoenix ~]$ su# T) H' }0 G( |" s
- Password:[輸入root密碼]
, y4 z8 H* R+ c# L5 T' E - [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數2 {1 B1 S8 b: Q- N! O" q
- /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin
9 D3 ~# T) `8 c! {8 w$ c - 2 c3 ^) q" |* T x8 t& _$ u }
- [aaron@phoenix ~]$ su -
/ F8 Z) T7 {+ n" z7 p. ~ - Password:[輸入root密碼]
9 h# ~& @2 |* T- s! F - [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數
' c7 z3 w+ V0 v3 |8 X# z% x - /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼
0 u& B5 J6 y* C$ S2. 設定sudoer
$ `+ s0 H: [% d+ _6 l& h
- [aaron@phoenix ~]$ su
& b* N2 V, i) h3 Q( v0 e0 i - Password:[輸入root密碼]; z, {2 J$ f D
5 m& A- V9 E c* H* V( |2 o L- [root@phoenix aaron]# vim /etc/sudoers9 r& Z/ y$ Y: |6 J/ c+ m8 z! O* ?
- / U2 c$ x+ ^. w3 N# ?9 [: [, J
- ## Allow root to run any commands anywhere8 @2 P* V2 j4 n9 K4 }) }
- root ALL=(ALL) ALL/ z9 l5 c' h& {9 _7 Y
" C/ g+ D/ }9 N. k) d- ## Allow users to run any commands anywhere
( h/ v& C. C# k' `" n - aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼
w. d' X( v* ]2 l, D* X3. 範例- #沒有最高權限,所以就被擋了6 g ~# _ O5 u( R
- [aaron@phoenix ~]$ service httpd restart. A( X$ |- {1 D1 M: J
- Stopping httpd:
0 @4 |7 D- V: T2 r8 K6 \" P - rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied
$ G% R! K. {! K* U8 V
* ^1 @) }% m5 `3 ?- Starting httpd:, ]3 c6 n) N$ d B
- touch: cannot touch `/var/lock/subsys/httpd': Permission denied0 H1 Q7 w. V4 J c! i9 D! }- f, V
6 I5 N* A) w7 y/ E! X1 L- #用sudo就可以
$ D% l9 r, r3 o' c B - [aaron@phoenix ~]$ sudo service httpd restart |/ a, Q8 R% h- b. }$ I: Y# w
- [sudo] password for aaron:[輸入密碼]+ y0 H0 T. J7 [6 E" w0 ]
- Stopping httpd: [ OK ]
; V2 v* l0 I! D: _: x; j. Q4 e - Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。
% A% s* m# |: a4 i r可參考http://kezeodsnx.pixnet.net/blog/post/25810396 |