2 个版本
0.0.2 | 2021 年 7 月 24 日 |
---|---|
0.0.1 | 2021 年 7 月 24 日 |
#480 in 身份验证
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 开发者表示同样的感激之情,因为他们使编码体验如此出色,对 libc 和 nix 开发者对 C FFI 接口的贡献,对 nom 开发者对解析器工作的贡献,以及 Josh Triplett 和 Joshua Nelson 对帮助调试文档构建的帮助。
错误
dosu
仍然是一个非常正在进行中的项目,并且很可能有错误。
尽管我已经尽力确保代码质量,但错误几乎肯定存在。
如果您发现任何错误,请提交问题或提交一个修复程序。
依赖项
~4MB
~83K SLoC