Make homedir permissions check optional
parent
5025df1661
commit
77c6c3d0e5
|
@ -132,7 +132,7 @@ class GPGBase(object):
|
||||||
|
|
||||||
def __init__(self, binary=None, home=None, keyring=None, secring=None,
|
def __init__(self, binary=None, home=None, keyring=None, secring=None,
|
||||||
use_agent=False, default_preference_list=None,
|
use_agent=False, default_preference_list=None,
|
||||||
verbose=False, options=None):
|
ignore_homedir_permissions=False, verbose=False, options=None):
|
||||||
"""Create a ``GPGBase``.
|
"""Create a ``GPGBase``.
|
||||||
|
|
||||||
This class is used to set up properties for controlling the behaviour
|
This class is used to set up properties for controlling the behaviour
|
||||||
|
@ -155,6 +155,7 @@ class GPGBase(object):
|
||||||
:ivar str secring: The filename in **homedir** to use as the keyring
|
:ivar str secring: The filename in **homedir** to use as the keyring
|
||||||
file for secret keys.
|
file for secret keys.
|
||||||
"""
|
"""
|
||||||
|
self.ignore_homedir_permissions = ignore_homedir_permissions
|
||||||
self.binary = _util._find_binary(binary)
|
self.binary = _util._find_binary(binary)
|
||||||
self.homedir = os.path.expanduser(home) if home else _util._conf
|
self.homedir = os.path.expanduser(home) if home else _util._conf
|
||||||
pub = _parsers._fix_unsafe(keyring) if keyring else 'pubring.gpg'
|
pub = _parsers._fix_unsafe(keyring) if keyring else 'pubring.gpg'
|
||||||
|
@ -398,18 +399,21 @@ class GPGBase(object):
|
||||||
log.debug("GPGBase._homedir_setter(): Check existence of '%s'" % hd)
|
log.debug("GPGBase._homedir_setter(): Check existence of '%s'" % hd)
|
||||||
_util._create_if_necessary(hd)
|
_util._create_if_necessary(hd)
|
||||||
|
|
||||||
try:
|
if self.ignore_homedir_permissions:
|
||||||
log.debug("GPGBase._homedir_setter(): checking permissions")
|
|
||||||
assert _util._has_readwrite(hd), \
|
|
||||||
"Homedir '%s' needs read/write permissions" % hd
|
|
||||||
except AssertionError as ae:
|
|
||||||
msg = ("Unable to set '%s' as GnuPG homedir" % directory)
|
|
||||||
log.debug("GPGBase.homedir.setter(): %s" % msg)
|
|
||||||
log.debug(str(ae))
|
|
||||||
raise RuntimeError(str(ae))
|
|
||||||
else:
|
|
||||||
log.info("Setting homedir to '%s'" % hd)
|
|
||||||
self._homedir = hd
|
self._homedir = hd
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
log.debug("GPGBase._homedir_setter(): checking permissions")
|
||||||
|
assert _util._has_readwrite(hd), \
|
||||||
|
"Homedir '%s' needs read/write permissions" % hd
|
||||||
|
except AssertionError as ae:
|
||||||
|
msg = ("Unable to set '%s' as GnuPG homedir" % directory)
|
||||||
|
log.debug("GPGBase.homedir.setter(): %s" % msg)
|
||||||
|
log.debug(str(ae))
|
||||||
|
raise RuntimeError(str(ae))
|
||||||
|
else:
|
||||||
|
log.info("Setting homedir to '%s'" % hd)
|
||||||
|
self._homedir = hd
|
||||||
|
|
||||||
homedir = _util.InheritableProperty(_homedir_getter, _homedir_setter)
|
homedir = _util.InheritableProperty(_homedir_getter, _homedir_setter)
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,7 @@ class GPG(GPGBase):
|
||||||
|
|
||||||
def __init__(self, binary=None, homedir=None, verbose=False,
|
def __init__(self, binary=None, homedir=None, verbose=False,
|
||||||
use_agent=False, keyring=None, secring=None,
|
use_agent=False, keyring=None, secring=None,
|
||||||
options=None):
|
ignore_homedir_permissions=False, options=None):
|
||||||
"""Initialize a GnuPG process wrapper.
|
"""Initialize a GnuPG process wrapper.
|
||||||
|
|
||||||
:param str binary: Name for GnuPG binary executable. If the absolute
|
:param str binary: Name for GnuPG binary executable. If the absolute
|
||||||
|
@ -73,6 +73,10 @@ class GPG(GPGBase):
|
||||||
and private keyrings. Default is whatever GnuPG
|
and private keyrings. Default is whatever GnuPG
|
||||||
defaults to.
|
defaults to.
|
||||||
|
|
||||||
|
:type ignore_homedir_permissions: :obj:`bool`
|
||||||
|
:param ignore_homedir_permissions: If true, bypass check that homedir
|
||||||
|
be writable.
|
||||||
|
|
||||||
:type verbose: :obj:`str` or :obj:`int` or :obj:`bool`
|
:type verbose: :obj:`str` or :obj:`int` or :obj:`bool`
|
||||||
:param verbose: String or numeric value to pass to GnuPG's
|
:param verbose: String or numeric value to pass to GnuPG's
|
||||||
``--debug-level`` option. See the GnuPG man page for
|
``--debug-level`` option. See the GnuPG man page for
|
||||||
|
@ -117,13 +121,16 @@ class GPG(GPGBase):
|
||||||
secring=secring,
|
secring=secring,
|
||||||
options=options,
|
options=options,
|
||||||
verbose=verbose,
|
verbose=verbose,
|
||||||
use_agent=use_agent,)
|
use_agent=use_agent,
|
||||||
|
ignore_homedir_permissions=ignore_homedir_permissions,
|
||||||
|
)
|
||||||
|
|
||||||
log.info(textwrap.dedent("""
|
log.info(textwrap.dedent("""
|
||||||
Initialised settings:
|
Initialised settings:
|
||||||
binary: %s
|
binary: %s
|
||||||
binary version: %s
|
binary version: %s
|
||||||
homedir: %s
|
homedir: %s
|
||||||
|
ignore_homedir_permissions: %s
|
||||||
keyring: %s
|
keyring: %s
|
||||||
secring: %s
|
secring: %s
|
||||||
default_preference_list: %s
|
default_preference_list: %s
|
||||||
|
@ -134,6 +141,7 @@ class GPG(GPGBase):
|
||||||
""" % (self.binary,
|
""" % (self.binary,
|
||||||
self.binary_version,
|
self.binary_version,
|
||||||
self.homedir,
|
self.homedir,
|
||||||
|
self.ignore_homedir_permissions,
|
||||||
self.keyring,
|
self.keyring,
|
||||||
self.secring,
|
self.secring,
|
||||||
self.default_preference_list,
|
self.default_preference_list,
|
||||||
|
|
Loading…
Reference in New Issue