skip allow_superuser in Windows OS (#16629)

As user id is always zero in Windows,
this commit excluded the checking of running as root in Windows.
This commit is contained in:
kaisecheng 2024-11-05 15:37:19 +00:00 committed by GitHub
parent 113585d4a5
commit 5847d77331
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 43 additions and 31 deletions

View file

@ -320,7 +320,7 @@
#
# ------------ Other Settings --------------
#
# Allow or block running Logstash as superuser (default: true)
# Allow or block running Logstash as superuser (default: true). Windows are excluded from the checking
# allow_superuser: false
#
# Where to find custom plugins

View file

@ -454,6 +454,8 @@ class LogStash::Runner < Clamp::StrictCommand
end # def self.main
def running_as_superuser
return if LogStash::Environment.windows? # windows euid always returns 0, skip checking
if Process.euid() == 0
if setting("allow_superuser")
logger.warn("NOTICE: Allowing Logstash to run as superuser is heavily discouraged as it poses a security risk. " +

View file

@ -574,6 +574,15 @@ describe LogStash::Runner do
let(:deprecation_logger_stub) { double("DeprecationLogger").as_null_object }
before(:each) { allow(runner).to receive(:deprecation_logger).and_return(deprecation_logger_stub) }
if LogStash::Environment.windows?
context "unintentionally running logstash as superuser" do
it "runs successfully" do
LogStash::SETTINGS.set("allow_superuser", false)
expect(logger).not_to receive(:fatal)
expect { subject.run(args) }.not_to raise_error
end
end
else
context "unintentionally running logstash as superuser" do
before do
expect(Process).to receive(:euid).and_return(0)
@ -613,3 +622,4 @@ describe LogStash::Runner do
end
end
end
end