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 編輯
' M- [- z5 M( c0 B- e, c" t  t) i( y
5 S4 w, {) ?9 R7 U. K' Osu=switch user ,轉換到root 帳號
7 \5 `( E# T  T7 H/ F& k1 M) O8 nsudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:
* j5 r  ^7 E: G& C+ G% J# `4 b, A0 V& |! e' H! N
Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。
& j  \. B. m  X2 l
) ?8 X) S  h; A& ]0 s, O( f1. 使用su指令
  1. #用su切換使用者6 C( ]3 Y. w3 m, S/ X# |$ x
  2. [aaron@phoenix ~]$ su#使用su切換為root4 ?' F3 v4 p1 }5 N. F$ o; K
  3. Password:[輸入root密碼]+ k! Z7 H) d/ C) A3 D' Q- s- U

  4. 9 b! q0 H, L5 ?: m" x- t
  5. [root@phoenix aaron]# service httpd restart#已切換為root
    2 X. _# j9 c& T$ T( Y5 g2 s
  6. Stopping httpd:                                            [  OK  ]$ P: d" D* v7 i4 j# y/ R, m
  7. Starting httpd:                                            [  OK  ]
    & q: X! L0 O4 X1 p  W* z
  8. 3 d3 a7 t( i, V
  9. [root@phoenix aaron]# exit#切換回aaron
    4 @: ?) R# d0 o1 V( r3 e

  10. 5 y, \' v! h: Q3 {4 ~9 b
  11. #執行單一指令,不需要切換為root
    ; v$ W. U3 c2 i* W% A
  12. [aaron@phoenix ~]$ su -c "service httpd restart"
    7 w# y6 c5 U; c8 Z. W
  13. Password:[輸入root密碼]( ?  u5 Z. B0 U: n  h; C+ M* J
  14. Stopping httpd:                                            [  OK  ]3 R2 n% m& Q0 `+ w+ }
  15. Starting httpd:                                            [  OK  ]2 m" E8 ^0 t; t% h& R, M' V

  16. * J8 l( A6 d0 K5 w5 F2 N9 x
  17. #執行su與su -的差別(Shell環境是否跟著切換)* d  p* l; U9 Y: K" F) m5 b' [; t7 a$ s
  18. [aaron@phoenix ~]$ su# K4 K9 ~2 l5 _
  19. Password:[輸入root密碼]
    - t- H) R) _( l# |# o
  20. [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數* v  d; M' _/ z! T+ |4 U
  21. /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin7 A: v5 Y" p2 a9 b- ]! `' S( D
  22. 6 n- g+ @% U! D* Q0 F0 _
  23. [aaron@phoenix ~]$ su -+ e5 f% N6 h$ J/ u
  24. Password:[輸入root密碼]
    & |% R6 T6 m3 F
  25. [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數! D* C4 ]  C3 j0 m0 q! ~/ k
  26. /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼

% K7 M. p7 }  j6 R2. 設定sudoer

, L' @& h" V) Z5 K
  1. [aaron@phoenix ~]$ su
    * Y$ s+ L$ X# c. _2 r- q: v
  2. Password:[輸入root密碼]3 q# W2 c$ x9 p! W4 @( e, W
  3. . l6 g- X' f6 E% L
  4. [root@phoenix aaron]# vim /etc/sudoers
    - R; K# B1 `( q

  5. . e; Y- n- N  O0 G$ r
  6. ## Allow root to run any commands anywhere# L! K! U0 p; e; M, m# b: A
  7. root    ALL=(ALL)       ALL8 h4 G0 f: J! A2 G' @

  8. 5 y+ N0 e" M# e' Q: z
  9. ## Allow users to run any commands anywhere
    6 w0 u$ x) v5 h
  10. aaron   ALL=(ALL)       ALL#新增這條允許aaron可以執行管理員權限
複製代碼

+ B2 l9 i7 ^1 l3. 範例
  1. #沒有最高權限,所以就被擋了
    . B$ r& R' B) n/ C( M  o
  2. [aaron@phoenix ~]$ service httpd restart
    9 }/ f$ Z# U6 C6 n
  3. Stopping httpd:; O; u/ @2 \. s7 B& ^0 ?; O
  4. rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied
    , x! P, e3 D" }$ @, ]0 q- d0 ?
  5. 9 @' n7 f2 ]' Q8 y1 i
  6. Starting httpd:' @3 S. Z: y9 M' ]! r1 Z' M
  7. touch: cannot touch `/var/lock/subsys/httpd': Permission denied4 Z; X, e% D/ F8 f* a; `( `
  8. , `" g: {2 u5 O6 S5 D
  9. #用sudo就可以
    + }, O) {; @  k: A9 H, }4 _# X
  10. [aaron@phoenix ~]$ sudo service httpd restart* p, P. R: l3 D/ B
  11. [sudo] password for aaron:[輸入密碼]
    * }; a, y7 a' M9 E1 T7 ]- I1 X
  12. Stopping httpd:                                            [  OK  ]
    $ ^+ D+ N8 v; Z8 g
  13. Starting httpd:                                            [  OK  ]
複製代碼
#su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。
5 d% s; \5 ?% f. Y0 }) S2 u
可參考http://kezeodsnx.pixnet.net/blog/post/25810396





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