cruxpot
2016-02-09 20:34:33 UTC
This is with fabric 1.10.2-1 on a debian linux platform. When I do a get
operation a sudo user with root privs, I can get a single file that is root
read-only such as /etc/shadow. I can also get world-readable directories
that are world readable. However, if I try to retrieve an entire directory
that is root read-only, I get a null result returned from get.
Here is the line of code that causes the issue. I have tried this with both
temp_dir set to a /tmp/subdir and not setting temp_dir at all.
getresult = get(remote_path=self.getfile,
local_path=os.path.join(self.output_path, subdir), use_sudo=True,
temp_dir=self.dirname)
values:
localpath: './folder' , remotepath: '/root', temp_dir: '/tmp/DkoK8aMM'
returned getresult value: '[]'
If I retrieve folder /root/* with the glob instead, I get this error:
Fatal error: get() encountered an exception while downloading '/root/*'
Underlying exception:
Permission denied
This only happens on root read-only directories and I am positive my sudo
is set up correctly as I can run remote commands such as 'id' and I see it
is as root. user is in the wheel group. and like I said I can get root
read-only single files without an issue; only directories are problematic.
Is this a bug? I suppose I could do a workaround by copying files manually
to a tmp directory and then doing a chown and getting them but I thought
the temp_dir option was supposed to do this for me.
operation a sudo user with root privs, I can get a single file that is root
read-only such as /etc/shadow. I can also get world-readable directories
that are world readable. However, if I try to retrieve an entire directory
that is root read-only, I get a null result returned from get.
Here is the line of code that causes the issue. I have tried this with both
temp_dir set to a /tmp/subdir and not setting temp_dir at all.
getresult = get(remote_path=self.getfile,
local_path=os.path.join(self.output_path, subdir), use_sudo=True,
temp_dir=self.dirname)
values:
localpath: './folder' , remotepath: '/root', temp_dir: '/tmp/DkoK8aMM'
returned getresult value: '[]'
If I retrieve folder /root/* with the glob instead, I get this error:
Fatal error: get() encountered an exception while downloading '/root/*'
Underlying exception:
Permission denied
This only happens on root read-only directories and I am positive my sudo
is set up correctly as I can run remote commands such as 'id' and I see it
is as root. user is in the wheel group. and like I said I can get root
read-only single files without an issue; only directories are problematic.
Is this a bug? I suppose I could do a workaround by copying files manually
to a tmp directory and then doing a chown and getting them but I thought
the temp_dir option was supposed to do this for me.