2012-10-17 167 views
0

我想將Linux應用程序作爲另一個用戶運行(除了root以外)。 在我的應用程序中,我們編寫了套接字程序,並使用原始套接字來ping數據庫服務器。由於我們以root身份運行應用程序,因此它能夠ping服務器。但是當它以普通用戶身份運行,而不是以root身份運行時,則無法ping數據庫服務器。以root用戶以外的其他用戶身份運行Linux應用程序

你能告訴我們如何用普通用戶來運行這個過程嗎? 我們如何檢查進程與哪個用戶一起運行?

感謝,

+0

這個問題上的標籤看起來很混亂,沒有多大意義。如果這是一個Linux內核模塊,那麼你就不會遇到這個問題,但同時,如果你必須以root身份在嵌入式系統上運行,爲什麼會這麼重要? – Wug

+0

人們似乎認爲難度是作爲另一個用戶啓動程序,但我不認爲這是對問題的準確解讀。相反,我認爲這是程序*失敗*作爲非特權用戶運行時(因此非常關注主題)。嘗試執行特權操作(如文字ICMP ping),使用未使用CAP_NET_RAW的原始套接字或在本地端使用特權端口號時可能遇到困難。將代碼直接放在失敗的syscal周圍會有所幫助。 –

回答

1

用途:

sudo -u <username> <command ...> 

您可以查看有關進程的信息(除其他事項外,包括,所有者的用戶名)有:

ps -Af | grep <process name> 

而且,非root程序不能使用原始套接字。這將表明您的程序設計存在缺陷。

1

已經Wug回答使用「sudo」作爲不同的用戶運行(如果允許在sudoers中)。如果你想看看哪個用戶擁有這個過程,你可以使用不同的工具:比如「top」或「ps aux」等。

相關問題