通过sudo、visudo,让普通用户使用root用户的命令

文章讲述了如何通过sudo和visudo命令来管理Linux系统中用户的权限。首先,展示了普通用户尝试使用sudo时遇到的权限问题。接着,通过visudo编辑sudoers文件,赋予用户李白全权限。然后,由于错误操作导致visudo更新失败。在修复后,限制李白只能使用ls命令访问/root目录。最后,测试显示李白只能执行ls命令,无法执行reboot等其他命令,实现了对用户权限的有效限制。

通过sudo、visudo,让普通用户使用root用户的命令

sudo于visudo

1 查看用户李白可以使用的sudo命令

[17:21:12 libai@aliyun ~]$sudo -l [sudo] password for libai: Sorry, user libai may not run sudo on aliyun.

2 编辑visuo,让李白拥有root的权限

[17:18:16 root@aliyun ~]#visud

Allow root to run any commands anywhere

root ALL=(ALL) ALL libai ALL=(ALL) ALL #仿照上面的,添加李白用户的sudo权限

3 更新visudo

[17:23:36 root@aliyun ~]#. visudo -bash: .: /usr/sbin/visudo: cannot execute binary file

4 使用李白登录,查看sudo的权限,并验证

[17:25:57 libai@aliyun ~]$sudo -l Matching Defaults entries for libai on aliyun:

User libai may run the following commands on aliyun: (ALL) ALL

[17:25:58 libai@aliyun ~]$ls /root ls: cannot open directory '/root': Permission denied [17:26:41 libai@aliyun ~]$sudo ls /root continue.sh for2.sh for.sh ls.txt passwd root uptime.txt while1.sh whille.sh

[17:30:42 libai@aliyun ~]$sudo reboot .....

[17:31:56 libai@aliyun ~]$^C

5 限制李白的权限

[17:25:14 root@aliyun ~]#visudo

root ALL=(ALL) ALL libai aliyun.com = /usr/bin/ls

[17:34:53 root@aliyun ~]#. visudo -bash: .: /usr/sbin/visudo: cannot execute binary file

6 登录李白账户测试sudo权限

[17:31:56 libai@aliyun ~]$sudo -l [sudo] password for libai:

User libai may run the following commands on aliyun: (root) /usr/bin/ls

[17:36:10 libai@aliyun ~]$ls /root ls: cannot open directory '/root': Permission denied [17:36:54 libai@aliyun ~]$sudo ls /root continue.sh for2.sh for.sh ls.txt passwd root uptime.txt while1.sh whille.sh [17:37:04 libai@aliyun ~]$sudo reboot Sorry, user libai is not allowed to execute '/sbin/reboot' as root on aliyun.com.

注:

三个ALL到底是什么意思。

        第一个ALL是指网络中的主机,我们后面把它改成了 主机名,它指明李白可以在此主机上执行后面的命令。

        第二个括号里的ALL是指目标用户,也就是以 谁的身份去执行命令。

        最后一个ALL当然就是指命令名了。

普通用户使用sudo命令,可通过以下几种方法实现: - **加入sudoer列表**:先切换到管理员root用户或可使用sudo用户。执行`sudo visudo`,找到`root ALL=(ALL:ALL) ALL`这一行,在其下方照抄并将`root`替换为要设置的用户名,如`vincent ALL=(ALL:ALL) ALL`。按`ctrl + o`写入,系统提示自动写入`/etc/sudoes.tmp`,需将`sudoers.tmp`改成`sudoers`(即删除`.tmp`),然后回车,输入`y`确认操作,最后按`ctrl + x`退出[^2]。 - **加入sudo组**:使用命令`sudo usermod vincent -a -G sudo`(其中`vincent`为普通用户用户名),可将该普通用户加入sudo组,从而能够使用sudo命令[^2]。 - **编辑`/etc/sudoers`文件**:首先使用`#su -`切换到root用户(带“-”参数可将环境变量也转换为root的环境变量);接着使用`#visudo`编辑`sudoers`文件,其用法与`vi`相同,移动光标到最后一行,按`a`进入append模式,输入`username ALL=(ALL)PASSWD: ALL`(`username`为普通用户用户名),保存后该用户便加入了sudo组,可使用sudo命令。若不想在使用sudo时输入密码,可将上述内容替换为`username ALL=(ALL)NOPASSWD: ALL`。最后在普通用户权限下输入`$ sudo whoami`进行测试,若配置正确,命令会返回“root”字样[^3]。 - **授权特定权限**:先切换到root用户使用`visudo`命令编辑`/etc/sudoers`文件(不建议用`vim`,因为`visudo`能防止两个用户同时修改,还可进行有限的语法检查)。找到`root ALL=(ALL) ALL`,在下面添加一行“XXX ALL=(ALL) ALL”(“XXX”是用户名)完成基本授权。若要做权限限制,需了解三个`ALL`的含义:第一个是网络中的主机名(建议用`ALL`),第二个是目标用户(建议用`ALL`),第三个是命令(最好不用`ALL`,多个命令用逗号隔开)。若不想每次使用sudo输入密码,可在命令前加“NOPASSWD:”,如“XXX ALL=(ALL) NOPASSWD:/sbin/service” [^4]。 ### 示例代码 以下是编辑`/etc/sudoers`文件将用户加入sudo组的示例代码: ```bash # 切换到root用户 su - # 编辑sudoers文件 visudo # 在文件中添加以下内容(假设用户名为testuser) testuser ALL=(ALL)PASSWD: ALL # 保存退出 # 测试 sudo sudo whoami ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值