tid=186& 本帖最後由 media 於 2014-12-21 14:12 編輯 + _: |) o+ N9 n$ h6 W$ ~% Y9 ]: `
- u2 @1 Y6 G8 ~1 R9 }3 ^1 M
su=switch user ,轉換到root 帳號- v$ H/ b$ O0 X
sudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:6 c: ^( a8 G7 D8 `& o1 A7 T
8 d) {2 X( F7 g
Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。
' d* W% u- ?! ^ N! E, l {! {
4 ?( s5 e Y( {$ C1. 使用su指令 - #用su切換使用者
3 j! o2 ]; L8 y0 k5 j - [aaron@phoenix ~]$ su#使用su切換為root
8 M. \* f5 P/ k - Password:[輸入root密碼]
! A6 b; i/ A/ N( u O+ K L5 M9 {2 g4 H - 4 k8 Y" l0 ^: r" J. p- I
- [root@phoenix aaron]# service httpd restart#已切換為root4 h# E E0 y: \. }/ D( C
- Stopping httpd: [ OK ]
8 z: S8 \) a+ E2 c - Starting httpd: [ OK ]* L& ?' F5 w' N; C# k% g
- . ?1 {0 d* I2 {0 D
- [root@phoenix aaron]# exit#切換回aaron
& ^4 D: c9 q) g! m
% w# L1 b6 Z; P8 K- #執行單一指令,不需要切換為root
0 g1 [$ c/ R0 H( o! s) q+ F - [aaron@phoenix ~]$ su -c "service httpd restart"; n& T4 `9 Z$ f+ j$ g; i3 d: x
- Password:[輸入root密碼]
; x" [' z* V; ?4 h* {& Z* |! X - Stopping httpd: [ OK ]' E) a2 C2 Y: p1 D; B f
- Starting httpd: [ OK ]8 x- L. }7 l# ^ V) L; I/ c
$ m d$ ~; p1 K6 x5 i' t3 j- o- #執行su與su -的差別(Shell環境是否跟著切換)! m, M! X/ [" J" A5 d
- [aaron@phoenix ~]$ su5 j N9 b$ i6 z# X% M
- Password:[輸入root密碼]( N$ N0 s" v3 r8 a# O
- [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數) R) Q2 \4 ?8 j& W( L, D6 u6 P5 w
- /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin. g# V: G3 y6 ?
- 5 m; ~% B( T& d G% w7 R
- [aaron@phoenix ~]$ su -
+ Z0 a; t1 o: S) D+ m - Password:[輸入root密碼]+ Y1 \! }! i- S9 E$ U( N" F/ }1 u5 ]
- [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數
0 ~* O6 C2 u" \1 l# B ? - /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼 y7 N6 g! p1 } n
2. 設定sudoer
' W0 j2 G7 @7 A! B) ]
- [aaron@phoenix ~]$ su
: G8 V% ~; S; e; J& V P, T- M - Password:[輸入root密碼]
9 ]8 ]" M; f, o" N - ! G8 X2 R& A: O! f7 B! U0 N( ~0 m
- [root@phoenix aaron]# vim /etc/sudoers/ p1 h8 R) y. ?4 K
4 d3 y4 V p9 p4 v$ M7 h6 a* n- ## Allow root to run any commands anywhere
- S* g1 k" I; |$ u* x+ W% \- R - root ALL=(ALL) ALL$ H t5 x6 c) N; o9 c8 o
. ?" K8 h; ]/ F* u- ## Allow users to run any commands anywhere
1 I! S& C1 ?/ m1 X - aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼 5 b- I4 a; J1 ~6 x4 t
3. 範例- #沒有最高權限,所以就被擋了$ T) i* z/ N* A
- [aaron@phoenix ~]$ service httpd restart
4 M" G9 e' d; O3 h; L* } - Stopping httpd:
# E4 y) s% \# a4 p/ r - rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied
6 C V1 p+ j2 U5 B6 f4 v
0 O6 b* ^" f1 A- Starting httpd:
) W, U# ]% B9 J) { - touch: cannot touch `/var/lock/subsys/httpd': Permission denied
/ ^0 p; c7 F8 d2 m - 6 ]9 ]8 x. R( [; n& ?
- #用sudo就可以3 M) N9 h1 t/ D, S2 Z
- [aaron@phoenix ~]$ sudo service httpd restart
$ k' Q8 m) ~) b4 S$ p0 d) O - [sudo] password for aaron:[輸入密碼]
( o# @: W4 E+ G/ U - Stopping httpd: [ OK ]2 o8 i( W: E3 @- k
- Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。7 `% P1 `) m0 I7 R
可參考http://kezeodsnx.pixnet.net/blog/post/25810396 |