fab-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Fab-user] Running fabric against solaris 10 and doing su


From: cruxpot
Subject: [Fab-user] Running fabric against solaris 10 and doing su
Date: Thu, 11 Feb 2016 18:52:42 -0600

Hello,

I am running latest fabric against a Solaris 10 host and I am running into an issue with the way fabric puts shell commands together when changing the sudo_prompt to "su -c". This seems to work fine in Linux, but on Solaris, the root user's login shell is set to /sbin/sh by default and "sh -c" is prepended to the commands when looking at the system.

env.shell is set to "bash -c"

In my code, it looks like this. I log in as an unprivileged user.

with settings(password=self.su_password, passwords={},
                                sudo_prefix="su %s -c " % self.su_user, sudo_prompt=self.su_prompt):
                                result = sudo(command)

When I do a ps listing, I see something like this but I took out the cd and PATH setting parts of the command for brevity:
sh -c su root -c  bash -c "id"

When you run this, the second -c parameter does not get recognized, and it never actually executes bash at all and so you just get a root prompt.

$ sh -c su root -c  bash -c "id"
Password:
#

Here is what it does in fabric:
2016-02-11 19:18:42,890 - root - DEBUG - Executing command with 'su' credentials from user user.
address@hidden sudo: id
address@hidden out: Could not chdir to home directory /home/user: No such file or directory
address@hidden out: Password:
address@hidden out: #

It breaks into a root shell where I can interactively type commands. :)

This sh -c stuff works however with two types of quotes on the command line to properly escape which fabric isn't doing in this case:
sh -c 'su root -c "bash -c id"'
Password:
uid=0(root) gid=0(root)

Is there a way to control the quotes or not use "sh -c" in front of the fabric commands in Solaris 10? Changing root's shell did not help. Someone said that the SSH daemon may be doing executing sh -c. This is a stock Solaris 10 build on a SPARC platform but x86 is probably the same. I am trying to do this without altering the system configuration, only fabric's settings.

Thanks.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]