本帖最後由 media 於 2014-12-21 14:12 編輯 6 K$ C+ F: a5 t j9 t1 G& h3 b; g
5 {; @0 p S5 a0 r0 W) s( s" w/ P
su=switch user ,轉換到root 帳號
# S5 r: r ?( [( }8 {% D# Vsudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:
1 c+ u/ d E7 w& C9 c
$ C# k9 G) _; i7 n3 b1 oLinux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。 ! M0 _4 e- }2 ^% W" X
: y) p& p; ~4 M5 G4 `5 W1. 使用su指令 - #用su切換使用者% j( N# i) V# ~0 X8 n; Y6 {
- [aaron@phoenix ~]$ su#使用su切換為root* O" I! R! B6 Y' P0 K, ?8 V
- Password:[輸入root密碼]
h, {/ R' r7 u+ b
, W# e+ l; i$ J9 u+ b. T- [root@phoenix aaron]# service httpd restart#已切換為root
6 L( J7 @: e, m# p* ~ - Stopping httpd: [ OK ]+ K+ d" ?) ~' k, w9 E1 S
- Starting httpd: [ OK ]
9 L$ E8 {" Z6 R2 S6 j
* n2 _1 x: A( S9 i: ?- [root@phoenix aaron]# exit#切換回aaron. [; h/ s" Y, r z1 k4 m% I# H
- l4 C W. q% S( b2 y6 ~& c. O- #執行單一指令,不需要切換為root
2 M( b4 G3 G" j) ]2 r0 l - [aaron@phoenix ~]$ su -c "service httpd restart"% u" e+ u6 L# F* n h9 u }0 _
- Password:[輸入root密碼]# @- ?5 \$ B2 c* ^
- Stopping httpd: [ OK ]
6 L# l. g! M) g& ?; Y - Starting httpd: [ OK ]8 o9 y0 b; d6 p, a0 \) ~4 N
& E4 d" H3 n( `5 B# J! H- #執行su與su -的差別(Shell環境是否跟著切換)
! a* X$ O" ], q; J - [aaron@phoenix ~]$ su7 p' H( w3 u) ~0 }' f y% c
- Password:[輸入root密碼]
. o. c/ @) K3 d - [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數
& k+ I8 F- c! }3 @% t- t' e - /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin# Z5 t0 S) B: o) V# }% {% u
& N& O' ] V" N5 [( B- [aaron@phoenix ~]$ su -
! e) E( `* _& Q, d2 j @1 d& N - Password:[輸入root密碼]
# w4 d9 C2 t' ~ - [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數) V/ |- U. Z) F& r
- /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼 7 I8 p4 r; S; X" x! c7 V
2. 設定sudoer; {! v2 q$ G0 J, r# {' m
- [aaron@phoenix ~]$ su
, a6 m) Y* H" z) B2 E - Password:[輸入root密碼]( ]4 n( h: A% u
9 v0 r# l& M1 x( V4 D7 V- [root@phoenix aaron]# vim /etc/sudoers
- k: q/ [. P' q) j9 h1 e) a
' I; u% V" ~* g7 t; T# q- ## Allow root to run any commands anywhere
+ z& Y3 B* L. S& I$ q& c% z* S% `6 ` - root ALL=(ALL) ALL
2 L# p5 O; q* j. v
+ X8 p' N+ Y5 x, l# _) T4 C* P- ## Allow users to run any commands anywhere
0 D* j# c2 u- Y - aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼 . Y. }! g) ~/ E4 K% l5 J& z0 c
3. 範例- #沒有最高權限,所以就被擋了: \% a6 n. }2 e5 m& F
- [aaron@phoenix ~]$ service httpd restart& `3 K u; N5 p
- Stopping httpd:+ ?3 d! ?: A6 g
- rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied: P' m! I4 s2 O5 t) @
; U/ N9 _; l" E. S8 @- Starting httpd:
7 s, Y: _0 U/ o8 ^) ]( r - touch: cannot touch `/var/lock/subsys/httpd': Permission denied+ R) J; {1 ^# s4 N& T( C
8 ^0 B2 l% _ R4 c% a9 A+ f- #用sudo就可以$ z$ s! ~( n5 A1 m1 x
- [aaron@phoenix ~]$ sudo service httpd restart
; X& F" w% G `' @/ ^; \/ t* {( N/ {' _ - [sudo] password for aaron:[輸入密碼]) W3 Q ]7 O) W" P
- Stopping httpd: [ OK ]+ B4 M! X1 ]. s/ I; X( U+ N
- Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。
1 Z; E6 S5 C$ r可參考http://kezeodsnx.pixnet.net/blog/post/25810396 |