52AV手機A片王|52AV.ONE

標題: Linux 下 su v.s sudo 指令比較 [打印本頁]

作者: media    時間: 2014-12-21 14:08
標題: Linux 下 su v.s sudo 指令比較
本帖最後由 media 於 2014-12-21 14:12 編輯
8 e+ o: Q$ J" g1 C* e( M5 A0 ^
) x+ n  `- ~: J, F/ s$ g$ k2 @su=switch user ,轉換到root 帳號% m  @$ X; A$ s8 u0 Q9 f2 k0 @( d
sudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:
9 Y1 {* z4 J' H4 G* [) _5 ]2 ]0 l% _
Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。 : u8 ^) i8 E5 B* L4 n
: [, K, T% J& O& s) i
1. 使用su指令
  1. #用su切換使用者
    1 ~: v) d6 N% |" e1 d6 {8 j
  2. [aaron@phoenix ~]$ su#使用su切換為root
    - _: R+ f2 I6 H: X' A7 I2 Y. b6 C
  3. Password:[輸入root密碼]
    " B4 }# b" P& N' d/ R  J( F" m. a6 h

  4. ' A. R7 y+ F( R  R# a; l% I3 `- x
  5. [root@phoenix aaron]# service httpd restart#已切換為root% `* \* [1 A1 j% ]4 c' j
  6. Stopping httpd:                                            [  OK  ]
    : M! {2 r3 K1 n; D1 M: n
  7. Starting httpd:                                            [  OK  ]
    ' E8 y0 |  m3 p! b

  8. 2 S+ P- C! Q; a7 O: n" z6 S* u
  9. [root@phoenix aaron]# exit#切換回aaron! ^* ?/ U4 I5 l& O
  10. % ^0 W2 F6 ~1 B  R4 S4 D
  11. #執行單一指令,不需要切換為root
    : Y5 t& S# y" e2 u
  12. [aaron@phoenix ~]$ su -c "service httpd restart": J3 E2 x/ d0 s$ Q4 l( C+ Y4 L
  13. Password:[輸入root密碼]
    8 |% U4 Z& Q; a2 G* [, X
  14. Stopping httpd:                                            [  OK  ]% l% T( ^& j* ~- \+ v0 Q3 P; q
  15. Starting httpd:                                            [  OK  ]
    0 [# W& W1 |* q' Q9 E; s5 @( u

  16. 2 J- d9 E- M* J! b6 K# w
  17. #執行su與su -的差別(Shell環境是否跟著切換). L' t$ |% \0 {& \: y( c/ n
  18. [aaron@phoenix ~]$ su* Z$ a7 K0 G9 ^3 m/ U3 z
  19. Password:[輸入root密碼]
    , a7 `6 O: Y; E7 a$ c: W
  20. [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數" m" d1 m; W, S+ G, {" ^0 P* p1 w
  21. /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin
    % p+ F# {+ c7 _9 [, {* ?  E
  22. * M6 p! d5 r" r  E) N6 [
  23. [aaron@phoenix ~]$ su -
    ) _# t# G( ^8 h* r
  24. Password:[輸入root密碼]/ W+ |, Z$ R/ \
  25. [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數
    $ y3 C( S! H% t# M! z) z# p$ j
  26. /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼
* e2 r4 d8 U2 h+ i. Y( ]) D
2. 設定sudoer

" k$ c6 \  |5 G) K3 d# W- x
  1. [aaron@phoenix ~]$ su9 K: F/ y( B% l: \  _* i
  2. Password:[輸入root密碼]# X4 F/ j( S" ?* R; Z* |! b* H

  3. # }- M3 t* G4 Q- \: S
  4. [root@phoenix aaron]# vim /etc/sudoers1 Y6 i6 L7 l5 b0 L6 N2 V( o* Q8 Z

  5. ' V' P8 E1 b- W& [; w
  6. ## Allow root to run any commands anywhere
    . m4 U( R; a9 N% s
  7. root    ALL=(ALL)       ALL
    , o9 Y2 l, F- I9 ]; d
  8. ( U1 s- _6 H, n' A& x8 ]- ^
  9. ## Allow users to run any commands anywhere$ p8 B" A. ^4 P: g$ r8 Q5 `
  10. aaron   ALL=(ALL)       ALL#新增這條允許aaron可以執行管理員權限
複製代碼
% h- [" B3 t. r) I! V2 Q
3. 範例
  1. #沒有最高權限,所以就被擋了
    1 M8 m% g) u. L1 T% c* H0 W
  2. [aaron@phoenix ~]$ service httpd restart
    $ {- J1 m; }4 \9 Y% n/ y, t
  3. Stopping httpd:( @  M7 S+ B* }# b9 L5 }7 T
  4. rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied
    9 I% L2 k3 p: ^$ V; D

  5. / W( Q1 M0 W6 k. `. k- V! Q
  6. Starting httpd:
      \0 N$ _8 o! ]  P  A" ]
  7. touch: cannot touch `/var/lock/subsys/httpd': Permission denied* A% m. C" {# o( C4 i
  8. / {9 }0 ?+ i+ j$ u+ @8 R& g8 T7 H
  9. #用sudo就可以
    , k+ j& K, K* {4 u- i4 d/ e7 w
  10. [aaron@phoenix ~]$ sudo service httpd restart8 g6 K! {3 d( C
  11. [sudo] password for aaron:[輸入密碼]  h  [' E; M8 m1 R( D" p: Y7 A
  12. Stopping httpd:                                            [  OK  ]3 L# K8 K' x" u+ M5 T: a' Z, D$ o! n
  13. Starting httpd:                                            [  OK  ]
複製代碼
#su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。1 u2 [; y' X; x# W$ F  x- }3 P! v
可參考http://kezeodsnx.pixnet.net/blog/post/25810396





歡迎光臨 52AV手機A片王|52AV.ONE (https://www.52av.one/) Powered by Discuz! X3.2