mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
Require TUs to explicitly request to overwrite a pkgbase
AUR_PRIVILEGED allows people with privileged AUR accounts to evade the block on non-fast-forward commits. While valid in this case, we should not do so by default, since in at least one case a TU did this without realizing there was an existing package. ( https://aur.archlinux.org/packages/rtmidi/ ) Switch to using allow_overwrite to check for destructive actions. Use .ssh/config "SendEnv" on the TU's side and and sshd_config "AcceptEnv" in the AUR server to specifically request overwrite access. TUs should use: `AUR_OVERWRITE=1 git push --force` Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
This commit is contained in:
parent
243fb92273
commit
c5302d3a33
4 changed files with 11 additions and 1 deletions
1
INSTALL
1
INSTALL
|
@ -76,6 +76,7 @@ read the instructions below.
|
||||||
PasswordAuthentication no
|
PasswordAuthentication no
|
||||||
AuthorizedKeysCommand /usr/local/bin/aurweb-git-auth "%t" "%k"
|
AuthorizedKeysCommand /usr/local/bin/aurweb-git-auth "%t" "%k"
|
||||||
AuthorizedKeysCommandUser aur
|
AuthorizedKeysCommandUser aur
|
||||||
|
AcceptEnv AUR_OVERWRITE
|
||||||
|
|
||||||
9) If you want to enable smart HTTP support with nginx and fcgiwrap, you can
|
9) If you want to enable smart HTTP support with nginx and fcgiwrap, you can
|
||||||
use the following directives:
|
use the following directives:
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import os
|
||||||
import shlex
|
import shlex
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
@ -52,6 +53,7 @@ def main():
|
||||||
env_vars = {
|
env_vars = {
|
||||||
'AUR_USER': user,
|
'AUR_USER': user,
|
||||||
'AUR_PRIVILEGED': '1' if account_type > 1 else '0',
|
'AUR_PRIVILEGED': '1' if account_type > 1 else '0',
|
||||||
|
'AUR_OVERWRITE' : os.environ.get('AUR_OVERWRITE', '0') if account_type > 1 else '0',
|
||||||
}
|
}
|
||||||
key = keytype + ' ' + keytext
|
key = keytype + ' ' + keytext
|
||||||
|
|
||||||
|
|
|
@ -238,6 +238,7 @@ def main():
|
||||||
user = os.environ.get("AUR_USER")
|
user = os.environ.get("AUR_USER")
|
||||||
pkgbase = os.environ.get("AUR_PKGBASE")
|
pkgbase = os.environ.get("AUR_PKGBASE")
|
||||||
privileged = (os.environ.get("AUR_PRIVILEGED", '0') == '1')
|
privileged = (os.environ.get("AUR_PRIVILEGED", '0') == '1')
|
||||||
|
allow_overwrite = (os.environ.get("AUR_OVERWRITE", '0') == '1')
|
||||||
warn_or_die = warn if privileged else die
|
warn_or_die = warn if privileged else die
|
||||||
|
|
||||||
if len(sys.argv) == 2 and sys.argv[1] == "restore":
|
if len(sys.argv) == 2 and sys.argv[1] == "restore":
|
||||||
|
@ -258,7 +259,7 @@ def main():
|
||||||
conn = aurweb.db.Connection()
|
conn = aurweb.db.Connection()
|
||||||
|
|
||||||
# Detect and deny non-fast-forwards.
|
# Detect and deny non-fast-forwards.
|
||||||
if sha1_old != "0" * 40 and not privileged:
|
if sha1_old != "0" * 40 and not allow_overwrite:
|
||||||
walker = repo.walk(sha1_old, pygit2.GIT_SORT_TOPOLOGICAL)
|
walker = repo.walk(sha1_old, pygit2.GIT_SORT_TOPOLOGICAL)
|
||||||
walker.hide(sha1_new)
|
walker.hide(sha1_new)
|
||||||
if next(walker, None) is not None:
|
if next(walker, None) is not None:
|
||||||
|
|
|
@ -33,6 +33,11 @@ users cannot access anything on the server except for the aurweb SSH interface.
|
||||||
The forced command can be configured in the aurweb configuration file and it
|
The forced command can be configured in the aurweb configuration file and it
|
||||||
usually points to the git-serve program.
|
usually points to the git-serve program.
|
||||||
|
|
||||||
|
If SSH has been configured to pass on the AUR_OVERWRITE environment variable
|
||||||
|
(via SendEnv, see ssh_config(5) for details) and the user's account is a
|
||||||
|
registered Trusted User or Developer, this will be passed on to the git-update
|
||||||
|
program in order to enable a non-fast-forward push.
|
||||||
|
|
||||||
The INSTALL file in the top-level directory contains detailed instructions on
|
The INSTALL file in the top-level directory contains detailed instructions on
|
||||||
how to configure sshd(8) to use git-auth for authentication.
|
how to configure sshd(8) to use git-auth for authentication.
|
||||||
|
|
||||||
|
@ -67,6 +72,7 @@ The Git update hook, called git-update, performs several subtasks:
|
||||||
|
|
||||||
* Prevent from creating branches or tags other than master.
|
* Prevent from creating branches or tags other than master.
|
||||||
* Deny non-fast-forwards, except for Trusted Users and Developers.
|
* Deny non-fast-forwards, except for Trusted Users and Developers.
|
||||||
|
* Deny blacklisted packages, except for Trusted Users and Developers.
|
||||||
* Verify each new commit (validate meta data, impose file size limits, ...)
|
* Verify each new commit (validate meta data, impose file size limits, ...)
|
||||||
* Update package base information and package information in the database.
|
* Update package base information and package information in the database.
|
||||||
* Update the named branch and the namespaced HEAD ref of the package.
|
* Update the named branch and the namespaced HEAD ref of the package.
|
||||||
|
|
Loading…
Add table
Reference in a new issue