本帖最後由 media 於 2014-12-21 14:12 編輯 1 y* a% I% E8 u& i- J% X
( G" |, q. h/ A/ [su=switch user ,轉換到root 帳號
% w1 ?0 ` R$ T. F; ?sudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:0 ? t6 @- }" _. n' T0 b
9 s; J: W5 ~; C* @& jLinux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。
( e, ]) p3 o5 J' Y7 h V1 ~2 w, v1 f' S3 T7 \
1. 使用su指令 - #用su切換使用者
! M) h) U1 {2 s4 E$ } - [aaron@phoenix ~]$ su#使用su切換為root
: T$ X) ^/ z0 `" `4 e" C! ?, w - Password:[輸入root密碼]: f( R! O. r/ ~3 f
- 3 n' @/ D# o" u
- [root@phoenix aaron]# service httpd restart#已切換為root6 a& U8 y" G! T7 {3 |5 g6 j
- Stopping httpd: [ OK ]1 ~9 F5 d! G3 _! c
- Starting httpd: [ OK ]
7 M6 j8 j" {/ f8 t7 o3 k8 q$ } - 1 N2 m6 Y" y1 e
- [root@phoenix aaron]# exit#切換回aaron
0 `6 u2 e3 c7 y" q7 `) a( Q - 2 ^# H2 R! g! d4 N6 h
- #執行單一指令,不需要切換為root
" w3 _1 Q' A6 s - [aaron@phoenix ~]$ su -c "service httpd restart"# } B0 N( D! h+ v8 a. v; ?! Z+ s
- Password:[輸入root密碼]6 B# D! v+ x7 d& \* \
- Stopping httpd: [ OK ]
- ~# S% M8 E: T6 {2 \% C D: U - Starting httpd: [ OK ]
, f; `6 `3 k; M
, r5 A: V$ B" @: B7 e$ q6 |$ H- f; q- #執行su與su -的差別(Shell環境是否跟著切換)9 A4 Y; o3 e5 _5 t1 b
- [aaron@phoenix ~]$ su
t, ^+ s E E( @ ^ - Password:[輸入root密碼]
7 V/ y- ?9 R8 v$ v' e6 F2 ` - [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數
4 k/ N' Y" s0 O$ Y! L/ f - /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin
( E5 F8 e& G/ \. o. b$ \ - $ I$ i4 h* [9 B( P7 @
- [aaron@phoenix ~]$ su -9 ^; |1 g7 `& k. C0 ]
- Password:[輸入root密碼]
* Q4 O2 |& T3 w" q7 P: g - [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數6 Y: |# w! j6 ^! ?
- /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼 ! L9 X- e, B" R, n, w, H
2. 設定sudoer
+ h3 J7 u0 {* @! ~# x0 O- V; d
- [aaron@phoenix ~]$ su
2 c' u' z5 Y) Q2 o: s8 e3 ]1 B - Password:[輸入root密碼]
9 T! \( B5 }* \ A
9 o* J1 B" p1 C( `% E# \" h- [root@phoenix aaron]# vim /etc/sudoers
4 H8 z: J2 J4 R
$ u) p- k% x+ \0 S. h8 R- ## Allow root to run any commands anywhere* E2 _8 |5 k9 K+ C- {
- root ALL=(ALL) ALL- y4 n& g' T% k- N) ^
. ~, h: T& R/ d* c- T! Y# F$ s- ## Allow users to run any commands anywhere
: J4 Q* K: x" [) x6 ~* _ - aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼
# q% V/ |, H I1 l) Y1 s8 a0 f3. 範例- #沒有最高權限,所以就被擋了6 R% R1 c5 q& i- w2 e
- [aaron@phoenix ~]$ service httpd restart
9 C% u: [: M* S - Stopping httpd:
' F# l) h+ }, c - rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied
) V* S$ r1 b5 l
$ P) w3 w# p& u- Starting httpd:
0 }3 \* I4 Q G: N( @0 K) A9 m - touch: cannot touch `/var/lock/subsys/httpd': Permission denied+ u9 A' ]: k) S9 D: {; Y* `
( C# O" P! A2 ^- C' g: h' e- #用sudo就可以
% _- J0 p4 E! j" v! v# ] - [aaron@phoenix ~]$ sudo service httpd restart Q% I, @+ f7 ^# O7 g: ^
- [sudo] password for aaron:[輸入密碼]
' e- Z6 W& i* Y! D* n1 S - Stopping httpd: [ OK ]
8 R) e' M3 C9 N" F# n: ]7 j6 _0 M - Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。
& N: ~2 T# I) U+ m. ~ {可參考http://kezeodsnx.pixnet.net/blog/post/25810396 |