tid=186& 本帖最後由 media 於 2014-12-21 14:12 編輯 " Z' W; {" i* B2 S7 t( h
" V8 Q4 c: ^. O1 C9 O Q1 B( k Ksu=switch user ,轉換到root 帳號
3 A+ _& R1 H+ ~% Hsudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:
/ W" g/ b% U: L
) m3 q" Y" F$ e z0 zLinux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。 # W. {' |* P- G
6 z) y/ w! m: y1. 使用su指令 - #用su切換使用者5 G: r6 G8 n6 [4 z9 v
- [aaron@phoenix ~]$ su#使用su切換為root
8 E: C2 n! n2 d - Password:[輸入root密碼]
5 } L# b- c6 q/ p8 h0 g. S - $ y4 K) n a/ u2 V
- [root@phoenix aaron]# service httpd restart#已切換為root
% y) b( m% z8 }0 ~* _0 ^* X - Stopping httpd: [ OK ]
! X4 U& I% `5 {; X - Starting httpd: [ OK ]: T. W5 u( w5 m c
- * k8 W9 l" M9 n; P
- [root@phoenix aaron]# exit#切換回aaron
+ M- p+ G. X* {- f$ M s - * L0 J; {( j" I( [! N
- #執行單一指令,不需要切換為root
, c( z$ D- e" u4 o" i5 k - [aaron@phoenix ~]$ su -c "service httpd restart"
1 ~7 \, A$ n8 b; P& @9 d - Password:[輸入root密碼]
4 v& \& T9 u- [8 g+ B - Stopping httpd: [ OK ]
7 V" j, p8 ^3 L3 o( q - Starting httpd: [ OK ]
+ u! R' R& T7 M# j0 j; U" g
4 r; h6 D! }4 h M5 S- #執行su與su -的差別(Shell環境是否跟著切換)! N2 l) w3 H! Z8 D
- [aaron@phoenix ~]$ su, ]2 \: T9 n% e, y8 j
- Password:[輸入root密碼]8 U( J) H6 y1 ?, [7 X2 A o
- [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數/ k/ @( ^+ b/ f
- /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin/ Y N: T4 k; D7 G4 L9 j
) Q$ q, i8 |4 H- [aaron@phoenix ~]$ su -
% s/ a6 _* v- s: {0 U - Password:[輸入root密碼]4 N$ B7 M" _& J& ?+ V* e8 {
- [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數
, v8 G' ]; i3 q - /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼
* k' a: j$ Q0 k- r! Z2. 設定sudoer/ L' a# R% N! s; J% W& @# I
- [aaron@phoenix ~]$ su
4 V2 r+ v* L! ?9 \+ \* Z - Password:[輸入root密碼]7 I, |* t1 T/ X: I% B7 b! g* L
- 1 z9 j8 h: _# d% i
- [root@phoenix aaron]# vim /etc/sudoers+ c$ `# F- E2 C' d
* i$ q S1 b7 t! t5 y9 m- ## Allow root to run any commands anywhere
# s6 d+ K6 e( c* h% X7 V7 N - root ALL=(ALL) ALL
4 r' f* s4 a# o# P7 \: _) N - 1 T ^+ b% }* J5 F& ~" N
- ## Allow users to run any commands anywhere- }9 Q- @4 G2 y$ d+ _6 f5 h6 \
- aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼 & P* |: ^" B) Z8 k9 [
3. 範例- #沒有最高權限,所以就被擋了4 M9 m& M: s. c( S( b
- [aaron@phoenix ~]$ service httpd restart, h5 ]1 |! s5 F: S3 Y7 x2 u% {
- Stopping httpd:
1 _) }5 ]8 w1 N* s' T - rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied) ^; ? ^6 U5 w: H' K. _5 f" z9 J6 ~
9 T0 @& h9 j: a1 I3 |( i- Starting httpd:5 B, G/ F2 a* t1 Y+ p4 N
- touch: cannot touch `/var/lock/subsys/httpd': Permission denied
( U# B ? Q q% d0 Y
4 y1 Q5 Y5 }) z) O- #用sudo就可以; J5 \# h2 V% e
- [aaron@phoenix ~]$ sudo service httpd restart
0 z4 T! U7 `$ x) M$ {! G. E( ^8 D - [sudo] password for aaron:[輸入密碼]! p! G5 M' K9 i+ C: |3 F% J/ M4 W
- Stopping httpd: [ OK ]
" S# P- P6 V8 Y/ C - Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。
U4 p" O" c$ B- r/ P可參考http://kezeodsnx.pixnet.net/blog/post/25810396 |