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 編輯
  ~( }; d1 x9 ^* N# X6 p$ _7 b+ v* B' d* s! y. {% S; {
su=switch user ,轉換到root 帳號! \5 m: W6 K! v% h: A
sudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:. K9 z6 i2 ^9 _1 {/ o

( L& `" M/ M0 ]
Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。 + ^, X# V( C, ?5 h

! [+ X0 O) |' j, I, H6 B1. 使用su指令
  1. #用su切換使用者, E, \5 }! Y. W. k
  2. [aaron@phoenix ~]$ su#使用su切換為root1 @, }9 a2 B% P2 ?( E2 @) A. k
  3. Password:[輸入root密碼]% `  q2 N( A( R2 @

  4. $ m0 ~/ J: i7 X5 `
  5. [root@phoenix aaron]# service httpd restart#已切換為root: j& `, N3 \5 ?$ u1 h9 Y
  6. Stopping httpd:                                            [  OK  ]; [3 a7 Q7 J3 K* t" g( A- d' j
  7. Starting httpd:                                            [  OK  ]8 q9 K$ @5 a- e8 `

  8. * r! \! R' H% X  I1 S% r* o4 X
  9. [root@phoenix aaron]# exit#切換回aaron
    6 }! B, n5 m) C* |+ f- a! U
  10. 2 O; P( S2 i& `7 E
  11. #執行單一指令,不需要切換為root+ p5 P/ r) |  N4 R& U
  12. [aaron@phoenix ~]$ su -c "service httpd restart"
    1 D' x& W! J( h& U- l
  13. Password:[輸入root密碼]
    5 t( N; V2 N+ d- C: \: E
  14. Stopping httpd:                                            [  OK  ]
    : N, U% R6 k* N- V# S
  15. Starting httpd:                                            [  OK  ]" `( V. ^. o% F* _5 A2 O/ r* y/ @

  16. ( O& r1 D5 J" U8 C+ [" e4 d1 K' L
  17. #執行su與su -的差別(Shell環境是否跟著切換)3 I3 R; b- |5 R6 y& s" u
  18. [aaron@phoenix ~]$ su
    $ ?; m1 M+ x- }; P) F
  19. Password:[輸入root密碼]; l2 s2 h& t; S+ R  m( z3 {* U
  20. [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數2 _. H3 y0 @1 Z
  21. /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin7 W9 Q6 q3 C7 L: m

  22. # [; a1 k+ Q  ?( W+ Z
  23. [aaron@phoenix ~]$ su -
    ) _6 v. c" [. U& L% o; `/ _
  24. Password:[輸入root密碼]
    * t! Y7 |+ i% q1 `
  25. [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數  |2 ]0 g( y7 b4 @2 X
  26. /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼

5 a$ [+ j" Y$ i) j1 {2 |# a2. 設定sudoer
. N4 p; ~8 Q4 D" s6 S
  1. [aaron@phoenix ~]$ su9 S7 e1 g1 s) v: w
  2. Password:[輸入root密碼]- M/ K0 r" D. D# z# p) w. @) K

  3. % ?) E7 e% u2 u$ P, W* `" g
  4. [root@phoenix aaron]# vim /etc/sudoers
    2 o, U2 T& j( h" `) b

  5. " @3 _" ]# X" V2 d# T* }
  6. ## Allow root to run any commands anywhere" V$ g6 O# P; q# m1 T: F& a
  7. root    ALL=(ALL)       ALL
    5 f  s  p+ o" ^" `0 k% t- ^

  8. ; a  {3 Y( b; Q2 e
  9. ## Allow users to run any commands anywhere8 V7 g& i/ s3 h$ c5 i( k0 l
  10. aaron   ALL=(ALL)       ALL#新增這條允許aaron可以執行管理員權限
複製代碼

5 E. Y) m  f$ D; z3. 範例
  1. #沒有最高權限,所以就被擋了: @( \4 \$ A9 t9 q% v9 k
  2. [aaron@phoenix ~]$ service httpd restart
    - T  T6 O* E! ^9 \: x+ W% p1 ~7 u
  3. Stopping httpd:
    8 F. `- I0 O) Z9 u& a/ X; y1 O
  4. rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied
    & n3 l' G: ~' w1 G8 J0 w# a+ i* K

  5. " z* q9 P7 y, Z2 `' J! \
  6. Starting httpd:7 O4 b) `$ [$ X
  7. touch: cannot touch `/var/lock/subsys/httpd': Permission denied% }& d2 y# {8 \' c! {% I7 X
  8. , k, _" \, ?4 O2 t
  9. #用sudo就可以
    ) m# O( P% W& z6 s+ f/ f
  10. [aaron@phoenix ~]$ sudo service httpd restart! x" M0 s7 D- m$ y( d% J
  11. [sudo] password for aaron:[輸入密碼]
    1 F7 S4 S* n, f
  12. Stopping httpd:                                            [  OK  ]
    . S8 f  }9 s7 R2 |( b2 z
  13. Starting httpd:                                            [  OK  ]
複製代碼
#su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。( F0 r/ a: k0 y
可參考http://kezeodsnx.pixnet.net/blog/post/25810396





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