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 編輯 2 U  z- [( k' w6 M. `5 i
- u( S. o/ i% v
su=switch user ,轉換到root 帳號
" r: b' s) b/ p2 I! v: Isudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:
& F; e- E; f0 B- m7 V4 j
( z: r4 t- S( U
Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。 ; p2 ?! M1 m8 G, S8 n' V1 K
! H. }8 L0 Q8 E/ L( @) t% u
1. 使用su指令
  1. #用su切換使用者
    ; Q7 a* l' P' Y/ e
  2. [aaron@phoenix ~]$ su#使用su切換為root6 x6 [( I/ x. e5 V2 F8 l
  3. Password:[輸入root密碼]
    5 Q5 n6 M8 b) |  A: y. F0 R
  4. 1 @- [3 {; {$ J% |$ \9 F: u- \
  5. [root@phoenix aaron]# service httpd restart#已切換為root) P# r( ~8 }# ?5 b5 s. G/ D  F
  6. Stopping httpd:                                            [  OK  ]
    + L/ ]; Y- ^: u0 [
  7. Starting httpd:                                            [  OK  ]$ [) F# q" S8 t% w' c

  8. , Y3 Q: B. M% o6 Q0 f5 \
  9. [root@phoenix aaron]# exit#切換回aaron. P6 [2 H3 \* F7 v2 ^- r8 t0 i) K
  10.   b( w3 M/ c: ^7 V8 A
  11. #執行單一指令,不需要切換為root1 r6 |+ C9 ^" P% d3 P$ B) i$ V
  12. [aaron@phoenix ~]$ su -c "service httpd restart"
    . y5 W9 W4 `- h1 E
  13. Password:[輸入root密碼]6 C7 k- A) B$ T1 B/ s" |
  14. Stopping httpd:                                            [  OK  ]
    " K; \0 j) H' ^
  15. Starting httpd:                                            [  OK  ]+ s$ F2 _. E0 m7 \, G3 S5 A
  16. , p2 C6 t% X# J0 x# k
  17. #執行su與su -的差別(Shell環境是否跟著切換)
    ) `4 ^& H4 c! ~, T8 a
  18. [aaron@phoenix ~]$ su( Z- B% h7 F& S0 J! r
  19. Password:[輸入root密碼]
    ) v/ w0 Y( y+ E! X3 a9 |* x
  20. [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數9 ]0 M1 l7 G0 ]( a& g6 Q. P# E
  21. /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin2 }$ B& O* S4 n- h; w2 T0 Y: ]: f
  22. . h$ m- ?7 {  i) e& h* |
  23. [aaron@phoenix ~]$ su -
    ) i; c2 ~+ Z! s: `
  24. Password:[輸入root密碼]+ N  _7 g# b. t& u0 {4 q5 [7 k  x
  25. [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數
    " S1 N+ Z% y* S$ h# M9 q9 e& i7 Q# O
  26. /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼
3 g* j: ?2 L4 K% V; \! k
2. 設定sudoer
! o. w; W- n; l/ @
  1. [aaron@phoenix ~]$ su, Y9 ^# p! {. ~6 ^3 n" O1 A& D8 }
  2. Password:[輸入root密碼]$ Y( r( J' c! A. t& K

  3. # G, M/ g/ u# W" \3 ~! `/ i
  4. [root@phoenix aaron]# vim /etc/sudoers
    & \/ K6 U+ t8 @9 t5 q! O. `

  5. 2 ^* N  y9 r/ y+ M+ Q: K  U1 K
  6. ## Allow root to run any commands anywhere
    9 ]+ Q% W' y0 \" o0 L
  7. root    ALL=(ALL)       ALL
    6 Z% h8 l+ w  f

  8. * u; I8 r8 V' K
  9. ## Allow users to run any commands anywhere
    $ K) [1 _  J. Q9 `8 H+ J
  10. aaron   ALL=(ALL)       ALL#新增這條允許aaron可以執行管理員權限
複製代碼
3 ]- x* X; b$ N) k+ L
3. 範例
  1. #沒有最高權限,所以就被擋了
    - t% b7 D. t; j( a
  2. [aaron@phoenix ~]$ service httpd restart
    2 o" i( v% S7 D* I2 k
  3. Stopping httpd:7 ]  |# @! G* p4 ^1 V- e& L
  4. rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied# Q4 c) @+ |# W2 |; Z
  5. 1 h) {9 O( g* B! D5 G6 i
  6. Starting httpd:7 A6 C, N* [7 h6 w9 T9 }3 R
  7. touch: cannot touch `/var/lock/subsys/httpd': Permission denied* `$ [( t2 a7 R6 E

  8. ! @1 ~3 }" s, l/ a
  9. #用sudo就可以
    , |3 V. X0 U, _2 H/ N
  10. [aaron@phoenix ~]$ sudo service httpd restart5 z: M% w  O' [# H0 w: G7 V8 F
  11. [sudo] password for aaron:[輸入密碼]
    $ t7 {0 ^" I3 U+ w$ [: X' f# E
  12. Stopping httpd:                                            [  OK  ]
    # l4 }) w& C& O2 b$ [& \. [% Y
  13. Starting httpd:                                            [  OK  ]
複製代碼
#su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。
/ K; ~6 C  m. G6 J3 P' B* A8 P
可參考http://kezeodsnx.pixnet.net/blog/post/25810396





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