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 編輯
" Y( {( ~2 t% h3 e
- p( {4 I6 |  N$ dsu=switch user ,轉換到root 帳號
# [* ]9 B' A* n+ O3 S+ L5 v* Osudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:
5 t) k2 O4 z" u' D6 Q7 n5 _8 h
7 `: a7 _( }9 m8 X
Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。
# M' {& B/ E' O3 Q7 _7 _: g- i% \. n9 p
1. 使用su指令
  1. #用su切換使用者
    2 U$ [) [* \# K7 G, F/ ^
  2. [aaron@phoenix ~]$ su#使用su切換為root4 `* F. B6 w! [3 `3 L
  3. Password:[輸入root密碼]
    9 q  M9 U; P1 n1 h) a6 D- t) |
  4. 8 D( \+ J' M" Z4 Y9 O, }
  5. [root@phoenix aaron]# service httpd restart#已切換為root: D" X* ^$ \, Q4 u; Y+ @3 ?+ w( ]- f
  6. Stopping httpd:                                            [  OK  ]
    2 o7 z5 |9 j) t  N+ F6 m
  7. Starting httpd:                                            [  OK  ], K' p' s- F* I* Q& ?5 r

  8. : ], G: v. N4 ~# {' C7 c4 r: I5 k
  9. [root@phoenix aaron]# exit#切換回aaron
    ! K) h& p4 S5 P2 y( X& W: K  \
  10. / @, P% u% w  p8 U( Y( B) O
  11. #執行單一指令,不需要切換為root
    # f* s8 \# B) ]6 A# U2 @* w
  12. [aaron@phoenix ~]$ su -c "service httpd restart"
    0 i/ R7 I# S% r2 E* P
  13. Password:[輸入root密碼]
    ' C. x1 {0 ?6 C, A4 A% V
  14. Stopping httpd:                                            [  OK  ]! ]- p- u- z% \2 \5 |
  15. Starting httpd:                                            [  OK  ]
    / A7 L% b& g  w( ?7 i5 B: f
  16. * C  O, s6 l- m' u
  17. #執行su與su -的差別(Shell環境是否跟著切換)0 Y; B3 g. [. U1 t
  18. [aaron@phoenix ~]$ su8 b, Q% G# w# U
  19. Password:[輸入root密碼]
    6 T4 ]# g8 t# E
  20. [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數
    & H, I0 |1 f  |& C, F% j
  21. /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin# Z5 @$ s, \8 w- f$ K& m2 n3 l
  22. . r2 Z; h/ T8 n8 q0 F% M6 ]2 C
  23. [aaron@phoenix ~]$ su -
    $ i, k- ~5 B. N2 f' Z8 y. o/ m
  24. Password:[輸入root密碼]
    " }5 \, |1 e" u, i9 d
  25. [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數0 N! Z" M+ E0 A4 _: r$ h
  26. /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼

% X  S3 m; N, D1 g* }2. 設定sudoer

$ Q- e$ v6 j* _2 G& W" H+ ^8 B' s1 i
  1. [aaron@phoenix ~]$ su' a$ F# M, v) ~! Q  M
  2. Password:[輸入root密碼]
    6 m% L  d* b1 g
  3. , P" m( q# S) N0 `/ ~$ c; M
  4. [root@phoenix aaron]# vim /etc/sudoers# J! _& A4 _/ S# p, w5 w

  5. 0 Q! t8 ^. a% v( A
  6. ## Allow root to run any commands anywhere4 N5 S4 y* D- D6 t
  7. root    ALL=(ALL)       ALL  A: n8 s& @7 F4 d9 M1 P7 V
  8. # i  p  {" S3 P( `. h! ?2 [
  9. ## Allow users to run any commands anywhere
    ' J# w' j/ C$ G% Q3 _
  10. aaron   ALL=(ALL)       ALL#新增這條允許aaron可以執行管理員權限
複製代碼
" y2 `& B, v# N  c; L) i+ z
3. 範例
  1. #沒有最高權限,所以就被擋了$ b, P7 M7 Z6 h3 ^, G6 l; b: O
  2. [aaron@phoenix ~]$ service httpd restart
    % i1 u3 f& \0 P2 `7 K; \; W
  3. Stopping httpd:
    ; R  u5 ?" y3 m& W% r4 w/ w
  4. rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied
    ! Q1 `; W' p& F, |" p% @3 w+ z

  5. # a9 h3 J- U2 P8 z1 Y- D' ]
  6. Starting httpd:
    , T6 H: X+ @8 N  p. W6 E
  7. touch: cannot touch `/var/lock/subsys/httpd': Permission denied0 e$ b0 }) j. H" M+ |
  8. 5 V$ J  \( F) F( ]' M" }) _
  9. #用sudo就可以! c- w4 K! [) n  j" f) `
  10. [aaron@phoenix ~]$ sudo service httpd restart- m0 |- p3 x0 V% o% v- g- F: I% U" m
  11. [sudo] password for aaron:[輸入密碼]
    % v: N. h. U$ K  i# [$ w
  12. Stopping httpd:                                            [  OK  ]* y0 M9 Q7 J7 M" j# ~* ]& p1 K: J
  13. Starting httpd:                                            [  OK  ]
複製代碼
#su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。
! b% r% b4 R% ~& L& m* c
可參考http://kezeodsnx.pixnet.net/blog/post/25810396





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