和 sudo 说再见——用 doas 替代 sudo

对于多数用 sudo 只是为了不用记 root 密码的个人电脑用户来说,和复杂的 sudo 相比,来自 OpenBSD 的 doas 更加小巧(sudo 编译后的体量是 doas 的五倍),配置更加简单,某种程度上也更加安全(很明显,代码越多,有漏洞的几率就越大,这也是 OpenBSD 的设计所依据的理论)。

http://www.tedunangst.com/flak/post/doas

其作者在因为 sudo 复杂而经常变化配置格式头疼之后设计出了 doas,现在已经被移植到 Linux。

配置格式很简单,要允许 wheel 组的用户用 doas 以 root 权限运行命令,只要用 root 用户在 /etc/doas.conf 写上:

permit :wheel

然后就可以像用 sudo 一样用它了。

另外,给 fish 用户的福利:doas 的补全,保存到 $HOME/.config/fish/completions/doas.fish 就能用。bash 的补全太难写。

#
# Completion for doas
#
complete -c doas -s s -d "Run a login shell"
complete -c doas -s n -d "No interactive mode - fail if would prompt password"
complete -c doas -s u -a "(__fish_complete_users)" -x -d "Run command as user"
complete -c doas -d "Command to run" -x -a "(__fish_complete_subcommand_root -u -g)"
3赞

这网站打不开,Chrome 提示证书有问题

这种工具,关键是要发行版的支持,否则很难推广呀,只能自己折腾玩玩。

换成 http 了。估计他家的证书是自己签的。

应该没用,还是会自动重定向到 HTTPS

~ $ curl -I http://www.tedunangst.com/flak/post/doas
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Fri, 20 Apr 2018 04:34:35 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: https://www.tedunangst.com/flak/post/doas
Proxy-Connection: keep-alive

~ $

我用的是 Gentoo,官方源里面就提供,Arch 也有 doas,Slackware 应该也有,像这些没有默认安装 sudo 的 distro 都可以试试,毕竟不像 Glibc 或者 GCC 一堆软件离开就不能编译,没有什么软件必须要用到 sudo。这个也已经是 OpenBSD 的标配了。做移植的目的本身也是为了推广。

换个浏览器?比如 W3M 应该不会做 ssl 检查。用 Safari 也是可以选择继续访问的。

改天Ubuntu上试试。个人使用应该没问题,Server上还是算了,公司也不允许

嗯,在服务器上用的话 doas 功能还是有点缺乏。

doas 解决了什么 sudo 解决不了的问题?

另外我不是很理解 sudo 哪里复杂了。

说的可能是配置比较复杂

  1. sudo 配置语法在各版本间不统一的问题
  2. 由于 sudo 的代码规模产生的潜在安全问题。

大致搜了下 doas , 这个帖子讨论得比较多。

这个人问了安全方面的问题: doas 看起来不错,但是是谁在做porting的工作?是官方吗? 他举例说当初 LibreSSL 就是第三方做的porting, 结果引入了vulnerabilities

底下有人回复:

Completely unofficial, no involvement or review from upstream.

我也在github上搜了 doas, 不止一个,然而没有一个过50 star的。再看更新时间,星星多的repo, 都有一年多没维护了,有一个repo两天前还在更新,然而只有一星。

我比较关心的问题What does this program do that su or sudo doesn’t? 被 这个人 问了,得到的回答是doas 文档更清晰,doas速度更快等。

目前来看 doas 的 porting 还处于非常早期的阶段,而且是第三方志愿者在做,但是还没有形成一个核心repository,目前存在的repo, 哪个质量好,哪个会被长期维护,都不得而知。 那个 reddit post 推荐的是这个 这个repo, 然而,它上次更新是去年10月,并且连 README 都没,不像是个严肃的repo.

如果 doas 想替代 sudo, 还有很长的路要走。

1赞

Gentoo 和 Void 的官方源以及 Arch AUR 用的都是这个。最近一次更新是 18 天。

你给的那个看 man page 是 OpenBSD 版本的,并不能给 Linux 用。

1赞

如果仅仅是嫌弃 sudo 配置复杂,也可以考虑使用另一个工具(不知道有没有)来做简化工作,就想 UFW 之于 iptables 一样,并不需要完全取代。

最近sudo爆出来的CVE太多了,有点理解doas(linuxport叫opendoas)的初衷了。

服务器端对这些漏洞比较敏感,但doas看样子也没有稳定到可以放心在服务器上跑;而桌面用户一般没必要担心sudo的漏洞,所以不需要换doas……这样看下来感觉比较鸡肋。