本帖最後由 media 於 2014-12-21 14:12 編輯
, @3 ^! ^, t7 a% b
5 @! X5 c% m9 z# `' b. {; z- hsu=switch user ,轉換到root 帳號
/ _0 ]$ \) _' Msudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:
0 o) o Z+ V& R% {2 t1 u2 ] w) B, S$ R5 D1 t
Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。
7 b' K# P1 U9 y5 ~! s* F6 j& ]3 ^4 |2 d7 Y; Z
1. 使用su指令 - #用su切換使用者9 P. Q" {7 R: [& d4 {
- [aaron@phoenix ~]$ su#使用su切換為root
' G7 ^1 d" s1 I3 z+ w+ o - Password:[輸入root密碼]
, q; c# p) C/ {' d
& h. \. Z, Z- m1 p- [root@phoenix aaron]# service httpd restart#已切換為root
d: E( h' S3 J; R4 a - Stopping httpd: [ OK ]1 }: l3 ~1 G# t) \$ v
- Starting httpd: [ OK ]
3 H% F* Y1 ^7 U( T5 u4 n
5 Z+ y5 G) w7 @* a* j- [root@phoenix aaron]# exit#切換回aaron
`( Q$ z6 @ s+ y3 A# d8 ?+ n& z+ j - . _- f# E ^1 ?* I+ c
- #執行單一指令,不需要切換為root' }# B7 n2 ~3 c; ^. y7 M5 K/ j
- [aaron@phoenix ~]$ su -c "service httpd restart"
|7 Q) ^$ d+ s u, z: v4 }: E - Password:[輸入root密碼]
( f+ ]# {) W# W7 X$ I! I% l - Stopping httpd: [ OK ]
$ ]7 r; H- `, m/ a9 e9 t - Starting httpd: [ OK ]
9 _6 {* f7 l: r) w" ~ - 0 o0 E3 w$ V- O7 \1 m4 s
- #執行su與su -的差別(Shell環境是否跟著切換); y" _- u6 [7 a( @ k
- [aaron@phoenix ~]$ su
8 v' e7 n) u. F8 i: a0 h/ d - Password:[輸入root密碼]
: @1 A5 j; l8 W. F, J# g - [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數% d9 e5 W/ |( K9 p/ ^
- /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin
, m* F5 b+ b3 R" l" U( V! D5 r6 n
6 q3 {! U7 D, f! f- [aaron@phoenix ~]$ su -; `1 S5 P, y3 x Z F) m
- Password:[輸入root密碼]2 W, q6 P/ V: W M4 Z
- [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數
6 F# |2 o4 z! g/ y! N" J - /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼
5 [, E* @/ `% F; }. [3 g; e. C2. 設定sudoer
: G& H" r8 [% l. K% t$ y
- [aaron@phoenix ~]$ su6 A! q m( ^5 c1 K: J! A% h& B
- Password:[輸入root密碼]4 J ~; Z" ?+ n; ]& Z6 h
- 9 G4 B4 M8 F& t% E
- [root@phoenix aaron]# vim /etc/sudoers6 U3 C( D4 ~) B5 u: r# W4 M; I4 v1 e) T
- * I# |! _6 t/ m) m& c+ n
- ## Allow root to run any commands anywhere# C; i# ^" E6 V& s. L, e M- G
- root ALL=(ALL) ALL- ]! r7 F) L6 O0 Z7 \; \
- 0 c! t4 t8 L, M+ ^4 [
- ## Allow users to run any commands anywhere, o4 m& H8 q* t3 s- s/ ~
- aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼 0 |6 ?- H8 \2 R0 V; O F
3. 範例- #沒有最高權限,所以就被擋了
; [9 r5 \. e1 @ - [aaron@phoenix ~]$ service httpd restart) M l! O+ X# {/ ? K- S" t: G+ ?
- Stopping httpd:, b" X0 H$ J: H" W7 u5 W
- rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied
' m l8 X# [; C" N% e: d' d @
p! |" N- n0 O6 A# r3 ?) ? s- Starting httpd:: n1 M( t& v# `9 x! }1 ?5 {% `; ~; X
- touch: cannot touch `/var/lock/subsys/httpd': Permission denied" {7 K2 O. a+ t- q9 ?: F* p7 @
! n* h! ` y- j+ q5 m0 K, x' _- #用sudo就可以 \ @* D7 O8 k/ D) K
- [aaron@phoenix ~]$ sudo service httpd restart/ A: [9 ~- T3 L \" ~2 K, N
- [sudo] password for aaron:[輸入密碼]# T+ I. {" g$ d4 q7 ^( ^3 Z
- Stopping httpd: [ OK ]+ U% k- {4 w4 f$ m: @
- Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。1 I( B- |5 m t+ T/ ^; C$ }2 T
可參考http://kezeodsnx.pixnet.net/blog/post/25810396 |