From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3179 invoked by alias); 29 Nov 2016 14:29:05 -0000 Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Mail-Followup-To: cygwin@cygwin.com Received: (qmail 1549 invoked by uid 89); 29 Nov 2016 14:29:05 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.4 required=5.0 tests=AWL,BAYES_00,KAM_LAZY_DOMAIN_SECURITY,RP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy=H*r:ip*192.168.0.3, Hx-languages-length:2663, H*M:b10c, moss X-HELO: mailsrv.cs.umass.edu Received: from mailsrv.cs.umass.edu (HELO mailsrv.cs.umass.edu) (128.119.240.136) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 29 Nov 2016 14:28:54 +0000 Received: from [192.168.0.3] (c-24-62-203-86.hsd1.ma.comcast.net [24.62.203.86]) by mailsrv.cs.umass.edu (Postfix) with ESMTPSA id 20C9F42E7466; Tue, 29 Nov 2016 09:28:53 -0500 (EST) Reply-To: moss@cs.umass.edu Subject: Re: Retrieving per-process environment block? References: <20161117140012.GA23664@calimero.vinschen.de> To: cygwin@cygwin.com From: Eliot Moss Message-ID: <98eb08bf-5012-fe14-b10c-241b427c4366@cs.umass.edu> Date: Tue, 29 Nov 2016 16:35:00 -0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.5.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2016-11/txt/msg00325.txt.bz2 On 11/29/2016 8:26 AM, Erik Bray wrote: > On Thu, Nov 17, 2016 at 3:00 PM, Corinna Vinschen > wrote: >> On Nov 17 14:30, Erik Bray wrote: >>> Hi all, >>> >>> For a quick bit of background, I'm working on porting the highly >>> useful psutil [1] Python library to Cygwin. This has proved an >>> interesting exercise, as much of the functionality of psutil works on >>> Cygwin through existing POSIX interfaces, and a handful of >>> Linux-specific interfaces as well. But there are some bits that >>> simply don't map at all. >>> >>> The one I'm struggling with right now is retrieving Cygwin environment >>> variables for a process (under inspection--i.e. not listing a >>> process's environment from within that process which is obviously >>> trivial). >>> >>> I've looked at every route I could conceive of but as far as I can >>> tell this is currently impossible. That's fine for now--I simply >>> disable that functionality in psutil. But it is unfortunate, though, >>> since the information is there. >>> >>> There are a couple avenues I could see to this. The most "obvious" >>> (to me) being to implement /proc//environ. >>> >>> I would be willing to provide a patch for this if it would be >>> accepted. Is there some particular non-obvious hurdle to this that it >>> hasn't been implemented? Obviously there are security >>> implications--the /proc//environ should only be readable to the >>> process's owner, but that is already within Cygwin's capabilities, and >>> works for other /proc files. >> >> Patch welcome. Implementing this should be fairly straightforward. >> The only hurdle is winsup/CONTRIBUTORS ;) > > Thanks--I went to go work on this finally but it turns out not to be > straightforward after all, as the process's environment is not shared > in any way between processes. > > I could do this, if each process kept a copy of its environment block > in shared memory, which would in turn have to be updated every time > the process's environment is updated. But I don't know what the > impact of that would be performance-wise. Sorry, no advice getting around this, but a thought about why it may have been hard -- it can be a security hole. Given Windows' complex access rights, how would one determine which processes should reasonably have access to another process's environment variables? Maybe Windows decided to punt the issue. (I don't know anything about this at all - as I said, just a thought.) A question: Are there any Windows tools that can do this? If so, you might be able to trace them to find what they do. Regards -- Eliot Moss -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple