From: Robert Klemme Date: 2009-05-25T02:40:11+09:00 Subject: Re: Controlling processes and what to "feed" other processes On 24.05.2009 18:59, Marc Heiler wrote: > But - since I am using ruby scripts for fetching source and > compiling it already, i wondered if there was a way to completely > control processes like the above. > In other words, my "watchguard" script would first check if a > command is valid, before it tries to execute it (or feed to make, > or some other binary). > > In the above example it would simply change: > > install -m 644 -g root -o root $f /usr/include/sound > > to > > install -m 644 -g 0 -o 0 $f /usr/include/sound > > This seems like a trivial thing to do, although I have no > real idea how to do this at all. > > PS: I already have a somewhat buggyruby script which actually > fixes incorrect Makefiles, but I thought that a ruby script > which can actually sanitize the input "on-the-fly" and correct > mistakes would be smarter and more powerful. So I am at > least in theory curious how to approach this problem. For full control you would have to intercept system calls because you would need to manipulate files while they are read. It might be feasible but that would certainly very OS specific and it might not work on all operating systems. If you know that all programs are started via a shell you could try to modify environment variable SHELL to point to a specific program which would be able to interpret the general syntax of the shell you are using and could identify files via their names (e.g. Makefile) and then do some manipulations. However, that approach is not without issues and you will certainly not be able to make it bullet proof. Yet another solution: replace "make" with something you have written or at least have control over and which treats "root" properly. I'm curios what others will come up with. Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/