本帖最後由 media 於 2014-12-21 14:12 編輯
3 S# o- m: Q( v/ y6 J0 O9 C5 z- D9 @* B6 |6 Z7 v
su=switch user ,轉換到root 帳號! E4 K% h( _- s2 p( P; }8 _4 F" }
sudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:; i% O @! Z3 {/ `0 E% H$ ?
' _, i( B) Q6 ~. Z6 nLinux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。
^" M5 |: p7 v' c6 F# C3 j6 }3 F. b' |$ d; z8 c8 ?) q6 X' E. o7 d, X
1. 使用su指令 - #用su切換使用者! o W5 T3 U. h/ P4 i0 W( l
- [aaron@phoenix ~]$ su#使用su切換為root
. \6 ^( I. H$ l+ N; K) l - Password:[輸入root密碼]
3 D1 H* m) k x) Y, b+ d/ K8 a - 4 j6 w; M! j: m0 Z. \' D
- [root@phoenix aaron]# service httpd restart#已切換為root. {7 ~( k4 d4 n1 {$ U
- Stopping httpd: [ OK ]5 a/ y0 H! d8 Q3 H# W) _
- Starting httpd: [ OK ]. d8 @3 g" o+ g2 ~2 Z7 ^
- . h& ?$ o' y- B6 R$ O3 H! f9 ^2 V
- [root@phoenix aaron]# exit#切換回aaron
5 d& [1 Q" t: x; _" Q w7 g6 e5 n - 9 n8 _& I" E- [; ^) T: w3 L
- #執行單一指令,不需要切換為root9 E) J3 W2 p9 Z+ U+ X; W2 } ]+ ~ Y
- [aaron@phoenix ~]$ su -c "service httpd restart"
. }+ e/ H( s; a7 U# `& s - Password:[輸入root密碼]3 r. @1 ?7 \0 S' S% Q8 f' ^
- Stopping httpd: [ OK ]
I2 h( A& I- }& d8 Z% U - Starting httpd: [ OK ]
2 V$ |4 |1 n( e( X9 z* E
( Q+ i# K& l, N) Y" |. w# U4 \6 J- #執行su與su -的差別(Shell環境是否跟著切換)! ]* S* [3 `+ v9 J5 W L
- [aaron@phoenix ~]$ su
. G3 G, @. F- a( S3 \% y' { - Password:[輸入root密碼]
7 T7 s8 G, z* F2 c - [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數
$ x; g: E+ ?$ W n5 ~. V c5 N - /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin# C1 u. H; q4 u6 B* I4 _ o% L
" t2 B- u: o: t7 T- V* _- [aaron@phoenix ~]$ su -
% k7 E0 d, D0 S0 P - Password:[輸入root密碼]( s8 @6 G# T E# Z9 k/ k
- [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數
! { Q4 |4 q' x( Q - /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼
) H0 A+ ?0 ^2 k1 \8 F7 f1 O5 F$ G9 T+ J2. 設定sudoer( o8 c. s6 ?1 n- o
- [aaron@phoenix ~]$ su* w% y6 k' o8 H* |- h& Z- \2 \
- Password:[輸入root密碼]
- t: z P% I! J4 t3 y S - # x0 _ P. p2 ~6 ]# o7 {
- [root@phoenix aaron]# vim /etc/sudoers
7 N4 d+ Y4 L7 a0 G5 ~4 Y; b, U - # I2 z5 x W9 n# a6 \
- ## Allow root to run any commands anywhere2 K: ^8 K& U3 l4 o# h X6 \& Q
- root ALL=(ALL) ALL
; t# S9 @- a- D* f- h - + b4 g+ M/ ?% ]& x {1 B6 ^2 ^
- ## Allow users to run any commands anywhere
2 ~- D" U4 D% P6 k1 T& m - aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼 + Z% R. `, N H" J! x+ @1 ]
3. 範例- #沒有最高權限,所以就被擋了" | P8 X( e, _& B' J5 n% u& c
- [aaron@phoenix ~]$ service httpd restart, j) {3 _. d& e
- Stopping httpd:
6 a- E8 ^# w) `; d& u% ? - rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied
3 v$ p8 u/ j, e8 x - 2 q0 ~& {, \5 a( s5 G; q
- Starting httpd:2 i2 _/ V: o3 M+ m6 p
- touch: cannot touch `/var/lock/subsys/httpd': Permission denied( c; R5 } R0 p! z: h# ~. j6 {
- $ B' X! P% {' v, J5 _
- #用sudo就可以: t) f1 o! Y/ {# u7 p
- [aaron@phoenix ~]$ sudo service httpd restart7 j; a0 p( p; \ m/ U7 I7 c
- [sudo] password for aaron:[輸入密碼]
' ] w% x7 K3 e# m% s/ K$ _ - Stopping httpd: [ OK ]
6 k/ X4 |# T' Q4 t - Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。
2 x1 u; [" Z" b5 W. `4 C) ^( Y可參考http://kezeodsnx.pixnet.net/blog/post/25810396 |