本帖最後由 media 於 2014-12-21 14:12 編輯 & U5 p$ u1 Y. Y' s" T- O0 w
1 M4 k: z. b( `$ K. K# |
su=switch user ,轉換到root 帳號7 t: l$ A l# b* R) u
sudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:
" Z) I3 c6 `- B& d8 B' M6 F9 k+ C. ]) M) l7 i A5 r
Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。
! T, H, P# { ~: R: E: f; E- K8 f5 p- }; g$ n( h
1. 使用su指令 - #用su切換使用者4 _0 L4 O9 O' [7 u; b
- [aaron@phoenix ~]$ su#使用su切換為root: i6 f. i" t. s+ ~- m8 @
- Password:[輸入root密碼]8 l* Z ]+ Y. r- _9 B. C
- Q: \4 W5 k9 p& W* ?# ?7 s) f
- [root@phoenix aaron]# service httpd restart#已切換為root
6 l2 k6 X% O7 t U - Stopping httpd: [ OK ]/ _- S I# z' I5 I. ~
- Starting httpd: [ OK ]* x! u4 @ R0 Q
4 j6 F( O3 v( d! r- [root@phoenix aaron]# exit#切換回aaron! |) P4 o* c* |) h) U, y3 z
- 2 o% H2 @! b ^ V, o* Z; R
- #執行單一指令,不需要切換為root
* d4 |8 |* \- c R! |2 R6 r3 K1 { - [aaron@phoenix ~]$ su -c "service httpd restart") t, H! c: q7 p9 a
- Password:[輸入root密碼]
3 q# b1 X% e% a/ r& x0 m4 l - Stopping httpd: [ OK ]: b; d X+ j$ p
- Starting httpd: [ OK ]
~$ X+ `+ Z, y$ R- I
- B* o: v- K& }/ p' ?* E& u( @4 c- #執行su與su -的差別(Shell環境是否跟著切換)
) K0 n9 x# `$ L8 ?' R8 }( w - [aaron@phoenix ~]$ su- c) y: n7 @- _- E# W% W4 R
- Password:[輸入root密碼]
: @, r* X0 U u- e; d% i( O - [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數
0 @0 p% O/ j3 K - /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin7 [, v& }8 i# y1 Q9 c. @% q
( B- F7 j6 W h* ]- [aaron@phoenix ~]$ su -
* T6 ^! V7 J! m - Password:[輸入root密碼]
' Q2 I. x& F2 l2 Y# O8 z" y0 C - [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數
" @7 s7 X; ]( t - /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼 / e0 ~; f# M: m+ X) t
2. 設定sudoer8 \" _4 U+ q+ T
- [aaron@phoenix ~]$ su
; s) p: X% q9 J2 X2 z - Password:[輸入root密碼]% S( `+ C+ [5 R- Y9 e' x
- $ s" d: d z/ l: [
- [root@phoenix aaron]# vim /etc/sudoers
1 } h% e6 E3 U, g - 7 E x* k: f" H3 |1 g
- ## Allow root to run any commands anywhere" }7 E" O4 Q) x. M
- root ALL=(ALL) ALL
3 {9 g' s7 z4 ]) Z$ V& j( q - . b: H0 Y1 k6 ]& b9 L8 X
- ## Allow users to run any commands anywhere
$ z+ T3 x9 G- Q$ p. p - aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼 1 f3 |8 a5 o9 F; J
3. 範例- #沒有最高權限,所以就被擋了5 u, h: f& Z( s9 f) y
- [aaron@phoenix ~]$ service httpd restart
5 n" x# b" T& q* b! \' q2 G6 s - Stopping httpd:
! z4 c0 F8 x: {& Y - rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied
0 E% Y& N! B. K* o( J% s
7 x9 A1 Y) n* y- Starting httpd:" t7 \3 H4 X+ i1 d b+ Q
- touch: cannot touch `/var/lock/subsys/httpd': Permission denied
) G7 m4 o+ h0 ~5 \/ a# n, Z - 5 l( ^7 z+ ?0 z
- #用sudo就可以
8 o& `0 A0 f& w8 Z, G+ D1 Q- U# Z- | - [aaron@phoenix ~]$ sudo service httpd restart
- a/ k9 c0 y' c% l V/ N - [sudo] password for aaron:[輸入密碼]
5 T$ `3 E/ T) {/ v - Stopping httpd: [ OK ]
8 O" l: U. e6 U) P8 }. i, g - Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。
4 B' F( R. v' s e: C: w可參考http://kezeodsnx.pixnet.net/blog/post/25810396 |