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 編輯
3 M: w$ `' ?# T& H1 m) L- \
5 U# c# o. m- G4 dsu=switch user ,轉換到root 帳號
: e8 T8 \/ ?' Ssudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:) w8 j, C7 }# ?' y$ @9 e6 ]
6 Q5 U" {2 \; e5 Z0 v1 u
Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。 ; Z: H  D3 w7 h  b
) J3 G) q' F* x/ }- }* v* q& f
1. 使用su指令
  1. #用su切換使用者, x2 b0 h* g/ ~6 k
  2. [aaron@phoenix ~]$ su#使用su切換為root
    ! z: V7 m4 b; @7 [, ~; U
  3. Password:[輸入root密碼]
    " f5 X& v& d# d# t' ^2 V1 N0 ^, H

  4. 5 m. g& c1 `; ]0 d* p' |' C( z6 q6 j
  5. [root@phoenix aaron]# service httpd restart#已切換為root
    % L1 P& a$ E- R
  6. Stopping httpd:                                            [  OK  ]# X% h/ ?. s/ S0 w( b7 g
  7. Starting httpd:                                            [  OK  ]' t! x% r& t% ]- O4 h
  8. + f4 G! R5 z7 E; Z9 d* L
  9. [root@phoenix aaron]# exit#切換回aaron
    , c# O. c- Z/ \) G& C1 Z. a
  10. 4 C. g  p. R8 N
  11. #執行單一指令,不需要切換為root+ ?1 h% T# n/ W) [1 b& R
  12. [aaron@phoenix ~]$ su -c "service httpd restart"  A5 v5 d1 V/ D
  13. Password:[輸入root密碼]
    3 J3 ^/ I5 w$ R  Y2 u- ~+ ?1 n- ~
  14. Stopping httpd:                                            [  OK  ]' h4 `6 W& W' G$ d' ]
  15. Starting httpd:                                            [  OK  ]
    7 m) k2 O: _+ u3 y% I! ]1 J
  16. 9 d* X$ ^6 I' A& J+ Q, S
  17. #執行su與su -的差別(Shell環境是否跟著切換)0 g/ }0 ~! Z! J. w$ ^, H) }5 u
  18. [aaron@phoenix ~]$ su
    ' k) ]9 l2 W' z6 R5 ~0 p
  19. Password:[輸入root密碼]9 P7 o& [  ]3 \3 u- w2 @
  20. [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數
    ! b! r: ]/ ^# [7 k/ D; M, z1 |8 [
  21. /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin
    - {9 i$ V; r# ~) W2 f  g) `. B6 g
  22. 4 a! Z5 ?8 b5 l9 ]4 w8 d" F
  23. [aaron@phoenix ~]$ su -
    ! U' l, r7 O# @! f, R% p; P
  24. Password:[輸入root密碼]
    : E% K# i% y" Z
  25. [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數# x" S& i+ D9 f) N' H
  26. /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼

: X3 R4 Q* c( X0 `9 @2 W2. 設定sudoer
! b, M5 m" m7 X, S' _8 C, @1 u
  1. [aaron@phoenix ~]$ su
    ( m; T& O4 C$ f3 i+ O9 E. O7 v) A
  2. Password:[輸入root密碼]# s0 @* q% Z& x. H: u
  3. 3 i  l: @) O0 S! ]- ]4 |% g
  4. [root@phoenix aaron]# vim /etc/sudoers% }; Z0 W( ?$ {, T
  5. / G9 h, x- Y$ ?2 E( S( x1 X; d* i
  6. ## Allow root to run any commands anywhere( Y% h) W" k8 `0 N) F7 A
  7. root    ALL=(ALL)       ALL
    2 F  K% h: Q! q. ?/ S

  8. ) v  _2 ~2 l- u* R7 j" \, v
  9. ## Allow users to run any commands anywhere
    , m& N1 j: l5 M, ^5 V% H. C$ ~* [% |3 V
  10. aaron   ALL=(ALL)       ALL#新增這條允許aaron可以執行管理員權限
複製代碼
- ~. O3 o2 X( \8 a8 X: i
3. 範例
  1. #沒有最高權限,所以就被擋了4 ~0 c: b% i- @; M9 X
  2. [aaron@phoenix ~]$ service httpd restart
    $ q3 H0 k) @& C2 w- I, N
  3. Stopping httpd:9 o2 h- e/ T  [/ r. b8 R* P5 I
  4. rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied0 B  \/ V, l& `" D8 L/ h
  5. * J9 s/ q+ \9 |$ y/ L( P
  6. Starting httpd:. V3 E5 N  G0 R4 R% O
  7. touch: cannot touch `/var/lock/subsys/httpd': Permission denied, D) p& K& }, b
  8. ; z# n- ]9 D, A( E6 F6 P
  9. #用sudo就可以+ R1 c- `# U' d% w& W$ k0 ^+ Z9 m: H
  10. [aaron@phoenix ~]$ sudo service httpd restart
    . |, g9 ]7 a/ L" H* A$ z* F5 [
  11. [sudo] password for aaron:[輸入密碼]6 F- |$ u, C# o2 K# a8 p& b6 s( c2 a
  12. Stopping httpd:                                            [  OK  ]
    5 V$ C5 D1 S8 }
  13. Starting httpd:                                            [  OK  ]
複製代碼
#su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。
8 D) W- u2 z  J$ C, N. l
可參考http://kezeodsnx.pixnet.net/blog/post/25810396





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