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 編輯 C+ A+ U6 ~$ `0 Q8 o
' a* f% }& W( s! R3 \
su=switch user ,轉換到root 帳號
$ F/ V+ O. ?9 f8 m) U& a% c* T4 qsudo 是以root權限執行相關命令,例如: sudo service mysqld restart,兩者說明如下:( ^+ g5 N; P) U
7 J: I; D7 b5 E1 M$ k" Z4 ?
Linux安裝套件與系統設定都需要root的權限,就是super-user privileges (最高權限),也就是管理員權限。如何擁有root的權限?我們可以直接用ssh登入root的帳號,或用su(substitute user)指令來切換使用者,再不然就是使用sudo指令。
E" d# ]0 O3 ?! g9 y* E6 q- P" Q0 D6 S; T# ~% ~) p
1. 使用su指令
- #用su切換使用者
6 A; E5 \ B% Q' ]$ q0 h3 l - [aaron@phoenix ~]$ su#使用su切換為root$ T3 }) Z/ g- W3 m. ?+ q# t7 a" i0 O
- Password:[輸入root密碼]% n2 A5 S( a B6 l
2 @) q& g( d# O; {* h5 v- [root@phoenix aaron]# service httpd restart#已切換為root
, R: i5 [9 z7 z z c. t: l0 [7 w5 J - Stopping httpd: [ OK ]+ Q/ H) n2 E7 t5 x, }- x
- Starting httpd: [ OK ]! U& Y8 } r" T
- ; r# G a5 `# j4 `8 Z
- [root@phoenix aaron]# exit#切換回aaron
) [+ @. C& l2 b) ~
4 ?/ g& U8 R4 U. w- X, v6 v- #執行單一指令,不需要切換為root$ s% \2 `9 E- e
- [aaron@phoenix ~]$ su -c "service httpd restart"
* k) k' v* y! D5 D - Password:[輸入root密碼]/ w, I1 p9 F+ y, H& c% I+ U* d
- Stopping httpd: [ OK ]( l( e6 C: |. x
- Starting httpd: [ OK ]9 Q& Z; h7 q' w; y+ M# I
- ; \$ k6 G- w$ D( ?
- #執行su與su -的差別(Shell環境是否跟著切換): t0 T/ g) R8 N
- [aaron@phoenix ~]$ su
3 D4 R! U+ m. X) z& }7 [1 a3 J - Password:[輸入root密碼]
9 z0 w0 ^ @( p! _/ ?& T) |7 P4 A/ J - [root@phoenix aaron]# echo $PATH#列印PATH變數,發現還使用aaron的PATH變數5 X9 o9 }& k3 m% C% W+ I
- /usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/aaron/bin. }6 F: C3 ?% t% [4 T
- 7 h p# O1 U7 j
- [aaron@phoenix ~]$ su -
7 ?0 E5 i$ d2 p" S% z% T - Password:[輸入root密碼]% s) V- H: _: z% H* c/ G
- [root@phoenix aaron]# echo $PATH#列印PATH變數,使用root的PATH變數, x2 r# r* S5 [$ k; C
- /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
複製代碼 9 N* Z1 ~* Y$ U7 |
2. 設定sudoer$ _$ B+ _3 R$ @; x1 e0 ^
- [aaron@phoenix ~]$ su
4 z, u: m/ C; T - Password:[輸入root密碼]
1 m a- W4 j( I0 T - * k0 p" i# E. i0 g6 c9 q
- [root@phoenix aaron]# vim /etc/sudoers; t5 o {% W5 ]9 E
- 0 M$ b6 p4 X+ K. I$ F8 U: k
- ## Allow root to run any commands anywhere% I# q) `# M9 h) U' j8 K8 @$ w! ]8 L
- root ALL=(ALL) ALL( a+ u: N1 F, l0 u, A8 H5 M
; p1 x6 W8 i, ]+ u6 u: V- ## Allow users to run any commands anywhere+ V2 s+ Y3 d4 e5 p! y# i" v
- aaron ALL=(ALL) ALL#新增這條允許aaron可以執行管理員權限
複製代碼 8 j5 |& y5 w3 f# M g
3. 範例- #沒有最高權限,所以就被擋了
; w! N2 m% K [ `, n7 | i/ m - [aaron@phoenix ~]$ service httpd restart
, j- K4 g. g; l$ Q! A - Stopping httpd:
2 h( C5 U" d+ V, V8 n w8 _ - rm: cannot remove `/var/run/httpd/httpd.pid': Permission denied- l; |$ M# R \4 R
1 p6 K' k6 v5 u8 @2 M- Starting httpd:
8 C& o0 ?5 [5 V! b/ d - touch: cannot touch `/var/lock/subsys/httpd': Permission denied& c" O0 Z& `$ U' d B
- 0 L: y% r) L0 r) @4 c- s* F
- #用sudo就可以
: Q; j- m) a! t2 b - [aaron@phoenix ~]$ sudo service httpd restart- E0 e0 D4 ~* h& q0 g
- [sudo] password for aaron:[輸入密碼]1 T, V1 y0 D. `; K0 O) L
- Stopping httpd: [ OK ]) @$ @ l/ g5 w u' A
- Starting httpd: [ OK ]
複製代碼 #su與sudo的差別在於是否要讓一般使用者知道root的密碼,如果用su就必須將root密碼分享出去,很有可能造成系統被侵入的危險。而sudo則是讓一般使用者有管理員權限,只要輸入自己的密碼即可,但同樣有風險,因為擁有管理員權限。
, d4 y; w6 S- j# E7 v可參考http://kezeodsnx.pixnet.net/blog/post/25810396
| 歡迎光臨 52AV手機A片王|52AV.ONE (https://www.52av.one/) |
Powered by Discuz! X3.2 |