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 編輯
" g7 j  j, l/ y1 U5 u3 ?$ U% g3 O) j; M3 W; V. X* R3 V
su=switch user ,轉換到root 帳號
. S! ?7 y1 b, L3 csudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:
" e5 N5 `$ D( Q# d; ^2 d: P/ K! q6 N$ m7 M& z5 [/ t3 K
Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。
1 g  ]/ ^9 p1 M8 D* Y" ^* X
6 t4 k' c" Q2 K5 S8 w8 K6 T& z1. 使用su指令
  1. #用su切換使用者$ K6 W9 A4 ?/ }/ R
  2. [aaron@phoenix ~]$ su#使用su切換為root
    " F2 @  q: C/ a
  3. Password:[輸入root密碼]
    % _* ?6 _- u2 q9 g. e/ @

  4. . d( X4 L% \$ D8 k  P
  5. [root@phoenix aaron]# service httpd restart#已切換為root4 r9 Z7 d& `9 w. v% g
  6. Stopping httpd:                                            [  OK  ]8 z3 O, `1 ?7 e5 F/ Z
  7. Starting httpd:                                            [  OK  ]
    0 ]$ b. h* I5 K7 l) |+ \/ M

  8. 4 U" s) p3 U! j+ S8 L! U! L- T
  9. [root@phoenix aaron]# exit#切換回aaron( `. P, P) x* e7 y# ?6 _7 G" J- A" ]
  10. 3 e4 ^% z2 z. |7 V
  11. #執行單一指令,不需要切換為root, w  B9 Y0 K9 e8 {" s
  12. [aaron@phoenix ~]$ su -c "service httpd restart"
    : [7 C) _( |5 i6 j. k7 _
  13. Password:[輸入root密碼]$ C0 ^3 f  Y6 S  G9 S# S' g% W2 o
  14. Stopping httpd:                                            [  OK  ]; s( t3 {$ I) _9 L
  15. Starting httpd:                                            [  OK  ]
    ; ^# v. S3 U: ^- H  Y; Y; R
  16. ( F, E; N5 ~8 n# k) P* u
  17. #執行su與su -的差別(Shell環境是否跟著切換)3 R  g9 B9 d! [0 L& z
  18. [aaron@phoenix ~]$ su
    1 Z" ~6 a; T7 Q1 O4 Y8 `" J- x
  19. Password:[輸入root密碼]
    5 p- d6 b3 i$ m' x# }
  20. [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數
    # L5 ]1 Q# a2 g2 R
  21. /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin
    8 x3 q. r+ N! v  u

  22. " u% z$ I, D0 D- W4 ?$ T
  23. [aaron@phoenix ~]$ su -
    , |& ^7 D/ D0 {7 G# k4 N
  24. Password:[輸入root密碼]
    ' I& c2 h, K3 ~: Q5 ?! g/ |
  25. [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數
    ; g+ \, h5 x+ a
  26. /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼

' C5 i' `0 R, T2. 設定sudoer
& f" Y+ J% R+ ?0 _, Q
  1. [aaron@phoenix ~]$ su( {) Q8 V" e/ ~' _3 L1 X7 X
  2. Password:[輸入root密碼]
    - R4 M) }1 U. x( Z
  3. : j9 ^/ ^# a* v& @+ f: [- |5 O
  4. [root@phoenix aaron]# vim /etc/sudoers$ W6 ~6 {3 l- _

  5. 0 U' @8 e" X9 P6 }( G
  6. ## Allow root to run any commands anywhere
    & e: {+ v# X; d; L% \$ B3 n
  7. root    ALL=(ALL)       ALL2 V3 O8 e* g9 c8 m
  8. " G! L0 |  t# W0 @9 |( P
  9. ## Allow users to run any commands anywhere
    % c1 W8 O1 a1 f8 @& b
  10. aaron   ALL=(ALL)       ALL#新增這條允許aaron可以執行管理員權限
複製代碼
6 N& n$ S9 z% Y  P3 B6 Z
3. 範例
  1. #沒有最高權限,所以就被擋了
    # `' z4 t! D* M$ o8 B
  2. [aaron@phoenix ~]$ service httpd restart
    6 N) l% s! \  b( q. h; o
  3. Stopping httpd:6 M' _3 X7 D* i7 l" y. p: h
  4. rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied. A6 G  Z+ G- d; B9 t
  5. + z; t7 n1 H* p$ |& y9 V' Y
  6. Starting httpd:
    : z9 \% U, S" C$ i. B' f  ]
  7. touch: cannot touch `/var/lock/subsys/httpd': Permission denied
    , |* x9 K2 I. v  n' T
  8. & ^% T% j  a% t  @4 K! K
  9. #用sudo就可以
    ! u; q# J$ @  M2 v/ H1 ]
  10. [aaron@phoenix ~]$ sudo service httpd restart( l+ L# P7 R1 X+ G0 v# B
  11. [sudo] password for aaron:[輸入密碼], M( f9 E* X4 w8 x! T8 c( G0 c7 L
  12. Stopping httpd:                                            [  OK  ]
    6 b. [* U4 |/ W# a
  13. Starting httpd:                                            [  OK  ]
複製代碼
#su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。5 x3 V0 T7 V6 m, a
可參考http://kezeodsnx.pixnet.net/blog/post/25810396





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