|
|
dirmode = 02070 | dirmode = 02070 |
filemode = 060 | filemode = 060 |
modemask = 02 | modemask = 02 |
|
restrict = mysettings.get("PORTAGE_RESTRICT","").split() |
|
from portage_data import secpass |
|
droppriv = secpass >= 2 and \ |
|
"userpriv" in mysettings.features and \ |
|
"userpriv" not in restrict |
for myfeature, kwargs in features_dirs.iteritems(): | for myfeature, kwargs in features_dirs.iteritems(): |
if myfeature in mysettings.features: | if myfeature in mysettings.features: |
basedir = mysettings[kwargs["basedir_var"]] | basedir = mysettings[kwargs["basedir_var"]] |
|
|
# Generally, we only want to apply permissions for | # Generally, we only want to apply permissions for |
# initial creation. Otherwise, we don't know exactly what | # initial creation. Otherwise, we don't know exactly what |
# permissions the user wants, so should leave them as-is. | # permissions the user wants, so should leave them as-is. |
if modified or kwargs["always_recurse"]: |
droppriv_fix = False |
|
if droppriv: |
|
st = os.stat(mydir) |
|
if st.st_gid != portage_gid or \ |
|
not stat.S_IMODE(st.st_mode) & dirmode: |
|
droppriv_fix = True |
|
if modified or kwargs["always_recurse"] or droppriv_fix: |
if modified: | if modified: |
writemsg("Adjusting permissions recursively: '%s'\n" % mydir, | writemsg("Adjusting permissions recursively: '%s'\n" % mydir, |
noiselevel=-1) | noiselevel=-1) |