-
-
Notifications
You must be signed in to change notification settings - Fork 5.8k
Add protection to disable Gitea when run as root #17168
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 3 commits
9137b0c
9834049
4c6e567
4e601f2
45db44c
8c3c6d6
cbe7f2e
79dc6b9
717f54c
e7a4c38
ad3c03e
c06e58a
3b8dbf6
4fd6aa3
5868169
eb17ed1
9584001
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -898,6 +898,9 @@ func NewContext() { | |
} | ||
|
||
RunUser = Cfg.Section("").Key("RUN_USER").MustString(user.CurrentUsername()) | ||
// The following an unsafe option, purposely left out of documentation. Please do not run Gitea as root. It will only cause future headaches. | ||
// Please don't use root as a bandaid to "fix" something that is brokenn, instead the broken thing should instead be fixed properly. | ||
techknowlogick marked this conversation as resolved.
Show resolved
Hide resolved
|
||
unsafeAllowRunAsRoot := Cfg.Section("").Key("I_AM_BEING_UNSAFE_RUNNING_AS_ROOT").MustBool(false) | ||
RunMode = Cfg.Section("").Key("RUN_MODE").MustString("prod") | ||
// Does not check run user when the install lock is off. | ||
if InstallLock { | ||
|
@@ -907,6 +910,14 @@ func NewContext() { | |
} | ||
} | ||
|
||
if RunUser == "root" { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can we guarantee for every supported OS that the root account will be called "root"? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We can't entirely (Windows is the case where it is certain to not be "root"), however windows is out of scope of this PR. This purpose of this PR wasn't to be exhaustive of all the possibilities, just to prevent me from being lazy and running things as root where I could mess up file permissions 😆 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'd stick a GOOS check here and exclude dozers from this check. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. we dont need to check goos on windows we will get a -1 |
||
if !unsafeAllowRunAsRoot { | ||
// Special thanks to VLC which inspired the wording of this messaging. | ||
6543 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
log.Fatal("Gitea is not supposed to be run as root. Sorry. If you need to use privileged TCP ports please instead use setcap and the `cap_net_bind_service` permission") | ||
techknowlogick marked this conversation as resolved.
Show resolved
Hide resolved
|
||
} | ||
log.Warn("You are running Gitea using the root user, and have purposely chosen to skip built-in protections around this. You have been warned against this.") | ||
6543 marked this conversation as resolved.
Show resolved
Hide resolved
6543 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
} | ||
|
||
SSH.BuiltinServerUser = Cfg.Section("server").Key("BUILTIN_SSH_SERVER_USER").MustString(RunUser) | ||
|
||
newRepository() | ||
|
Uh oh!
There was an error while loading. Please reload this page.