Linux系统中,root的用户权限非常大,基本上什么都可以做,我之前有台服务器,让一个学生用rm -rf /
的方式把所有的文件全删除了,欲哭无泪。
root权限这么大,就不能随便用,普通用户不允许使用root登陆。但是在执行一些系统级操作的时候,没有root权限又不行,于是有几种方法可以尝试:
- 退出登陆,使用root重新登陆,比较麻烦。
- 使用
su
命令,su
命令是用来临时切换到其他用户的,su root
就是切换到root用户,这时候,系统会要求你输入要切换的那个用户的密码,如果密码对了,允许你以切换后的用户身份进行操作,此时和这个用户登陆是没什么区别的。 - 使用
sudo
命令。sudo
命令是授权给某一类(组)或某一个用户用来执行某一种管理员才能执行的操作。通常情况下,只有root可以执行这个命令,当然我们可以设置,让某些用户也可以执行超级管理员才能执行的命令。
指定用户使用sudo
Debian系统是默认没有sudo命令的,需要先安装。
apt install sudo
给配置文件权限
chmod +w /etc/sudoers
然后编辑配置文件
vim /etc/sudoers
在文件中输入:
root ALL=(ALL:ALL) ALL
laoyang ALL=(ALL:ALL) ALL
每一行指定了一个用户,可以允许他执行相应的操作。
此时用户输入sudo
后面跟着其他命令,就可以执行了,前提是需要输入自己的密码,注意是自己的密码,不是root密码。
进一步配置
对于大部分情况来说,文章看到这里就结束了。如果想进一步配置,比如说不需要密码等,还要再完善一下配置。
基本格式是:
授权用户/组 主机 =[(切换到哪些用户或组)] [是否需要输入密码验证] 命令1,命令2,...
其中,用户和组
很容易理解,就是允许哪些用户或者组来执行。每行一个。
主机
表示允许登录的主机。ALL表示所有; 如果该字段不为ALL,表示授权用户只能在某些机器上登录本服务器来执行sudo命令。
切换到哪些用户或组
可以省略,如果省略, 相当于(root:root),表示可以通过sudo
提权到root; 如果为(ALL)或者(ALL:ALL), 表示能够提权到(任意用户:任意用户组)。
注意:如果没省略,必须使用( )双括号包含起来
是否需要输入密码验证
可能取值是NOPASSWD:。请注意NOPASSWD后面带有冒号:。表示执行sudo时可以不需要输入密码。
命令1,命令2,...
表示的是授权给用户可以操作的一系列命令,用逗号分开。ALL表示允许所有操作。
注意:命令必须使用绝对路径
所以,如果你想让一个用户不需要输入密码就执行所有操作,那么就更改配置文件为:
laoyang ALL=(ALL:ALL)NOPASSWD: ALL
如果给他部分权限,则改为
laoyang ALL=(ALL:ALL)NOPASSWD: /etc/network/interfaces
最后,取消配置文件的写入权限。
chmod -w /etc/sudoers