在管理服务器的时候往往会有多个人,而管理服务器的时候往往会需要管理员权限,比如重启服务,查看服务状态,查看系统日志什么的。如果直接给所有人使用root账号非常危险,没事也不要用root账号登陆。如果直接把一个普通账号加到sudo组里面也不太合适,那个直接用root账号没啥区别了。
正确的玩法是,把用户加到sudo组里面,然后只给她某一些必要的管理员权限的指令。比如systemctrl之类的。
修改这个文件可以指定哪些用户可以使用sudo执行那些命令。
语法,挺纠结的,不过如果你要做的就是让某些用户在这一台主机上可以以管理员执行某些指令,还是很简单的
USER: 被授权的那个普通用户名 HOSTNAME: 这条指令有效的主机的hostname COMMAND: 这里制定这个用户能运行真么命令,可以是某个可执行程序的路径。这里还可以用通配符来指定用户能带的参数,还是很强的。
举个例子:
root ALL=(ALL:ALL) ALL
root ALL=(ALL:ALL) ALL
root这个就是这条规则的用户
demo ALL=(ALL:ALL) ALL
第一个ALL代表所有的主机都有效,一般不改这个
demo ALL=(ALL:ALL) ALL
这个表示这个用户可以以任何用户的身份来执行这个指令
demo ALL=(ALL:ALL) ALL
这个表示这个用户可以以任何组的身份来执行这个指令
demo ALL=(ALL:ALL) ALL
最后这个ALL表示这个用户可以执行任何指令
我门在看个实际的:
someuser ALL=/bin/systemctl restart business-*.service
someuser ALL=/bin/systemctl stop business-*.service
someuser ALL=/bin/systemctl status business-*.service
这个就是允许someuser这个用户,在这台主机上,以root的身份运行这几个指令,其中*是通配符。这里没有指定用户和组,就是默认的root。
这里要说一下阿里云的主机,如果开启了密码登录,是不能自己去在命令行下面设置ssh public key认证的。然后你在web上设置了ssh public key,这个主机就不能用密码登陆了。
即使你装建了一个新的非root用户,也必须要用ssh key来登录。这里你要注意,不能再web上绑定public key,这里绑定了就是root权限的。要手动再那个用户目录下面自己加入public key很简单,我就不多说了。
但是我想让这个用户用密码登录怎么办呢?因为我想把这个用户给别人直接给她密码,免得还要给他private key,或者帮他添加public key,避免不相信给错key了之类的麻烦。那我们就要让阿里云同时开启密钥和密码登录。很简单,只要你绑定了密钥,密码登录就失效了。这是你去重置一下你的密码,之后密钥和密码登录就同时有效了。
本文章使用limfx的vsocde插件快速发布