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 編輯   C+ A+ U6 ~$ `0 Q8 o
' a* f% }& W( s! R3 \
su=switch user ,轉換到root 帳號
$ F/ V+ O. ?9 f8 m) U& a% c* T4 qsudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:( ^+ g5 N; P) U
7 J: I; D7 b5 E1 M$ k" Z4 ?
Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。
  E" d# ]0 O3 ?! g9 y* E6 q- P" Q0 D6 S; T# ~% ~) p
1. 使用su指令
  1. #用su切換使用者
    6 A; E5 \  B% Q' ]$ q0 h3 l
  2. [aaron@phoenix ~]$ su#使用su切換為root$ T3 }) Z/ g- W3 m. ?+ q# t7 a" i0 O
  3. Password:[輸入root密碼]% n2 A5 S( a  B6 l

  4. 2 @) q& g( d# O; {* h5 v
  5. [root@phoenix aaron]# service httpd restart#已切換為root
    , R: i5 [9 z7 z  z  c. t: l0 [7 w5 J
  6. Stopping httpd:                                            [  OK  ]+ Q/ H) n2 E7 t5 x, }- x
  7. Starting httpd:                                            [  OK  ]! U& Y8 }  r" T
  8. ; r# G  a5 `# j4 `8 Z
  9. [root@phoenix aaron]# exit#切換回aaron
    ) [+ @. C& l2 b) ~

  10. 4 ?/ g& U8 R4 U. w- X, v6 v
  11. #執行單一指令,不需要切換為root$ s% \2 `9 E- e
  12. [aaron@phoenix ~]$ su -c "service httpd restart"
    * k) k' v* y! D5 D
  13. Password:[輸入root密碼]/ w, I1 p9 F+ y, H& c% I+ U* d
  14. Stopping httpd:                                            [  OK  ]( l( e6 C: |. x
  15. Starting httpd:                                            [  OK  ]9 Q& Z; h7 q' w; y+ M# I
  16. ; \$ k6 G- w$ D( ?
  17. #執行su與su -的差別(Shell環境是否跟著切換): t0 T/ g) R8 N
  18. [aaron@phoenix ~]$ su
    3 D4 R! U+ m. X) z& }7 [1 a3 J
  19. Password:[輸入root密碼]
    9 z0 w0 ^  @( p! _/ ?& T) |7 P4 A/ J
  20. [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數5 X9 o9 }& k3 m% C% W+ I
  21. /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin. }6 F: C3 ?% t% [4 T
  22. 7 h  p# O1 U7 j
  23. [aaron@phoenix ~]$ su -
    7 ?0 E5 i$ d2 p" S% z% T
  24. Password:[輸入root密碼]% s) V- H: _: z% H* c/ G
  25. [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數, x2 r# r* S5 [$ k; C
  26. /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼
9 N* Z1 ~* Y$ U7 |
2. 設定sudoer
$ _$ B+ _3 R$ @; x1 e0 ^
  1. [aaron@phoenix ~]$ su
    4 z, u: m/ C; T
  2. Password:[輸入root密碼]
    1 m  a- W4 j( I0 T
  3. * k0 p" i# E. i0 g6 c9 q
  4. [root@phoenix aaron]# vim /etc/sudoers; t5 o  {% W5 ]9 E
  5. 0 M$ b6 p4 X+ K. I$ F8 U: k
  6. ## Allow root to run any commands anywhere% I# q) `# M9 h) U' j8 K8 @$ w! ]8 L
  7. root    ALL=(ALL)       ALL( a+ u: N1 F, l0 u, A8 H5 M

  8. ; p1 x6 W8 i, ]+ u6 u: V
  9. ## Allow users to run any commands anywhere+ V2 s+ Y3 d4 e5 p! y# i" v
  10. aaron   ALL=(ALL)       ALL#新增這條允許aaron可以執行管理員權限
複製代碼
8 j5 |& y5 w3 f# M  g
3. 範例
  1. #沒有最高權限,所以就被擋了
    ; w! N2 m% K  [  `, n7 |  i/ m
  2. [aaron@phoenix ~]$ service httpd restart
    , j- K4 g. g; l$ Q! A
  3. Stopping httpd:
    2 h( C5 U" d+ V, V8 n  w8 _
  4. rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied- l; |$ M# R  \4 R

  5. 1 p6 K' k6 v5 u8 @2 M
  6. Starting httpd:
    8 C& o0 ?5 [5 V! b/ d
  7. touch: cannot touch `/var/lock/subsys/httpd': Permission denied& c" O0 Z& `$ U' d  B
  8. 0 L: y% r) L0 r) @4 c- s* F
  9. #用sudo就可以
    : Q; j- m) a! t2 b
  10. [aaron@phoenix ~]$ sudo service httpd restart- E0 e0 D4 ~* h& q0 g
  11. [sudo] password for aaron:[輸入密碼]1 T, V1 y0 D. `; K0 O) L
  12. Stopping httpd:                                            [  OK  ]) @$ @  l/ g5 w  u' A
  13. Starting httpd:                                            [  OK  ]
複製代碼
#su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。
, d4 y; w6 S- j# E7 v
可參考http://kezeodsnx.pixnet.net/blog/post/25810396





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