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 編輯 7 t  E. a8 B& G7 {
, H' ]4 E. c- Z2 R/ [) M0 k
su=switch user ,轉換到root 帳號, G) R0 ?4 h& V5 E4 b" P! [, j
sudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:
: c) r8 {  w" D% E7 D
- l; Q) n" ?& s9 q# k! p
Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。 2 d4 Q; b2 k; E. I/ J* a) z. `

" `; s4 j; a* d- h3 Z% X& L1. 使用su指令
  1. #用su切換使用者
    ' u5 Z( i6 V* a
  2. [aaron@phoenix ~]$ su#使用su切換為root! U' w8 ~. ~6 K8 d; |& j6 f
  3. Password:[輸入root密碼]
    ) X5 D- [% x/ S: n

  4. , U; E2 H$ P" c# ?
  5. [root@phoenix aaron]# service httpd restart#已切換為root
      {& Y# o0 _1 {8 B' r/ [9 Q
  6. Stopping httpd:                                            [  OK  ]) s! T4 w; Q2 @$ z& p
  7. Starting httpd:                                            [  OK  ]
    5 I9 M0 o2 h3 }$ P4 _+ f9 k$ l# V
  8. " r1 V+ [  s3 D4 K! a8 @
  9. [root@phoenix aaron]# exit#切換回aaron
    0 ~, E* m! O8 n

  10. 6 N7 R: L; n1 I! t
  11. #執行單一指令,不需要切換為root
    / R7 L( e- |  J: H% c& p
  12. [aaron@phoenix ~]$ su -c "service httpd restart"4 _- X9 l6 v1 o. M) `
  13. Password:[輸入root密碼]" n& E9 ^) @2 z/ y- q% Y
  14. Stopping httpd:                                            [  OK  ]
    / Z3 q: I: V3 M- R! c3 G: X
  15. Starting httpd:                                            [  OK  ], k4 I+ }7 A3 G9 j2 ~1 h
  16. 5 S3 x4 `! j* X9 {# {
  17. #執行su與su -的差別(Shell環境是否跟著切換)
    - s. s; e% a) y1 ]. J& X% Y
  18. [aaron@phoenix ~]$ su; ?5 L: X  V0 [; M' C* J! [4 K
  19. Password:[輸入root密碼]$ B5 B9 w3 _' m. u
  20. [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數! W: W# O( X- P2 ?/ L
  21. /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin
    ' _/ Q- O+ z/ ^3 V4 Z( ?
  22. # A2 O; \; G+ P% e
  23. [aaron@phoenix ~]$ su -
    1 p5 D# d1 C& t; \* R
  24. Password:[輸入root密碼]2 p1 `: n' W6 ?. g& Z' J* D
  25. [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數
    , i' `5 U$ A: K
  26. /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼

" e: T/ H! @* P# |! X6 E/ G9 ^2. 設定sudoer

  u4 C3 u+ j/ C) ]9 B- L, m
  1. [aaron@phoenix ~]$ su) p# K3 r; C8 O4 }
  2. Password:[輸入root密碼]
    7 e) \* A; [% H' S) v2 G

  3. 4 t- N/ n, }- C) Q1 l
  4. [root@phoenix aaron]# vim /etc/sudoers
    # N0 ?! z" w  t  l$ F; v: R# t# B

  5. " \3 b# g% U) d3 K+ {0 e& J' E# [
  6. ## Allow root to run any commands anywhere5 ?( T& {6 p. _* U; c# y! C" [
  7. root    ALL=(ALL)       ALL
    9 }  ^6 A; S- a
  8. ) ~& h% N4 c; c, j+ N4 z9 \0 ^
  9. ## Allow users to run any commands anywhere
    8 M* |; o0 F+ U9 O& W' A* P
  10. aaron   ALL=(ALL)       ALL#新增這條允許aaron可以執行管理員權限
複製代碼

8 q/ n7 X5 I) t$ E; w, t3. 範例
  1. #沒有最高權限,所以就被擋了
    , j% ?1 u7 Y& j: n& ?  A. V8 T
  2. [aaron@phoenix ~]$ service httpd restart: g  N' K( T1 N# v+ ^8 R
  3. Stopping httpd:/ e" t# V& }" ^1 n, Y  W
  4. rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied( s! V5 ~$ ]+ t
  5. % g" D5 s% r1 l# o+ i
  6. Starting httpd:$ G+ I% c& p3 C) [* q' h' Q
  7. touch: cannot touch `/var/lock/subsys/httpd': Permission denied% y1 g' f4 _; j( O3 Y
  8. ' F, m- q" C7 t/ E
  9. #用sudo就可以
    ( I* o% _: r3 e& V- o
  10. [aaron@phoenix ~]$ sudo service httpd restart
    4 F% M( L# U/ ~/ R/ S7 K
  11. [sudo] password for aaron:[輸入密碼]5 C% F6 p/ r7 s% ~+ s
  12. Stopping httpd:                                            [  OK  ]
    9 |+ I. Y3 Z9 e5 ?% f8 m
  13. Starting httpd:                                            [  OK  ]
複製代碼
#su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。2 V1 \+ Q) y0 ^/ d4 B( O
可參考http://kezeodsnx.pixnet.net/blog/post/25810396





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