當前位置:編程學習大全網 - 編程語言 - 如何在非root狀態下用root身份執行命令

如何在非root狀態下用root身份執行命令

問題在於有許多程序是不應該用root身份運行的。如果妳用自己的身份(非root身份)啟動文件管理器,然後刪除/home,妳會丟失自己的所有文件,然後壹邊尋找備份文件壹邊不停地抱怨自己。萬幸的是所有其他用戶的文件都還安然無恙。但是,如果妳用root來做同樣的事情,馬上就會陷入眾人的抱怨和詛咒之中。 文件***享程序也同樣不應該用root身份運行。如果有人找出了Irc或者Gnutella程序的漏洞,他們最多只能偷竊妳自己的文件。但如果妳用root來運行這些程序,所有用戶的文件將完全暴露在他們的眼前,包括最最重要的/etc/shadow密碼文件,以及妳同事的私人郵件。這可不是什麽好事。 所以,請務必用妳自己的帳號來運行X,用本文下面介紹的方法來運行那些必須使用root才能運行的任務。 su和su - 假設有人占據了撥號線路,我們想知道那個家夥到底是誰。tcpdump會顯示出線路上的數據包傳輸情況,我們來試試下面這個命令: [wstearns@sparrow wstearns]$ tcpdump -i ppp0 -qtn

tcpdump: socket: Operation not permitted 哦,對了。這個shell和所有其他X下的程序壹樣,都用wstearns運行。妳會想我可以從命令行提示看出來,不是嗎?:-) 不過,我可不想只為了壹個命令從X完全退出。su命令讓我們用另外壹個用戶臨時地替代當前用戶。如果不指定自己想成為哪壹個用戶,則su默認我們想成為root。不要嚇起哄說什麽黑客技術,除非當前用戶就是root,否則還是老老實實給su提供目標用戶的密碼。:-) [wstearns@sparrow wstearns]$ tcpdump -i ppp0 -qtn

tcpdump: socket: Operation not permitted

[wstearns@sparrow wstearns]$ su - Password: < 輸入root的密碼 >

[root@sparrow /root]# tcpdump -i ppp0 -qt

User level filter, protocol ALL, datagram packet socket

tcpdump: listening on ppp0

< reflectix.xs4all.nl.29788 > ME.33085: tcp 1448 (DF) [tos 0x10]

> ME.33085 > reflectix.xs4all.nl.29788: tcp 0 (DF)

< reflectix.xs4all.nl.29788 > ME.33085: tcp 1448 (DF) [tos 0x10]

> ME.33085 > reflectix.xs4all.nl.29788: tcp 0 (DF)

< reflectix.xs4all.nl.29788 > ME.33085: tcp 1448 (DF) [tos 0x10]

> ME.33085 > reflectix.xs4all.nl.29788: tcp 0 (DF)

< reflectix.xs4all.nl.29788 > ME.33085: tcp 1448 (DF) [tos 0x10] 7 packets received by filter

[root@sparrow /root]# exit

[wstearns@sparrow wstearns]$ 哦,原來是我自己下載文件占用了撥號線路。呵呵。 妳或許已經註意到,上面這個例子使用的是su -而不是su。“-”將提供目標用戶的環境來替代當前用戶的環境。下面這個例子很明確地說明了這壹點,不用su -時shell不能在/sbin和/usr/sbin下找到我們要執行的命令: [wstearns@sparrow wstearns]$ su

Password: < 輸入root的密碼 >

[root@sparrow wstearns]# tcpdump -i ppp0 -qt

bash: tcpdump: command not found

[root@sparrow wstearns]# exit

[wstearns@sparrow wstearns]$ 在這個例子中,我仍舊留在當前的wstearns目錄,沒有進入root的默認目錄。另外,由於/usr/sbin不在我的路徑中,我得指定tcpdump的完整路徑。這樣看來,壹般情況下還是使用“su -”更方便壹點。 su - -c <命令> 如果妳確實只需執行壹個命令,下面還有壹種更快的方法。-c選項告訴su運行指定的命令然後立即返回到原來的用戶: [wstearns@sparrow wstearns]$ whoamiwstearns[wstearns@sparrow wstearns]$ su - -c whoami

  • 上一篇:51單片機做科學計算器的c語言程序
  • 下一篇:fpga開發的語言是什麽
  • copyright 2024編程學習大全網