Ruby bindings for libhbsdcontrol(3)
Find a file
2024-02-29 22:29:43 -03:00
.bundle First commit 2024-02-29 22:29:43 -03:00
ext/hbsdctl.rb First commit 2024-02-29 22:29:43 -03:00
lib First commit 2024-02-29 22:29:43 -03:00
.gitignore First commit 2024-02-29 22:29:43 -03:00
.projectile First commit 2024-02-29 22:29:43 -03:00
Gemfile First commit 2024-02-29 22:29:43 -03:00
Gemfile.lock First commit 2024-02-29 22:29:43 -03:00
hbsdctl.rb.gemspec First commit 2024-02-29 22:29:43 -03:00
Rakefile.rb First commit 2024-02-29 22:29:43 -03:00
README.md First commit 2024-02-29 22:29:43 -03:00

About

hbsdctl.rb is a Ruby C extension that binds libhbsdcontrol from the hardenedbsd project. Through this library, you can query what features are available and if root, enable or disable those features for given binaries.

Examples

Available features

As a regular user account, you can obtain a list of available features. But to enable or disable those features a superuser account is required:

#!/usr/bin/env ruby
# As a regular user account
require 'hbsdctl'
BSD::Control
  .available_features
  .each do
  print "The ", _1.name, " feature is available", "\n"
end

Enable feature

As a superuser account, you can enable or disable features for a given executable. The example enables the mprotect feature for the emacs binary:

#!/usr/bin/env ruby
# As a root account
require 'hbsdctl'
BSD::Control
  .feature!("mprotect")
  .enable!("/usr/local/bin/emacs")

License

BSD Zero Clause.
See LICENSE.