簡體   English   中英

限制進程在linux中讀取“/etc/resolv.conf”文件

[英]Restrict a process to read "/etc/resolv.conf" file in linux

在我的過程中,我正在創建一個子進程並使用 execl() API 運行二進制文件。 在父進程中調用 waitpid() 並等待子進程退出。 這個二進制文件打開“/etc/resolv.conf”並嘗試連接DNS IP。 如果 DNS ip 不可達,子進程會阻塞很長時間。 由於該父進程超時。 我沒有二進制的源代碼,我不想對 /etc/resolve.conf 進行任何更改,因為該文件已被其他進程使用。

有什么辦法,我可以刪除或限制“/etc/resolve.conf”對我的子進程的訪問。

阻止訪問/etc/resolv.conf並不容易。 但是您可以通過環境變量RES_OPTIONS告訴解析器嘗試執行 DNS 名稱解析的RES_OPTIONS 即使是零嘗試也是一個有效值,並導致名稱解析立即失敗。

見例如:

RES_OPTIONS="attempts:0" telnet www.google.de
telnet: could not resolve www.google.de/telnet: Temporary failure in name resolution

這意味着,在你的程序中,你可以做

...
putenv("RES_OPTIONS=attempts:0");
execl(...);
...

這應該會導致解析立即失敗,您的過程應該繼續。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM