本帖最後由 media 於 2014-12-21 14:12 編輯 4 T* v w5 q; q6 W' T' E- L. d
7 J$ ^2 h1 L0 V% Isu=switch user ,轉換到root 帳號
* Z5 y, w4 }; Usudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:
1 O4 l3 f: @/ i2 h$ q; n6 s: B* s$ W0 a: g) ?" k, t! \, a
Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。 ! u; C4 d) W' U" J1 |7 p
: D$ x# B/ o5 c6 J! H
1. 使用su指令 - #用su切換使用者 y9 z! [) ]1 T7 N
- [aaron@phoenix ~]$ su#使用su切換為root: C! Z l( G5 S
- Password:[輸入root密碼]
! \' k0 Y' ]1 G7 ]! Y) h - ], k* x x* b. c% K( e
- [root@phoenix aaron]# service httpd restart#已切換為root/ t9 l. ~, S0 Z9 C6 n
- Stopping httpd: [ OK ]) _# S9 U1 G9 d
- Starting httpd: [ OK ]9 M; Z$ M! f9 E# H* q
- ! P6 G9 e7 {* A% R2 N* R3 D- |8 k
- [root@phoenix aaron]# exit#切換回aaron
5 u. U# p; |6 c - * n7 L; G& o! W* q. T4 k9 ^0 @" Y% G
- #執行單一指令,不需要切換為root5 U* x9 m% w0 k
- [aaron@phoenix ~]$ su -c "service httpd restart"- V7 ?. D' I5 \
- Password:[輸入root密碼]% H6 Z/ u7 }1 F6 q
- Stopping httpd: [ OK ]3 q; u" [, Y! C6 _+ F- g, K( E
- Starting httpd: [ OK ]# L2 H2 B+ H, A3 o) s
- * Q/ r' h: W( x3 o q
- #執行su與su -的差別(Shell環境是否跟著切換)0 R: t0 j0 X3 u, R
- [aaron@phoenix ~]$ su! C( Q. e7 D# A9 s% u, I- o) s
- Password:[輸入root密碼]
3 _ u3 b; ~7 K - [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數+ `; B' F% N- S7 a
- /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin( U, y& H0 t, v1 K
- 7 p; M- B Q. w* s3 V+ u
- [aaron@phoenix ~]$ su -+ @! R7 M/ `) k
- Password:[輸入root密碼]% E+ S6 m2 \! ^. T2 g
- [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數& W( A! ~" E: J4 H
- /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼
& _$ W& i6 i6 F) m2. 設定sudoer0 C1 P2 Y+ W0 c9 C
- [aaron@phoenix ~]$ su' X8 E3 g3 t# ^4 |# I+ p
- Password:[輸入root密碼]3 r8 a! f* {/ l
- j; W0 O! B; E- Y, s8 P$ j
- [root@phoenix aaron]# vim /etc/sudoers D1 K: U9 R3 e! \- Q. ?& p [
7 v- V F* N- P% C- ## Allow root to run any commands anywhere* _9 `1 X; F# W- I9 O
- root ALL=(ALL) ALL
$ K. V q) Y, s
0 X( a2 j$ {: \- U+ c- ## Allow users to run any commands anywhere
2 I4 ?% w' M$ ?# x L9 H* L% i. y' j - aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼
! g# ~7 k- S: J, }$ H% P3. 範例- #沒有最高權限,所以就被擋了
. r- N) T7 W/ ~# Z0 `3 u5 K - [aaron@phoenix ~]$ service httpd restart( m! H! u0 ]2 {6 _! k1 n
- Stopping httpd:8 r+ z& c5 |$ M8 y! ]1 Q" u
- rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied4 o" B e8 e; B4 b
- ' H8 D! {5 E: n% b1 C% ~
- Starting httpd:" h0 I. N+ v* ]1 C8 R# G
- touch: cannot touch `/var/lock/subsys/httpd': Permission denied
4 a$ T* e, ]$ V6 w7 w7 z
! U; \; Q0 x, R/ Q2 a- #用sudo就可以
: Q% t/ _. E6 s - [aaron@phoenix ~]$ sudo service httpd restart* J4 m0 b# t& F! K
- [sudo] password for aaron:[輸入密碼]
9 ]8 g9 P9 J) o" ]$ { - Stopping httpd: [ OK ]
7 C7 _2 g3 G1 v/ O8 O; K$ {4 R - Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。6 f9 t4 Y# X& Q/ d4 E; X
可參考http://kezeodsnx.pixnet.net/blog/post/25810396 |