tid=186& 本帖最後由 media 於 2014-12-21 14:12 編輯
( E1 V! g, B/ l2 o. o. r/ @2 R) M7 \; ^+ E5 K2 _) e
su=switch user ,轉換到root 帳號 n& Z% R4 }$ T& r( k- T% ]
sudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:
: G- E/ b3 X, {! M8 N
' V; K( d$ `9 B7 M' r7 CLinux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。 5 Y6 [7 i. \4 _7 f
}4 B7 ~7 E3 L/ M, _7 C. d1. 使用su指令 - #用su切換使用者) b% ~" O/ q) [2 ]5 M
- [aaron@phoenix ~]$ su#使用su切換為root9 Y( V' Z& ^7 z
- Password:[輸入root密碼]: R \, \2 _- B9 W! n
- % q% H" X6 K8 T5 ~4 x! ^1 s
- [root@phoenix aaron]# service httpd restart#已切換為root
" _6 |! Y- a( U - Stopping httpd: [ OK ]
* i+ R& I9 P7 t, u* [& P& N - Starting httpd: [ OK ]; u: N4 J5 Q5 k
- 6 N# D8 @$ o. r3 i
- [root@phoenix aaron]# exit#切換回aaron2 C) } A. u: N6 U# w8 c7 I
- $ j; L: i; e! ?
- #執行單一指令,不需要切換為root
/ m& p3 ^1 [! X$ [8 q - [aaron@phoenix ~]$ su -c "service httpd restart"4 z% U0 e$ J$ y5 `, Q& M' i
- Password:[輸入root密碼]' g' ]) S f$ B: i* Q; ]
- Stopping httpd: [ OK ]- J* V6 U/ x" @$ ~
- Starting httpd: [ OK ]
4 J0 q. B) W5 ~+ U3 A% A - 6 b0 i; @2 r" Y! G* y, C
- #執行su與su -的差別(Shell環境是否跟著切換)
l( S0 [, n5 b5 I4 i! w - [aaron@phoenix ~]$ su
1 @# K8 I. {% Q - Password:[輸入root密碼]
" G$ G5 ]" \- ?- J7 A+ D4 Z - [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數
( ^+ _+ A% I/ b$ c* `" I - /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin
: x- G- k+ H5 L/ x- s# i) S - - t* s4 u3 I' N9 h: b, ~
- [aaron@phoenix ~]$ su -
/ B' ~& s7 ] |0 t* z( j - Password:[輸入root密碼]; {, p* _/ ]$ n. M0 f0 I$ y
- [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數
: {6 ?0 d( g$ | - /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼
; g1 b( C8 d9 E. d' \$ R2. 設定sudoer
! J" ~$ g# w* b: T# A
- [aaron@phoenix ~]$ su8 V8 N. z6 I$ \
- Password:[輸入root密碼]/ @- z, ~$ e7 U+ Z: ?% Z
- 1 l6 a" H% l7 i! B* F+ W. L& u
- [root@phoenix aaron]# vim /etc/sudoers( U) G% y$ }! ^
$ w# Q+ J( k! m. m" [6 t; ], V6 T- ## Allow root to run any commands anywhere' I/ g+ ~2 ^ ]; k. m, J, r
- root ALL=(ALL) ALL- h+ Q: ~" h! M1 K- |+ a0 k2 u
- * t. B& X" Y0 M) U
- ## Allow users to run any commands anywhere5 u# k6 |% Z/ i9 o" k% d
- aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼 5 s9 Z5 X! s% q/ D" \0 P
3. 範例- #沒有最高權限,所以就被擋了
/ e0 p7 u4 R5 A0 ?* ~3 M - [aaron@phoenix ~]$ service httpd restart7 m& U/ C; c S3 q. [
- Stopping httpd:# x, x7 L. m% U' z: y' a! `
- rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied
: o, H3 T3 _+ V% ]9 |
T" g7 V1 a: p- Starting httpd:
9 ~5 R, ^* R2 X4 O9 R - touch: cannot touch `/var/lock/subsys/httpd': Permission denied
* J9 c9 r9 u. t6 ]# K0 H5 K- y# o
( \5 ~2 s+ C8 |* l, k- #用sudo就可以9 y2 c' j! |/ H5 N! B/ g
- [aaron@phoenix ~]$ sudo service httpd restart
+ f" Q* t9 t. Z4 ?: E4 X6 ? - [sudo] password for aaron:[輸入密碼]9 V' {: m k, Q6 H6 }4 Y- c
- Stopping httpd: [ OK ]' G: s0 e* y6 D/ o
- Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。
5 M$ ]. C9 L2 m/ h/ L可參考http://kezeodsnx.pixnet.net/blog/post/25810396 |