tid=186& 本帖最後由 media 於 2014-12-21 14:12 編輯
& f, N; F, u. `4 h2 @' Q& c# S) S2 L9 S2 r! p9 F7 X0 c- g
su=switch user ,轉換到root 帳號+ g: ?1 v2 a, P6 s0 R6 X1 B
sudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:
9 V* V: n( s" u, e0 X5 W; i" P1 m
6 g3 _. L$ ~1 y- N/ KLinux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。
- w5 Q4 x0 m) f g) \! s. X; m# K) P
% z2 M' ]5 n9 }) X1. 使用su指令 - #用su切換使用者2 G$ s. F, R4 a. [5 |7 w: L" f" [$ l
- [aaron@phoenix ~]$ su#使用su切換為root! m2 e8 P" E, |! {- \7 `. U
- Password:[輸入root密碼]
! E( ?3 X: p6 ?" ^
% c. n! [! R! Y4 N' ~/ y2 E9 H- [root@phoenix aaron]# service httpd restart#已切換為root
. v5 C; d* X; { - Stopping httpd: [ OK ]0 e" Q% Y1 r& p N- S: r
- Starting httpd: [ OK ]
: O* j2 Y& j6 X) d
% K+ h; |( I7 ~, \5 P9 Y- [root@phoenix aaron]# exit#切換回aaron. h& n+ W6 K, @. d
- 9 u! T& _* g. g
- #執行單一指令,不需要切換為root9 p4 Y2 M1 |; V# P+ B- b
- [aaron@phoenix ~]$ su -c "service httpd restart". w) V5 q* ]) M: T8 N
- Password:[輸入root密碼]5 o+ x$ Z2 A1 N3 N
- Stopping httpd: [ OK ]% |: \5 N& J, `0 r' Z% m7 e
- Starting httpd: [ OK ]
% D9 J7 s3 L8 S
- u3 x& ~1 w- L7 x- #執行su與su -的差別(Shell環境是否跟著切換)1 T' b* K9 K, ?3 |0 j& P
- [aaron@phoenix ~]$ su
5 o5 k( s+ e8 z6 \% N - Password:[輸入root密碼]
0 r/ p: C6 S d- d) Z - [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數
! d- ~: p: G3 i# x$ |% Q5 H - /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin: r. V# G) B! O9 u3 ]; L1 }7 d
: V2 p/ |/ N7 W6 p8 r4 i- [aaron@phoenix ~]$ su -
5 w6 ~& Z& m3 ^4 p* I - Password:[輸入root密碼] }! r: s& G2 U5 N( Y/ x
- [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數
* J3 M, ?) h9 l0 G3 I6 s# n - /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼 1 W/ Y* N% M( i% ?5 ^# A
2. 設定sudoer* [/ C. H5 E6 B, U" ^ f; Z, G
- [aaron@phoenix ~]$ su
$ y% N$ e2 R- n, J - Password:[輸入root密碼]8 f1 U+ Q1 ~9 k$ R6 C
- 7 T& X1 {" M# v8 {
- [root@phoenix aaron]# vim /etc/sudoers
/ [2 }* \! C& B+ d+ ?' I - : j. _: ~& B# y5 @
- ## Allow root to run any commands anywhere6 i' s% V6 ]; n" H# D5 c' M
- root ALL=(ALL) ALL
3 D3 U" @' V( u# U7 a# k - 0 ~- W9 b: J/ s
- ## Allow users to run any commands anywhere# i* }$ I* E; A; i
- aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼
& P4 Q ~- u8 J4 G; _$ R3. 範例- #沒有最高權限,所以就被擋了
$ p* @2 S" T% o+ e6 j - [aaron@phoenix ~]$ service httpd restart
- f/ o- D1 T% w: B- R, F" Q - Stopping httpd:
Q1 p; ~: Q2 d, } - rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied
0 x' }. d/ i& m( ]
% U2 G5 J) v# j* l: w8 b- }7 V- Starting httpd:+ E# l9 F: |$ `/ ^
- touch: cannot touch `/var/lock/subsys/httpd': Permission denied0 b% z7 r! L8 m
- " O( o8 Y+ ?5 P
- #用sudo就可以& i1 p& H: e8 ?9 s# E" A3 G
- [aaron@phoenix ~]$ sudo service httpd restart3 \9 A! h) q4 x2 t- x7 b
- [sudo] password for aaron:[輸入密碼]
2 y1 ~$ P/ f7 s - Stopping httpd: [ OK ]
- U& ^& P, e2 J+ K8 n; w' m ] - Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。' @) k0 s& |( b2 X
可參考http://kezeodsnx.pixnet.net/blog/post/25810396 |