summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2023-04-30 11:47:04 +0800
committerGitHub <noreply@github.com>2023-04-29 23:47:04 -0400
commitd9d3f5234e45e25e3fbb922b65082770e49a58de (patch)
tree2033e78079445dba7f26c821b51d6ceabc505572
parent7d7ba76c08b6f9d1d9f6fdaa945f73c243e260f9 (diff)
downloadgitea-d9d3f5234e45e25e3fbb922b65082770e49a58de.tar.gz
gitea-d9d3f5234e45e25e3fbb922b65082770e49a58de.zip
Fix incorrect CurrentUser check for docker rootless (#24435)
Many users report that 1.19 has a regression bug: the rootless image can't start if the UID is not 1000. https://github.com/go-gitea/gitea/issues/23632#issuecomment-1524589213 https://discourse.gitea.io/t/gitea-doesnt-start-after-update-to-1-19/6920/9 The problem is that the IsRunUserMatchCurrentUser logic is fragile, the "SSH" config is not ready when it executes. This PR is just a quick fix for 1.19. For 1.20, we need a clear and stable solution.
-rw-r--r--modules/setting/setting.go22
1 files changed, 14 insertions, 8 deletions
diff --git a/modules/setting/setting.go b/modules/setting/setting.go
index 87b1e2797f..dfe8dcfa1c 100644
--- a/modules/setting/setting.go
+++ b/modules/setting/setting.go
@@ -282,6 +282,9 @@ func loadCommonSettingsFrom(cfg ConfigProvider) {
loadLogFrom(cfg)
loadServerFrom(cfg)
loadSSHFrom(cfg)
+
+ mustCurrentRunUserMatch(cfg) // it depends on the SSH config, only non-builtin SSH server requires this check
+
loadOAuth2From(cfg)
loadSecurityFrom(cfg)
loadAttachmentFrom(cfg)
@@ -314,14 +317,6 @@ func loadRunModeFrom(rootCfg ConfigProvider) {
RunMode = rootSec.Key("RUN_MODE").MustString("prod")
}
IsProd = strings.EqualFold(RunMode, "prod")
- // Does not check run user when the install lock is off.
- installLock := rootCfg.Section("security").Key("INSTALL_LOCK").MustBool(false)
- if installLock {
- currentUser, match := IsRunUserMatchCurrentUser(RunUser)
- if !match {
- log.Fatal("Expect user '%s' but current user is: %s", RunUser, currentUser)
- }
- }
// check if we run as root
if os.Getuid() == 0 {
@@ -333,6 +328,17 @@ func loadRunModeFrom(rootCfg ConfigProvider) {
}
}
+func mustCurrentRunUserMatch(rootCfg ConfigProvider) {
+ // Does not check run user when the "InstallLock" is off.
+ installLock := rootCfg.Section("security").Key("INSTALL_LOCK").MustBool(false)
+ if installLock {
+ currentUser, match := IsRunUserMatchCurrentUser(RunUser)
+ if !match {
+ log.Fatal("Expect user '%s' but current user is: %s", RunUser, currentUser)
+ }
+ }
+}
+
// CreateOrAppendToCustomConf creates or updates the custom config.
// Use the callback to set individual values.
func CreateOrAppendToCustomConf(purpose string, callback func(cfg *ini.File)) {