遇到问题
最近,为了配置gitlab开发环境,就在Ubuntu 16下创建了一个新的账号:gitdev。但是在gitdev账号下,切换其他用户,输入密码就会提示如下错误:
gitdev@amars:/home$ sudo su
gitdev 不在 sudoers 文件中。此事将被报告。
分析原因
究其原因,主要还是用户gitdev没有权限执行sudo。
因为有权限的用户都在/etc/sudoers中,所以只要在/etc/sudoers中添加gitdev用户即可。
解决方法
通过vim打开/etc/sudoers文件:
root@amars:/home# vim /etc/sudoers
如下添加gitdev权限(替换成自己的账号名):
# User privilege specification
root ALL=(ALL:ALL) ALL
gitdev ALL=(ALL:ALL) ALL
注:sudoers的权限是0440,即只有root读权限。在用root或sudo修改完之后,强行保存(wq!)即可。
配置解释
其中,gitdev ALL=(ALL:ALL) [NOPASSWD:ALL] ALL
即为:
授权用户/组 主机 =[(切换到哪些用户或组)] [是否需要输入密码验证] 命令1,命令2,...
字段1 字段2 =[(字段3)] [字段4] 字段5
字段1
表示"将要授权的用户", 比如例子中的gitdev;
字段2
表示允许登录的主机, ALL表示所有; 如果该字段不为ALL,表示授权用户只能在某些机器上登录本服务器来执行sudo命令;
字段3
如果省略, 相当于(root:root),表示可以通过sudo提权到root; 如果为(ALL)或者(ALL:ALL), 表示能够提权到(任意用户:任意用户组);
字段4
的可能取值是NOPASSWD:。请注意NOPASSWD后面带有冒号:。表示执行sudo时可以不需要输入密码。
字段5
是使用逗号分开一系列命令,这些命令就是授权给用户的操作; ALL表示允许所有操作。
详细请参考:sudoers的深入剖析与用户权限控制