#sudo #bsd #doas

bin+lib dosu

Rust 版本的 OpenBSD 的 doas

2 个版本

0.0.2 2021 年 7 月 24 日
0.0.1 2021 年 7 月 24 日

#480 in 身份验证

BSD-2-Clause 许可协议

42KB
1K SLoC

OpenBSD 的 doas 在 Rust 中的大幅重构

主要基于 Ted Unangst 的作品。

关于项目

dosu 不是一个官方的 OpenBSD 项目/端口!

尽管我已经尽力确保代码质量,但可能仍然有遗漏的地方。

到目前为止,这是一个没有同行评审的个人开发项目,处于开发早期阶段。

请谨慎使用 dosu

构建和安装

下载和构建 dosu

:$ git clone https://github.com/orvij/dosu
:$ cd dosu
:$ cargo build --release

## If you want to play around with dosu before installing,
## you need to change ownership to root and setuid

:# chown root:bin target/release/dosu
:# chmod 4555 target/release/dosu

安装 dosu

## Basic install script to make dosu setuid, and install to the correct path
## Proper "make install" script is WIP, and current script is non-portable

:$ ./install 
:$ ./install /usr/local/bin

运行 dosu 对使用过 doas 的人来说应该非常熟悉

:$ dosu ls
:$ dosu -s
:$ dosu -C /etc/doas.conf
:$ dosu du -a
:$ dosu -h

移植到非 OpenBSD 系统

OpenDoas 中的工作类似,这个项目的长期目标是尽可能多地移植到各种系统。

目前,仅支持 OpenBSD。下一个目标操作系统(不分先后):

  • NetBSD
  • DragonflyBSD
  • FreeBSD
  • Linux
  • Windows?
  • MacOS?
  • 手机操作系统?

如果您希望 dosu 支持某个操作系统,请提交问题或提交一些代码,它将被添加到列表中。

减少对不安全代码的依赖

dosu 需要与操作系统交互,因为它基本上只是围绕几个系统调用的胶水代码。

在主代码和依赖中,有很多地方调用 C FFI 是不可避免的。

长期目标是尽可能地减少 unsafe。谁知道呢,也许有一天所有系统调用都会在 Rust 中 😉

致谢

非常感谢 Ted Unangst 和 OpenBSD 开发者提供了高质量的代码和文档。在移植过程中非常有帮助,并在调试中节省了无数小时。

对 Rust 开发者表示同样的感激之情,因为他们使编码体验如此出色,对 libcnix 开发者对 C FFI 接口的贡献,对 nom 开发者对解析器工作的贡献,以及 Josh Triplett 和 Joshua Nelson 对帮助调试文档构建的帮助。

错误

dosu 仍然是一个非常正在进行中的项目,并且很可能有错误。

尽管我已经尽力确保代码质量,但错误几乎肯定存在。

如果您发现任何错误,请提交问题或提交一个修复程序。

依赖项

~4MB
~83K SLoC