OpenBSD上doas用法简介

OpenBSD上doas用法简介

doas是OpenBSD 5.8上开始出现的一个程序,用来代替sudo。相比sudo,它的好处是配置简单明了。坏处嘛我还不知道,估计功能上没有sudo那么全面吧。因为我都是用sudo的一些基本功能(指定那些用户可以切换到root),所以对sudo的优势了解并不全面。另外就是,doas的配置完全不兼容sudo,且目前只有OpenBSD上才有。 doas的配置文件是/etc/doas.conf,配置规则如下

一个规则以permit(允许)或deny(拒绝)开头,  接下来是一些选项(options,非必须),然后是配置的用户名或用户组(identity部分),再接下来是这个用户(identity部分)可以(或不允许)以哪个用户(target)的身份来执行命令,用as关键词来表示。这也是可选的。如果省略,表示这个用户(identity)可以以任意用户的身份执行后面cmd关键词指定的命令;   cmd关键词用来指定允许(或拒绝)的命令,args关键词用来指定命令的参数; cmd 和args都是可选的。省略的话表示任意命令和参数。 选项(options)部分有一下两个选择: a. nopass , 表示用户无需输入密码 b. keepenv  { [ variables … ] },表示用户的使用环境将会被保持,如果不指定的话,默认是会重置的(除了这些变量: DISPLAY, HOME, LOGNAME, MAIL, PATH, TERM, USER and USERNAME.)。keepenv还可以指定具体那些变量被保持。将需要保持的变量名称放在大括号中,多个时以空格分开。 组以冒号加上组名称来表示,如 :wheel。 注释以#开始,直至该行结束。   下面再以示例来说明一下。 比如我们常用的让一个用户(如acheng)切换到root而无需知道root密码的配置:

这个规则让acheng用户可以以root身份执行任何命令,包括 ’su – ‘。 但是需要输入知己的密码。如果连这个也想省略掉,那就加上nopass选项:

如果想要这个wheel组的成员都可以这样做,规则如下:

  规则配置完成后,可以用doas的‘-C’参数来验证一下是否有错误:

  在使用时,acheng用户可以使用下面的命令来切换到root:

或者运行其它命令:

  如果需要以root用户之外的其它用户身份来执行命令,则要使用doas的 ‘-u username’参数。 当然,上面的例子中,只允许acheng切换到root用户,如果把其中的’as root’部分省略掉的话,则表示acheng可以以任意用户的身份执行命令。 最后,我们看一下doas.conf的手册中给出的几个例子: The following example permits users in group wsrc to build ports, wheel to…

Read More