[英]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.