tid=186& 本帖最後由 media 於 2014-12-21 14:12 編輯 3 y' _7 F" R: a# i8 d: x2 b/ ~
0 p4 E& L& n1 z: o% `su=switch user ,轉換到root 帳號1 `/ H! i+ N/ N
sudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:$ f1 v; ?, l: I: N+ N. T" L
3 P$ u* C: o! a6 U, f- q
Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。
: l5 D6 t2 n! H2 z( [' W' k) o* z) z8 H+ \4 r# Y
1. 使用su指令 - #用su切換使用者
' V9 Y+ X( C+ W* s - [aaron@phoenix ~]$ su#使用su切換為root
& S1 S7 b2 \& L" @4 ? B7 ~ - Password:[輸入root密碼]- q3 K. ~- E& J: T7 J
8 O+ a: O6 S. W: I' x- [root@phoenix aaron]# service httpd restart#已切換為root; `' D0 E \7 j3 e- n) T) i5 Y
- Stopping httpd: [ OK ]
/ b/ |6 t5 G1 u1 O8 l - Starting httpd: [ OK ]
6 T" Y" e' Z6 @) J - & V5 f1 s" I, f
- [root@phoenix aaron]# exit#切換回aaron
# g# f: w; l3 f* w
7 @; N7 C! [; v1 W7 \, { z- #執行單一指令,不需要切換為root! r( b# k$ _ |9 E
- [aaron@phoenix ~]$ su -c "service httpd restart"
6 B8 l! L$ s5 H! k) `4 T" p - Password:[輸入root密碼]
, j$ I7 r' a; p/ v! ] - Stopping httpd: [ OK ]
# p- z: \' z7 ~/ j6 [ - Starting httpd: [ OK ]
8 [" x( z; Z7 B: {- x: I8 m
4 Y/ g# F5 s5 G# e1 j- #執行su與su -的差別(Shell環境是否跟著切換)
' y" {# A& D" a2 { - [aaron@phoenix ~]$ su* L, Q. }5 M3 g g! g( |& f8 s7 p
- Password:[輸入root密碼]% ]5 g5 B$ q W a' l6 e
- [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數
) B- _. O, R4 Y - /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin
- K5 s7 Q, _, [0 s o
4 G9 U- @4 ^5 o2 w- [aaron@phoenix ~]$ su -$ U/ [0 h' V1 ?
- Password:[輸入root密碼]4 \( g# _1 Z2 r' ?$ [1 [' e7 W: j4 X
- [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數! i) l. {1 i* V5 a0 [5 Q
- /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼 ! j! F* p& {, c2 Q9 J/ L. D
2. 設定sudoer
) X/ m# {. F$ O
- [aaron@phoenix ~]$ su
1 A9 M) A. a. a1 }/ { - Password:[輸入root密碼]
6 ^: c3 [- M( G; i" f" u0 B3 M
7 p5 X0 q6 t2 M c- [root@phoenix aaron]# vim /etc/sudoers
) U8 i) B# H) Q/ V1 \
" b9 e8 e/ [* n0 f6 L- ## Allow root to run any commands anywhere$ v2 w- `$ |, p/ z. y' T/ E
- root ALL=(ALL) ALL9 w$ g' e' T$ ]# ^% a. d
- 5 X: f3 j* }3 h% i( F- |" j( B0 o
- ## Allow users to run any commands anywhere, n5 q. y& ~6 A% g! |1 ~; @
- aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼
$ N; U7 d. _3 k7 R) g. Z7 A5 X/ m1 A3. 範例- #沒有最高權限,所以就被擋了
6 t6 s2 ?0 C5 E3 f - [aaron@phoenix ~]$ service httpd restart
, p' r" ~. _6 V* G; Z" m - Stopping httpd:/ z6 ^0 J$ x; v- q$ x8 Y) B0 P4 k
- rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied
4 n! S7 e v& W7 J/ h - 8 F* c4 R, l$ Y
- Starting httpd:
6 f5 M* i1 E1 P. A X. i+ s7 F - touch: cannot touch `/var/lock/subsys/httpd': Permission denied
6 r3 k, s8 Z9 p; g9 ~
3 I! b6 ]4 Y+ W" k a7 M- #用sudo就可以, j( C1 @ y' _+ q3 s Z
- [aaron@phoenix ~]$ sudo service httpd restart3 w% _* O7 O% [0 Z; Q+ D. w+ `# K2 b
- [sudo] password for aaron:[輸入密碼]
* @6 p1 [! u" Q2 Z0 J - Stopping httpd: [ OK ]
! [9 M9 X9 ]* \3 T* o" d7 d - Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。# q7 O$ w) D3 E
可參考http://kezeodsnx.pixnet.net/blog/post/25810396 |