Am 15.09.2011 um 16:31 schrieb Blosch, Edwin L:

> I think one has to quote everything after the gid, sg 25000 "ls -l" should 
> work.
> 
> I tried something similar to the orted wrapper but also couldn't get it to 
> work, but I didn't have time yet to dig into it.  Might be worth trying it 
> with both quotes:
> #!/bin/sh
> exec sg 25000 "orted ${@}"

Thx for the reply.

It looks like it depends on the Version of `sg`. On Scientific Linux I *must* 
use the group name, no go with the group id:

$ sg 537 ls
unknown group: 537

On openSUSE you can use either of them.

The version on Scientific Linux accepts any number of arguments, but all except 
the first will be ignored:

$ sg my_group "echo" "1" "2" "3"


(Yes, an empty line only) while on openSUSE:

$ sg 24000 "echo" "1" "2" "3"
$ sg: Too many arguments.
Try `sg --help' or `sg --usage' for more information.


==

This is now going away from Open MPI but anyway:

What is indeed working is: sg 25000 "ls -l"

But it still fails for:

$ sg 24000 "./tt.sh ${@}"
sg: Too many arguments.

I works again if I use * in place of a @, but this will change how the bash 
will assemble the arguments:

$ set "11 12" "21 22"
$ echo $1
11 12
$ echo $2
21 22
$ sg 24000 "./tt.sh ${*}"
12
11

What I expect is:

$ ./tt.sh "${@}"
21 22
11 12

While the script tt.sh lists just:

#!/bin/sh
echo $2
echo $1

-- Reuti


> Also, Ralph, 
> 
> I think I skipped one step of logic in asking you yesterday to consider 
> adding the capability to pass a multi-word argument to orte_launch_agent.  
> This itself seems like it could have uses, so I like the idea.  But what I'd 
> like to have, in the end, is the possibility to launch all processes with the 
> same group or gid (for the situation where all hosts share the same 
> passwd/group database), without relying on any launcher other than rsh/ssh.  
> I think it should be possible.  The best way to do this might not be the idea 
> of using sg, so perhaps this should be discussed first before you spend time 
> adding multi-word support for the orte_launch_agent MCA parameter.  But if 
> you do it I will certainly test it.
> 
> Thanks again
> 
> 
> Ed
> 
> -----Original Message-----
> From: users-boun...@open-mpi.org [mailto:users-boun...@open-mpi.org] On 
> Behalf Of Reuti
> Sent: Thursday, September 15, 2011 4:37 AM
> To: Open MPI Users
> Subject: Re: [OMPI users] EXTERNAL: Re: Can you set the gid of the processes 
> created by mpirun?
> 
> Am 15.09.2011 um 01:15 schrieb Blosch, Edwin L:
> 
>> I would appreciate trying to fix the multi-word argument to 
>> orte_launch_agent, unless you've already fixed it in a later series in which 
>> case I could update.  My workaround with the setuid applied to a copied 
>> executable doesn't work for other applications that run on our clusters ( I 
>> mean their job scripts would also have to be modified similarly).
> 
> I played around with `sg` and it looks like having some pitfalls:
> 
> $ sg 25000 ls -l
> 
> The -l will go to `sg`, even double quotes fo " and ' don't help and there is 
> no --:
> 
> $ sg 2600 ls "'-l'"
> 
> gives an error too.
> 
> (I was about to suggest an orted wrapper doing: 
> 
> #!/bin/sh
> exec sg 25000 orted ${@}"
> 
> but it failed.)
> 
> 
>> I think OpenMPI should be able to launch all processes with the same uid and 
>> gid even when the user has launched the job while using one of his secondary 
>> groups.  Whether it should be a change request or bug (unexpected, 
>> counter-intuitive), I'll leave that to your judgment.
> 
> Yes, but for now the "username" is used, not the "uid" - right? So it could 
> have a different uid/gid on the machines, but with the new feature they must 
> be the same. Okay, in a cluster they are most likely unique across all 
> machines anyway. But just to note as a side effect.
> 
> -- Reuti
> 
> 
>> Thank you again for the support
>> 
>> 
>> 
>> From: users-boun...@open-mpi.org [mailto:users-boun...@open-mpi.org] On 
>> Behalf Of Ralph Castain
>> Sent: Wednesday, September 14, 2011 5:10 PM
>> To: Open MPI Users
>> Subject: Re: [OMPI users] EXTERNAL: Re: Can you set the gid of the processes 
>> created by mpirun?
>> 
>> Hi Ed
>> 
>> I finally had some time to dig around a little. I believe we could make this 
>> work if I fix the multi-word cmd line param issue. Either "newgrp" or "sg" 
>> should resolve the problem - both are user-level cmds.
>> 
>> Up to you - let me know if you want me to pursue this.
>> Ralph
>> 
>> 
>> On Sep 14, 2011, at 3:31 PM, Blosch, Edwin L wrote:
>> 
>> 
>> Thank you -  I did pursue this kind of workaround, and it worked, but you'll 
>> be happy to know that nothing had to be owned by root.
>> 
>> ASIDE ----
>> Just to remind:  The job script is a shell script that invokes mpirun; the 
>> job script itself is run with as the correct user, but the group id may be 
>> changed to whatever the user requests of the job-scheduling system.  I think 
>> it may not be uncommon to have jobs that request a specific Unix group, for 
>> many reasons, but in our case the group is an input for the scheduler's 
>> prioritization policy.
>> 
>> Outcome: rank 0 runs user:group2 as the user requested, but the launched 
>> child processes run  user:group1  where group 1 is the user's primary group. 
>>  The peculiarity of this application is that each of the processes writes a 
>> file to disk, so the resulting group ownership of rank 0 files is group2, 
>> but the group ownership of all other ranks' files is group1.  That was the 
>> original problem I'm trying to work around.
>> --- END ASIDE
>> 
>> Fortunately for me, there is another peculiarity of this application -- the 
>> executable gets copied out to /tmp (local space) on each of the hosts to be 
>> used in the job.  We found this helped prevent some crashes during test 
>> phases where an executable gets overwritten while in use.  Definitely a 
>> special behavior.  But as a result of this peculiarity, the mpirun command 
>> ends up launching the copied executable, and I took advantage of that.
>> 
>> I had the job script do chown user:group2 on the copied executables and then 
>> chmod 6711, and then I observed that the child processes ran as user:group2, 
>> same as the rank 0 process, so the files they created had the desired group 
>> ownership.
>> 
>> I will explore Reuti's guidance as well.
>> 
>> Thank you
>> 
>> 
>> From: users-boun...@open-mpi.org [mailto:users-boun...@open-mpi.org] On 
>> Behalf Of Randall Svancara
>> Sent: Wednesday, September 14, 2011 3:07 PM
>> To: Open MPI Users
>> Subject: Re: [OMPI users] EXTERNAL: Re: Can you set the gid of the processes 
>> created by mpirun?
>> 
>> You could set the setuid bit on the application and chown it to root??  It 
>> is about as secure as anything else that has been described thus far.  As a 
>> system admin, I cringe at the thought of anything that would allow something 
>> to run as someone else,  so there would have to be a pretty good 
>> justification for such unique use case as yours.  
>> 
>> Randall
>> 
>> On Wed, Sep 14, 2011 at 12:56 PM, Reuti <re...@staff.uni-marburg.de> wrote:
>> Am 14.09.2011 um 19:02 schrieb Blosch, Edwin L:
>> 
>>> Thanks for trying.
>>> 
>>> Do you feel that this is an impossible request without the assistance of 
>>> some process running as root, for example, as Reuti mentioned, the daemons 
>>> of a job scheduler?  Or are you saying it will just not be as 
>>> straightforward as calling setgid as you had hoped?
>>> 
>>> Also, do you think there is a way I could make use of the sg command below? 
>>>  Perhaps there is a way to have the rsh/ssh launcher start the application 
>>> processes with a command like 'sg <group> <executable name>'?
>> 
>> What about a half-tight integration (or call it: classic tight integration), 
>> i.e. no recompilation necessary?
>> 
>> - setup your mpiexec call in the jobscript to use a plain rsh for the remote 
>> startup (no path given): -mca plm_rsh_agent rsh
>> 
>> - the PE of SGE needs the argument -catch_rsh in start_proc_args and the 
>> supplied script in $SGE_ROOT/mpi/startmpi.sh
>> 
>> (SGE will create a symbolic link in $TMPDIR therein [which will be called 
>> first this way] to the rsh-wrapper in $SGE_ROOT/mpi [pitfall: some 
>> applications need a -V to be added in the lines woth "qrsh", i.e. "qrsh 
>> -inherit -V ..." to send all environment variables to the slaves])
>> 
>> - what is your setting of qrsh_daemon/qrsh_command in `qconf -sconf`? This 
>> will then be used finally to reach the node and should be builtin or point 
>> to the SGE supplied rsh/rshd (no rshd necessary to install, no rshd is 
>> running all the time, no rshd will be started by xinet.d or alike)
>> 
>> - like you do already: switch off the built-in SGE starter in your mpiexec 
>> call: -mca plm_rsh_disable_qrsh 1
>> 
>> -- Reuti
>> 
>> PS: To avoid misunderstandings: you could also set "-mca plm_rsh_agent 
>> foobar" and in $SGE_ROOT/mpi/startmpi.sh you change it to create a symbolic 
>> link called "foobar " in $TMPDIR. It's just a name at this stage of startup.
>> 
>> 
>>> Ed
>>> 
>>> 
>>> NAME
>>>     sg - execute command as different group ID
>>> 
>>> SYNOPSIS
>>>     sg [-] [group [-c ] command]
>>> 
>>> DESCRIPTION
>>>     The sg command works similar to newgrp but accepts a command. The
>>>     command will be executed with the /bin/sh shell. With most shells you
>>>     may run sg from, you need to enclose multi-word commands in quotes.
>>>     Another difference between newgrp and sg is that some shells treat
>>>     newgrp specially, replacing themselves with a new instance of a shell
>>>     that newgrp creates. This doesn't happen with sg, so upon exit from a
>>>     sg command you are returned to your previous group ID.
>>> 
>>> 
>>> 
>>> 
>>> -----Original Message-----
>>> From: users-boun...@open-mpi.org [mailto:users-boun...@open-mpi.org] On 
>>> Behalf Of Ralph Castain
>>> Sent: Wednesday, September 14, 2011 11:33 AM
>>> To: Open MPI Users
>>> Subject: Re: [OMPI users] EXTERNAL: Re: Can you set the gid of the 
>>> processes created by mpirun?
>>> 
>>> 
>>> On Sep 14, 2011, at 9:39 AM, Blosch, Edwin L wrote:
>>> 
>>>> Thanks, Ralph,
>>>> 
>>>> I get the failure messages, unfortunately:
>>>> 
>>>> setgid FAILED
>>>> setgid FAILED
>>>> setgid FAILED
>>>> 
>>>> I actually had attempted to call setgid from within the application 
>>>> previously, which looks similar to what you've done, but it failed. That 
>>>> was when I initiated the post to the mailing list. My conclusion, a guess 
>>>> really, was that Linux would not let me setgid from within my program 
>>>> because I was not root.
>>> 
>>> I was afraid of that - the documentation seemed to indicate that would be 
>>> the case, but I figured it was worth a quick try. Sorry I can't be of help.
>>> 
>>> 
>>>> 
>>>> 
>>>> -----Original Message-----
>>>> From: users-boun...@open-mpi.org [mailto:users-boun...@open-mpi.org] On 
>>>> Behalf Of Ralph Castain
>>>> Sent: Wednesday, September 14, 2011 8:15 AM
>>>> To: Open MPI Users
>>>> Subject: Re: [OMPI users] EXTERNAL: Re: Can you set the gid of the 
>>>> processes created by mpirun?
>>>> 
>>>> The attached should set the gid of the remote daemons (and their children) 
>>>> to the gid of mpirun. No cmd line option or anything is required - it will 
>>>> just always do it.
>>>> 
>>>> Would you mind giving it a try?
>>>> 
>>>> Please let me know if/how it works.
>>>> 
>>>> _______________________________________________
>>>> users mailing list
>>>> us...@open-mpi.org
>>>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>>> 
>>> 
>>> _______________________________________________
>>> users mailing list
>>> us...@open-mpi.org
>>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>>> _______________________________________________
>>> users mailing list
>>> us...@open-mpi.org
>>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>> 
>> 
>> _______________________________________________
>> users mailing list
>> us...@open-mpi.org
>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>> 
>> 
>> 
>> -- 
>> Randall Svancara
>> http://knowyourlinux.com/
>> _______________________________________________
>> users mailing list
>> us...@open-mpi.org
>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>> 
>> _______________________________________________
>> users mailing list
>> us...@open-mpi.org
>> http://www.open-mpi.org/mailman/listinfo.cgi/users
> 
> 
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users


Reply via email to