tid=186& 本帖最後由 media 於 2014-12-21 14:12 編輯 - U1 m1 A1 `1 Z7 z( T
; {7 H/ Y$ _. U i) {$ d' ksu=switch user ,轉換到root 帳號: f7 k8 _2 h8 f+ x h
sudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:
6 V8 w: h: Z z
" E: b/ N1 M; S: N# T. xLinux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。 : d, \) O4 N4 J. s5 ^9 N5 S
' ~- Q) B1 S' |' X( o3 G+ K; h: A1. 使用su指令 - #用su切換使用者
; T5 v* V& k7 A% g! X - [aaron@phoenix ~]$ su#使用su切換為root
3 @$ E, L; w' y) o: \0 A - Password:[輸入root密碼]
+ V- H" x9 z/ m8 R& \
6 ~7 U5 t" J) f. R- [root@phoenix aaron]# service httpd restart#已切換為root
3 \6 M, f. h' F& n. I$ q - Stopping httpd: [ OK ]
+ N9 {; f( f* M2 I - Starting httpd: [ OK ]4 z7 [: [3 p5 m% ?
0 O( N7 K1 T# i( ~: ^+ T8 B g5 V2 i- [root@phoenix aaron]# exit#切換回aaron( {1 L$ B. D4 n$ X% r6 Y
- 9 i& M7 `& h3 F, Z4 }
- #執行單一指令,不需要切換為root4 Q* ^/ }# s# V; R E1 j
- [aaron@phoenix ~]$ su -c "service httpd restart"/ o& Z5 ^6 [# g) e; `, d% |: m: ]4 T
- Password:[輸入root密碼]8 \3 H# b/ j, D# y8 _
- Stopping httpd: [ OK ]
( [1 s1 A( R1 a - Starting httpd: [ OK ]
4 V* F2 u8 c, Z4 a - Y! h6 G9 p) r+ N2 A
- #執行su與su -的差別(Shell環境是否跟著切換)
6 r% T8 ~. Y% Z. j @# N - [aaron@phoenix ~]$ su
0 {$ _7 q8 I6 a/ l; G4 n - Password:[輸入root密碼]
& J1 g# ?% @5 k6 [! n& Q - [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數
6 M* ~+ E, q8 u5 F - /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin
3 i/ `5 Y8 ?& P# Q6 g - ) j+ M% T) z- D; S! _1 h# q
- [aaron@phoenix ~]$ su -
. f0 Q; p0 @' D# s& U5 k" z4 ? - Password:[輸入root密碼]$ U9 v4 A( ?* \! p3 b7 U6 X1 H
- [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數9 }* V; ^8 x! `5 m. I, M- O+ `/ G
- /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼
; ]; L5 L! o; s2. 設定sudoer5 d% }* e: o, l' V5 m' X0 V
- [aaron@phoenix ~]$ su& U9 Z# j/ ^0 m* i& H, a0 ?
- Password:[輸入root密碼]
0 Y% O) ^, S) e
) K, S# @* S* h7 r5 b- [root@phoenix aaron]# vim /etc/sudoers+ P6 M! V' \! Z9 f6 x7 X- E( Y
- + O8 i' D3 h/ S8 F5 h* e% f& t
- ## Allow root to run any commands anywhere, d6 e. [9 W9 f( Z+ S; s- h
- root ALL=(ALL) ALL
% t8 B2 X1 \( j& `* B- k! z - , W* |. n* ]+ v+ @
- ## Allow users to run any commands anywhere
& n# [+ @. y; o5 ^ - aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼 4 @. q5 y: h% u4 y* C* D
3. 範例- #沒有最高權限,所以就被擋了) m4 Y" | a& H1 ]
- [aaron@phoenix ~]$ service httpd restart6 J, q) f1 y9 l. ^
- Stopping httpd:
3 z3 r% B7 O! _! t - rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied* G2 W- h% T1 k2 R
- 6 S$ [) ^2 N- @8 ]
- Starting httpd:
+ w3 z7 ` r' { w* B) v5 F - touch: cannot touch `/var/lock/subsys/httpd': Permission denied
7 R& o$ \* F( d7 X5 j. F+ I- n+ l
) l# d5 u' W* x7 n- #用sudo就可以
7 @. Z7 G, N. E# h; u. _+ Y - [aaron@phoenix ~]$ sudo service httpd restart
( I6 U4 a! \4 K7 ^3 L3 R' a! r4 k - [sudo] password for aaron:[輸入密碼]2 d0 ~/ B! V# E6 @/ g# O
- Stopping httpd: [ OK ]
5 a8 D: a' _. e% K, S# H - Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。
/ A7 y% T& p/ W$ n( ?/ C可參考http://kezeodsnx.pixnet.net/blog/post/25810396 |