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 編輯 - b: Y! X3 k' L) ~4 s+ S  m! W
. a2 D8 m& e- b$ c$ u- Y# r
su=switch user ,轉換到root 帳號
( r* R" S  p4 G) F/ C- qsudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:3 V7 `3 H5 c; o$ t' g" G  V

5 t- V1 S' ]* M# `* {" Q( G
Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。 / T  k2 b4 ]4 e' |
& V# T6 d$ s6 t* _9 f0 ^
1. 使用su指令
  1. #用su切換使用者, v( Y/ F2 `2 }7 H- d3 J& ?
  2. [aaron@phoenix ~]$ su#使用su切換為root
    7 U$ z! M- ^8 O: w1 ^6 ?9 U- O
  3. Password:[輸入root密碼]4 Y( p% S) \8 Y2 }
  4. - _8 s  R1 e. ^; h# |0 F- F/ j( H  {
  5. [root@phoenix aaron]# service httpd restart#已切換為root/ x- B5 v3 w$ g; a8 X1 m
  6. Stopping httpd:                                            [  OK  ]' a  Y2 y  Q8 \* s
  7. Starting httpd:                                            [  OK  ]
    4 J8 ~1 p* H7 F- l+ m

  8. # ~* G4 W. P" D8 o  g
  9. [root@phoenix aaron]# exit#切換回aaron
    1 ]) g% [! ]1 V( S4 e6 x
  10. ( o+ _3 ?$ k' c
  11. #執行單一指令,不需要切換為root) r) c6 N# c* O# L0 `
  12. [aaron@phoenix ~]$ su -c "service httpd restart"- q8 c* S  k4 P% i7 ^
  13. Password:[輸入root密碼]
    " g& I% Y: e# w/ j- `6 g: g6 M' C
  14. Stopping httpd:                                            [  OK  ]3 B5 g' v! M4 \
  15. Starting httpd:                                            [  OK  ]# j+ d+ ?1 l, P. e6 c1 u6 S

  16. 6 b0 W5 j! Z0 A
  17. #執行su與su -的差別(Shell環境是否跟著切換)" c. T9 s/ u2 D3 b! O
  18. [aaron@phoenix ~]$ su# J; q" g1 b6 V& n2 ~7 K
  19. Password:[輸入root密碼]
    ) Y) C. L) @! D1 `9 p" j3 s, B) U
  20. [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數
    / L$ u$ `. ^) t5 y0 T- Y
  21. /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin
    - ?- X) x' `2 n
  22. . }& M5 M7 ^9 x1 s+ ~
  23. [aaron@phoenix ~]$ su -6 T5 G, S1 q6 z9 o8 U4 \/ `
  24. Password:[輸入root密碼]) U& k7 V+ l5 {* q3 K
  25. [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數
    9 E* q, z" G0 Z7 M3 \0 s/ V% D
  26. /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼
/ W* I' d: M/ V( A" C; S; @
2. 設定sudoer

: P: @9 W( i/ s& c$ l
  1. [aaron@phoenix ~]$ su
    2 U9 [- {" c" J& p, U( [6 ]: c- h: Y& _
  2. Password:[輸入root密碼]0 s6 r3 Y+ C4 S' l0 b

  3. # y$ H' ]7 R, x  b+ F8 a
  4. [root@phoenix aaron]# vim /etc/sudoers+ P# F6 g" z0 \. P* H6 T- l# V

  5. 5 ^7 Y/ W1 P' x7 v7 C& A' P
  6. ## Allow root to run any commands anywhere3 N  y- n  U( z# A6 q6 ]
  7. root    ALL=(ALL)       ALL9 ^: y  @/ n  W1 I0 s+ w

  8. 7 m1 d! Y: a7 w7 d0 _: Q& y; R
  9. ## Allow users to run any commands anywhere
    : L9 \9 U2 ^# ^9 W5 O* z$ K. C
  10. aaron   ALL=(ALL)       ALL#新增這條允許aaron可以執行管理員權限
複製代碼
( j7 ?: G; V2 H- g% }+ b3 c
3. 範例
  1. #沒有最高權限,所以就被擋了# U( `& U  C; d( p
  2. [aaron@phoenix ~]$ service httpd restart. C* u! x0 h2 e$ p( o( f
  3. Stopping httpd:1 [! j/ B; d+ A- e  C
  4. rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied
    . \$ D% v) ~' \" l1 R4 \8 a# ~
  5. 3 l5 n2 `7 D1 v' U, R% Z! j+ V
  6. Starting httpd:3 c6 i8 k' i8 U% E4 j0 z
  7. touch: cannot touch `/var/lock/subsys/httpd': Permission denied* Z* R% N) F8 x4 m
  8. 9 Y2 s( c6 `- i, G+ o& t" s0 k0 n
  9. #用sudo就可以" R, ~4 D8 u+ Y" \8 s# A8 _2 @
  10. [aaron@phoenix ~]$ sudo service httpd restart$ t/ o  S" n, ]9 _) ^6 x
  11. [sudo] password for aaron:[輸入密碼]$ @) H  q8 o# O3 _/ |
  12. Stopping httpd:                                            [  OK  ]( H1 p9 K* @& B0 d3 p6 l& I
  13. Starting httpd:                                            [  OK  ]
複製代碼
#su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。
% X  @) C7 C0 J5 ^9 S
可參考http://kezeodsnx.pixnet.net/blog/post/25810396





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