tid=186& 本帖最後由 media 於 2014-12-21 14:12 編輯
+ D6 B$ u1 ~6 y0 Y$ l8 W6 L6 h5 y4 t" q! w2 A% v! G
su=switch user ,轉換到root 帳號
" \2 ~$ w: E' Msudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:
8 z5 `# ~7 |. o# x) R3 l/ t& u
# J; e% K% L3 p1 o/ _Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。
: J, Z8 u) Y) D
- s4 [$ D# w: B- c) |1. 使用su指令 - #用su切換使用者
8 `, F7 K( h: } v - [aaron@phoenix ~]$ su#使用su切換為root4 ?" h8 F, L9 R+ L3 W- _& m2 D
- Password:[輸入root密碼]
+ ]& c6 \9 g* t( G) z2 R) F+ ~
' Y' F7 } H2 @- [root@phoenix aaron]# service httpd restart#已切換為root
! o9 Z: w: s% L4 [- ]5 a1 c+ N - Stopping httpd: [ OK ]" e6 u( ?# H& k( A2 B) T' K
- Starting httpd: [ OK ]4 n1 n) X8 c" ^2 [) o8 B: K
3 x/ o7 \7 }5 i) p# F, o( {# z- u' g- [root@phoenix aaron]# exit#切換回aaron
7 G( Q6 R$ P0 o- K( \0 v - 3 j. G$ `" I. e- }
- #執行單一指令,不需要切換為root
8 a% |% i" `! T2 L - [aaron@phoenix ~]$ su -c "service httpd restart"& ?6 ?$ O) `" D, n# a9 y- L
- Password:[輸入root密碼]& S2 |3 q( C' e U& u. s v
- Stopping httpd: [ OK ]" ]! e7 A5 {/ L. j: K
- Starting httpd: [ OK ]2 \0 `( Y3 s% `: n: P
2 H5 `" d4 f, L; h- t- #執行su與su -的差別(Shell環境是否跟著切換)( I. }) Q, N1 L8 s: N
- [aaron@phoenix ~]$ su
1 b7 y8 P3 a5 N# r& W6 D - Password:[輸入root密碼]
+ D- g- A/ P. q. o8 a. [6 U4 [ - [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數
$ E. |) E6 Y% X: O3 E - /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin
. O1 `8 [) \ o3 h
% ^: H) m" U0 Z9 C2 g- [aaron@phoenix ~]$ su -
9 g% |+ N: x$ X - Password:[輸入root密碼]
8 Y0 c; _' C7 N! u! e - [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數9 Z6 b# y& P! ]7 Y8 K! m
- /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼 ! u$ ]2 C0 L' s
2. 設定sudoer
2 X4 Z1 u/ ^" H7 P! n
- [aaron@phoenix ~]$ su# x1 C( d* n* A8 y( v4 p8 Q
- Password:[輸入root密碼]
+ A8 Q2 ]2 d; Q - ; A7 o0 K9 N; R; F3 e7 p
- [root@phoenix aaron]# vim /etc/sudoers
5 ~1 h; b3 D5 n- \6 I. r - + ]: u- \( I. h( y
- ## Allow root to run any commands anywhere
& I" C' C/ _+ w. `1 B6 {- G8 `3 W - root ALL=(ALL) ALL
, ?" Q6 H7 c( Z {: g9 a
8 u h1 C. }5 J% y6 ^- ## Allow users to run any commands anywhere
4 a$ I2 ~) ^/ z4 \- ?+ J" p6 `1 O - aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼 , q$ L" Q9 x& o+ z( m2 d% i+ ]
3. 範例- #沒有最高權限,所以就被擋了9 ~* p8 h5 ^2 z" e
- [aaron@phoenix ~]$ service httpd restart6 f# ~' D* i, h& u& A3 w9 r) W: ?
- Stopping httpd:4 n# Y1 @, E' V* O+ H
- rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied) w$ S0 p. N! j7 u4 j
) }" g( p% `: y- Starting httpd:
9 _! w) V9 c' H r! M; d ^ - touch: cannot touch `/var/lock/subsys/httpd': Permission denied3 u0 d3 h$ W7 F- E/ ^/ N
- q! u4 [' U" z- #用sudo就可以$ C) |, a$ y2 O" j f6 t
- [aaron@phoenix ~]$ sudo service httpd restart
( T% ^& o4 _2 w- ~) j* { - [sudo] password for aaron:[輸入密碼]1 M- Q: G* Z. ]; C5 \' A
- Stopping httpd: [ OK ]
- k; y* g8 h9 v7 r" L. U5 O1 P% ?" C) J - Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。. c8 ~9 v$ |+ v. \: S& q5 y) W
可參考http://kezeodsnx.pixnet.net/blog/post/25810396 |