52AV手機A片王|52AV.ONE
標題: Linux 下 su v.s sudo 指令比較 [打印本頁]
作者: media 時間: 2014-12-21 14:08
標題: Linux 下 su v.s sudo 指令比較
本帖最後由 media 於 2014-12-21 14:12 編輯 2 U z- [( k' w6 M. `5 i
- u( S. o/ i% v
su=switch user ,轉換到root 帳號
" r: b' s) b/ p2 I! v: Isudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:
& F; e- E; f0 B- m7 V4 j
( z: r4 t- S( ULinux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。 ; p2 ?! M1 m8 G, S8 n' V1 K
! H. }8 L0 Q8 E/ L( @) t% u
1. 使用su指令
- #用su切換使用者
; Q7 a* l' P' Y/ e - [aaron@phoenix ~]$ su#使用su切換為root6 x6 [( I/ x. e5 V2 F8 l
- Password:[輸入root密碼]
5 Q5 n6 M8 b) | A: y. F0 R - 1 @- [3 {; {$ J% |$ \9 F: u- \
- [root@phoenix aaron]# service httpd restart#已切換為root) P# r( ~8 }# ?5 b5 s. G/ D F
- Stopping httpd: [ OK ]
+ L/ ]; Y- ^: u0 [ - Starting httpd: [ OK ]$ [) F# q" S8 t% w' c
, Y3 Q: B. M% o6 Q0 f5 \- [root@phoenix aaron]# exit#切換回aaron. P6 [2 H3 \* F7 v2 ^- r8 t0 i) K
- b( w3 M/ c: ^7 V8 A
- #執行單一指令,不需要切換為root1 r6 |+ C9 ^" P% d3 P$ B) i$ V
- [aaron@phoenix ~]$ su -c "service httpd restart"
. y5 W9 W4 `- h1 E - Password:[輸入root密碼]6 C7 k- A) B$ T1 B/ s" |
- Stopping httpd: [ OK ]
" K; \0 j) H' ^ - Starting httpd: [ OK ]+ s$ F2 _. E0 m7 \, G3 S5 A
- , p2 C6 t% X# J0 x# k
- #執行su與su -的差別(Shell環境是否跟著切換)
) `4 ^& H4 c! ~, T8 a - [aaron@phoenix ~]$ su( Z- B% h7 F& S0 J! r
- Password:[輸入root密碼]
) v/ w0 Y( y+ E! X3 a9 |* x - [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數9 ]0 M1 l7 G0 ]( a& g6 Q. P# E
- /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin2 }$ B& O* S4 n- h; w2 T0 Y: ]: f
- . h$ m- ?7 { i) e& h* |
- [aaron@phoenix ~]$ su -
) i; c2 ~+ Z! s: ` - Password:[輸入root密碼]+ N _7 g# b. t& u0 {4 q5 [7 k x
- [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數
" S1 N+ Z% y* S$ h# M9 q9 e& i7 Q# O - /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼 3 g* j: ?2 L4 K% V; \! k
2. 設定sudoer! o. w; W- n; l/ @
- [aaron@phoenix ~]$ su, Y9 ^# p! {. ~6 ^3 n" O1 A& D8 }
- Password:[輸入root密碼]$ Y( r( J' c! A. t& K
# G, M/ g/ u# W" \3 ~! `/ i- [root@phoenix aaron]# vim /etc/sudoers
& \/ K6 U+ t8 @9 t5 q! O. `
2 ^* N y9 r/ y+ M+ Q: K U1 K- ## Allow root to run any commands anywhere
9 ]+ Q% W' y0 \" o0 L - root ALL=(ALL) ALL
6 Z% h8 l+ w f
* u; I8 r8 V' K- ## Allow users to run any commands anywhere
$ K) [1 _ J. Q9 `8 H+ J - aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼 3 ]- x* X; b$ N) k+ L
3. 範例- #沒有最高權限,所以就被擋了
- t% b7 D. t; j( a - [aaron@phoenix ~]$ service httpd restart
2 o" i( v% S7 D* I2 k - Stopping httpd:7 ] |# @! G* p4 ^1 V- e& L
- rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied# Q4 c) @+ |# W2 |; Z
- 1 h) {9 O( g* B! D5 G6 i
- Starting httpd:7 A6 C, N* [7 h6 w9 T9 }3 R
- touch: cannot touch `/var/lock/subsys/httpd': Permission denied* `$ [( t2 a7 R6 E
! @1 ~3 }" s, l/ a- #用sudo就可以
, |3 V. X0 U, _2 H/ N - [aaron@phoenix ~]$ sudo service httpd restart5 z: M% w O' [# H0 w: G7 V8 F
- [sudo] password for aaron:[輸入密碼]
$ t7 {0 ^" I3 U+ w$ [: X' f# E - Stopping httpd: [ OK ]
# l4 }) w& C& O2 b$ [& \. [% Y - Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。
/ K; ~6 C m. G6 J3 P' B* A8 P可參考http://kezeodsnx.pixnet.net/blog/post/25810396
| 歡迎光臨 52AV手機A片王|52AV.ONE (https://www.itech.casa/) |
Powered by Discuz! X3.2 |