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 編輯
- }3 {5 V  u. x" O1 s. Y9 d; H- _' Z3 U% S4 i) L
su=switch user ,轉換到root 帳號
+ Q- j* A# T+ q% D/ s- V. qsudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:
4 h4 G& @0 |0 h% g5 P8 N. q( Z4 f" M$ X1 V( q! {1 E1 \
Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。 * \' M2 b0 d- Y1 o7 U

+ I& L( ]) C# l1. 使用su指令
  1. #用su切換使用者, f! w$ I6 Q6 `7 v6 B/ x: G
  2. [aaron@phoenix ~]$ su#使用su切換為root
    ! m/ Y) |: o4 b6 t( I7 G; o/ t
  3. Password:[輸入root密碼]2 a* ?* j, \* ?; n+ j$ \1 i
  4. - {5 k: o* q9 X
  5. [root@phoenix aaron]# service httpd restart#已切換為root5 N1 J: C! }, B; C
  6. Stopping httpd:                                            [  OK  ]
    9 Z1 i( o5 a7 B( U* K
  7. Starting httpd:                                            [  OK  ]
    ; W0 [3 n2 m) Y( D! g9 s
  8. 2 A& U4 `6 D5 ?& \+ x6 s# t( L
  9. [root@phoenix aaron]# exit#切換回aaron0 S% g2 j' B' q( |9 \' o
  10. 2 u0 x9 u* T  m% N$ I& Z- M
  11. #執行單一指令,不需要切換為root
    2 i3 R: A9 E" k
  12. [aaron@phoenix ~]$ su -c "service httpd restart"
    8 g! `4 M! h, V" e! |2 r3 y5 F
  13. Password:[輸入root密碼]/ n, U1 O% x4 {8 [, t5 B
  14. Stopping httpd:                                            [  OK  ]
    # J' i( W& T: O/ B7 [* k5 q
  15. Starting httpd:                                            [  OK  ]0 a! ^, S8 O8 A: e6 G  Q- W

  16. % W( n8 V# |( e  D0 s3 q! O; I
  17. #執行su與su -的差別(Shell環境是否跟著切換)
    # _0 ~! a( M& K
  18. [aaron@phoenix ~]$ su' {0 H! b) O: z9 c+ ^, q
  19. Password:[輸入root密碼]
    % n" d  n; y2 E% M5 h6 v
  20. [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數
    0 {: D% o* H$ n% ~# P# H
  21. /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin& o/ ^, O7 d. y0 S& X

  22. + J, n! I% G, Y
  23. [aaron@phoenix ~]$ su -
    , K; P& ?1 j! L% T4 V4 }
  24. Password:[輸入root密碼]
    . A0 w8 L7 }) I+ j0 e  w% f
  25. [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數
    ' N/ o9 Z( R& S7 M& R+ ~( T+ b6 v
  26. /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼
. Z6 r# n5 Y- G! E- ?! y) O2 t. G
2. 設定sudoer
. R5 q0 P3 q% X
  1. [aaron@phoenix ~]$ su
      d6 w5 k. t0 ]- e6 d7 R! N0 M, k5 v
  2. Password:[輸入root密碼]
    , Q6 m, |# W9 c# J. w8 u: }7 z( O2 Y

  3. ! n) h0 t' v& j  c/ B6 K6 B
  4. [root@phoenix aaron]# vim /etc/sudoers" ^" K. x* A* k/ Z* x# u0 V
  5. + w* r  h1 Z( s! e
  6. ## Allow root to run any commands anywhere0 t6 m0 U( ?, Z' Z
  7. root    ALL=(ALL)       ALL% w4 E/ S7 z) y' D, y. L
  8. + w7 A/ Q! P, s: Q% z7 t# U5 I
  9. ## Allow users to run any commands anywhere
    6 }  l. x3 E( ~+ U1 _+ f
  10. aaron   ALL=(ALL)       ALL#新增這條允許aaron可以執行管理員權限
複製代碼

0 r' N5 H8 _  _4 Z3. 範例
  1. #沒有最高權限,所以就被擋了
    / a2 w4 S9 r; |" m8 T6 ^4 x4 J
  2. [aaron@phoenix ~]$ service httpd restart  o- Q1 N. `- `$ j4 I5 w
  3. Stopping httpd:
    * _' S% [" l8 ^$ z0 t# I8 w
  4. rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied
    . Q4 R( K" _* M4 i

  5. ' Q, m7 x! A; ]  ?$ {" W
  6. Starting httpd:
    . ]6 P6 j3 f0 d- u* w2 ?; w
  7. touch: cannot touch `/var/lock/subsys/httpd': Permission denied
    - o& Q- E: }8 y7 Y5 S# Y' f! U; _& q
  8. " S  E9 J+ }) `4 ~4 K' b
  9. #用sudo就可以
    " z/ L8 y) z% P: ~6 w' `
  10. [aaron@phoenix ~]$ sudo service httpd restart
    0 x- g' ]  K' B) F% n; o
  11. [sudo] password for aaron:[輸入密碼]5 b7 N) B/ d# Y
  12. Stopping httpd:                                            [  OK  ]; b) Q$ Q! u5 e: l
  13. Starting httpd:                                            [  OK  ]
複製代碼
#su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。
+ {- n7 X0 w( ~* |# p' Z) @
可參考http://kezeodsnx.pixnet.net/blog/post/25810396





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