tid=186& 本帖最後由 media 於 2014-12-21 14:12 編輯
( [1 D0 h: _/ H& u3 G
+ R6 ]; |, I R+ H0 Qsu=switch user ,轉換到root 帳號# J0 Y* ^0 v& u; M
sudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:
6 G+ f/ }) `4 z- v% T' L
% y: T/ l) Z8 r" mLinux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。 0 V) G, |7 h' k. X
8 p* y' H( @: O1. 使用su指令 - #用su切換使用者
$ B" P0 A1 b- @6 m - [aaron@phoenix ~]$ su#使用su切換為root
7 N3 e. `- e6 S& Z9 x - Password:[輸入root密碼]" g# T) L2 _. J$ H2 D1 z
- , `0 [, K) ` I l" o* Q8 G b V' b
- [root@phoenix aaron]# service httpd restart#已切換為root
; Y' ]0 ]) p2 [$ j* I6 Z& m - Stopping httpd: [ OK ]3 i g# O" w& p+ \2 v- O# O
- Starting httpd: [ OK ]+ E+ S* r; t; j. [' g' _: k" n
3 `, |% H2 k1 k& y& f$ A& ?$ I- [root@phoenix aaron]# exit#切換回aaron
' A0 T/ M/ C* R' I4 o: B( h u - & J6 q- E( k/ N/ n
- #執行單一指令,不需要切換為root
+ d- u6 }6 A& P# V& T- v( ?! Z - [aaron@phoenix ~]$ su -c "service httpd restart"" v/ G6 X5 ]- G( h3 I
- Password:[輸入root密碼]+ P5 f' d5 X9 M
- Stopping httpd: [ OK ]
! K, [8 ]0 }( @# _, _ - Starting httpd: [ OK ]; D1 o7 P7 G, r2 g. D/ y1 ?
$ }7 ?* {/ k a. }8 C W" Y l/ V- #執行su與su -的差別(Shell環境是否跟著切換)
]/ C9 t% F+ A% J, F - [aaron@phoenix ~]$ su
: G( Q! y( Y- d. Y% }8 Q - Password:[輸入root密碼]1 @4 n* {: w+ }$ o) _0 B
- [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數2 w" U# A! O& k8 G( r3 P/ d
- /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin
! W9 S- E0 Y) n2 ~4 L - + A ?0 k" p2 K3 T6 d2 s) y/ w
- [aaron@phoenix ~]$ su -8 W, A' `& K2 l6 H3 p; E$ F R
- Password:[輸入root密碼]* \- L: A9 w& ^7 z* P% u
- [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數
, ?# q9 G# s. [4 ^ - /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼
2 Y! ]1 G) L- k% Z7 M8 j2. 設定sudoer, R: Q7 |. A) e5 v% C+ ^4 c
- [aaron@phoenix ~]$ su
3 W( p6 x7 |! B- e% h6 F - Password:[輸入root密碼]/ [& n- t4 J. `& n$ v1 x& T$ s8 c
- % R/ H$ j$ u, B' T
- [root@phoenix aaron]# vim /etc/sudoers$ k( K) r7 X6 D- w6 q3 f1 o# I
- " p$ N, y6 }0 j( Q7 l. o t
- ## Allow root to run any commands anywhere
( v! \+ U8 d- d6 A7 U1 ^) L - root ALL=(ALL) ALL
6 D# b" T: {, H% W9 b - : i6 A+ t3 o; E& @% \9 { E
- ## Allow users to run any commands anywhere9 Z- O9 v. e0 p8 w- I) R
- aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼
' Q, F0 i$ @# `' i2 q7 m0 k6 t& O! W3. 範例- #沒有最高權限,所以就被擋了
. e2 a p- z7 m8 J1 [% a - [aaron@phoenix ~]$ service httpd restart
% @ O9 S/ s; \, ^% t - Stopping httpd: Z: j0 W: u6 m
- rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied
2 c! x8 M, d( p* ^
4 s/ L3 D3 U# s; z7 |- Starting httpd:! M: z( g! O2 u: K$ _2 @) y
- touch: cannot touch `/var/lock/subsys/httpd': Permission denied
, t5 Q: w, v6 A+ \4 [! W* `; N5 }) k. T - ! _8 _; p$ f3 C4 W& s! S! \
- #用sudo就可以, m6 u! m2 @7 k0 s5 X+ i( x
- [aaron@phoenix ~]$ sudo service httpd restart
; E+ N$ p1 A6 g9 q9 p* v8 j - [sudo] password for aaron:[輸入密碼]; V i. }. n8 a& L
- Stopping httpd: [ OK ]) a% H+ z+ P# p' |. b
- Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。
9 K* D/ I1 |% p# t" ^可參考http://kezeodsnx.pixnet.net/blog/post/25810396 |