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 編輯 ) I( {7 S) e7 L1 G. d
2 L5 v. l  B% i4 K$ ?+ L( [
su=switch user ,轉換到root 帳號( X: A  j8 }1 F5 T2 a: {# I6 e2 e
sudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:
% m4 x2 Y" ~' K
6 C  {* X# z& D' \
Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。 * ^* i  C. F- A7 D. M: P

% O( ~3 K& M) g( K2 k( U1. 使用su指令
  1. #用su切換使用者! S: w# Q( x8 }6 S, D
  2. [aaron@phoenix ~]$ su#使用su切換為root/ g$ D: W5 u! M3 G# {4 \
  3. Password:[輸入root密碼]
      i, B: x7 y. U4 s( ~/ r
  4. , _3 e4 B& M! ]
  5. [root@phoenix aaron]# service httpd restart#已切換為root
    * B' [- R& J. ?. p# G5 h
  6. Stopping httpd:                                            [  OK  ]
    5 X6 }, q# \( z& K3 M# H) I5 M
  7. Starting httpd:                                            [  OK  ]
    9 n" _- }5 `6 n2 P) _# W
  8. 3 E* U  m) ?$ D4 G/ j% s5 o) A
  9. [root@phoenix aaron]# exit#切換回aaron
    8 p/ D2 x: d8 A1 I
  10. 6 J8 P1 D3 j$ O
  11. #執行單一指令,不需要切換為root  F* _* h' k& }1 v5 ]0 _
  12. [aaron@phoenix ~]$ su -c "service httpd restart"
    / P9 C/ E& D3 H8 @# k" `1 t+ B
  13. Password:[輸入root密碼]
    ! a' g- T$ Z; w& S5 S
  14. Stopping httpd:                                            [  OK  ]/ H. D9 M' |& E5 o, g
  15. Starting httpd:                                            [  OK  ]
    ) v' R; ~) J" e3 t& w

  16. . ^7 s7 W: _$ t" m# R* K& E
  17. #執行su與su -的差別(Shell環境是否跟著切換)7 V. Y+ r+ S! Q" e2 R5 A
  18. [aaron@phoenix ~]$ su0 f( D) T) ~& g
  19. Password:[輸入root密碼]9 ^- a% J3 v: J& G- N$ Q4 E8 ^9 k$ u6 v
  20. [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數8 E& H* ^0 p- v0 w/ Y% S# m- Z# K3 m/ V
  21. /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin6 b5 d6 U, Y, B
  22. % ^1 P) \4 I0 ]. W
  23. [aaron@phoenix ~]$ su -
    - ~$ Q) M6 s4 f7 f- w0 o' ^, ~$ V
  24. Password:[輸入root密碼]( ?2 i' [9 j3 d6 t6 \0 _8 `
  25. [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數8 V& @+ U' O( w) l- g
  26. /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼

, d4 t) s1 x3 l# R2 Z, z2. 設定sudoer

- V3 b$ O# z" \' ?
  1. [aaron@phoenix ~]$ su
    - _4 O* A1 ~$ w/ l' f2 N
  2. Password:[輸入root密碼]- U; e0 P9 ^& F$ \+ y  f
  3. * B4 \2 x1 T/ n! V. a
  4. [root@phoenix aaron]# vim /etc/sudoers3 c6 w  Z% a3 k- f  K8 c* r# r

  5. $ i  |" R. \( Q" G8 |
  6. ## Allow root to run any commands anywhere  J7 f( ^' e; c  m9 n9 [! j
  7. root    ALL=(ALL)       ALL# o& z! W4 ~7 ~9 g. e8 {' S
  8. 4 d/ R- D/ o% f: C& k
  9. ## Allow users to run any commands anywhere
    % s' j( t9 z& M
  10. aaron   ALL=(ALL)       ALL#新增這條允許aaron可以執行管理員權限
複製代碼

5 x: E: f1 X  c3. 範例
  1. #沒有最高權限,所以就被擋了
    * m, g, `1 J8 H, c. R- @( B2 i6 T
  2. [aaron@phoenix ~]$ service httpd restart
    ' ~7 x4 H% B4 R8 I, i: k6 m2 H
  3. Stopping httpd:0 A3 u% w- Q4 a! n2 X, H
  4. rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied
    8 x' ]; G% ^  P0 s% v1 n

  5. & g9 N! R/ Z. X
  6. Starting httpd:
    1 j; e: ?- e+ r# t! U
  7. touch: cannot touch `/var/lock/subsys/httpd': Permission denied
    4 J+ ?+ a  H$ W0 t3 q3 p

  8. 6 o$ B, l0 g5 ]6 Q( k# D
  9. #用sudo就可以" S+ T, J+ e8 B
  10. [aaron@phoenix ~]$ sudo service httpd restart: q% i2 T% b& c9 ]! q* c
  11. [sudo] password for aaron:[輸入密碼]
    1 c% _. i9 k* B$ l# @" A1 K* h
  12. Stopping httpd:                                            [  OK  ]# I1 v+ B9 J3 V4 T
  13. Starting httpd:                                            [  OK  ]
複製代碼
#su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。7 a# g: Y% @4 L) j  w
可參考http://kezeodsnx.pixnet.net/blog/post/25810396





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