linux sudo用法

linux sudo用法,第1张

 一种约束用户执行系统管理命令方面的安全机制,允许指定的用户以root身份执行指定的命令而不需要提供root密码。用过Ubuntu(Debian系)的小伙伴很有发言权。

当用户要执行比如systemctl stop httpd时,如果该用户不被允许使用systemctl stop命令,则命令无法运行,从而实现只允许指定用户(信任的小伙伴)才可运行相关系统、服务管理方面的命令;如果用户被允许使用该命令,sudo机制也会提醒用户输入其账号密码,从而存在一个缓冲的时间,可以让命令执行者脑袋清醒一下,确认无误后敲下回车。

Sudo应该是Switch User Do的简写(尚未考证),简单粗暴的翻译就是“切换用户干”,当指定sudo systemctl stop httpd命令时,事实上是以root用户的身份运行的。下面以Redha系CentOS7.6来介绍一下sudo的使用,通过visudo直接回车可看到:

图中可以看出默认有8个命令别名,每一个别名分别对应一些命令,比如PROCESS,是nice、kill、killall三个命令的别名。之所以要有别名,是因为将命令分门别类后便于后面的引用。

看懂语法,基本就可以搞定了。每个框框中注释部分说的很清楚。比如“%wheel   ALL=(LL) NOPASSWD:ALL”表示wheel这个群组中的用户可以在任何主机上执行任何命令且不需要输入密码。

用户名:ds 

群组:   testgroup

要求:只允许testgroup群组用户执行跟networking相关的命令

步骤:

1、 [endif]命令行中输入visudo回车—编辑/etc/sudoers文件

2、 [endif]去掉“Cmnd_Alias NETWORKING…“一行的的注释

3、 加入下面一行

4、 测试

可以看到ds用户执行ping是可以的,但是执行kill命令就不行了,即使使用sudo尝试使用root身份执行也不行:

通过/var/log/secure日志文件可以看的更详细:

常用实例讲解

1 .oracle用户可以在任何地点以任何的身份执行所有命令,等同于root。

oracle ALL=(ALL)ALL

2. oracle2用户可以在任何地点以root的身份执行命令useradd(无需密码)和usermod(需要密码).

这样oracle2就可以免密码useradd,有密码(密码为oracle2的自身密码)使用userdel。

oracle2 ALL=(root) NOPASSWD:/usr/sbin/useradd, PASSWD:/usr/sbin/userdel

使用方式如下

[oracle2@centos74 ~]$ useradd test001 # 直接使用命令是不可以的。

-bash: /usr/sbin/useradd: Permission denied

[oracle2@centos74 ~]$ sudo useradd test001                          # 必须加sudo

[oracle2@centos74 ~]$ id test001                                    # 查看添加的用户信息

uid=1031(test001) gid=1032(test001) groups=1032(test001)

3. oracle3用户只能在192.168.1.120主机远程登录并以root身份执行ifconfig eth0命令。

Cmnd_Alias NETCMND = /sbin/ifconfig eth0

oracle3 192.168.1.120 = (root) NOPASSWD:NETCMND

4. oracle4用户可以执行/usr/sbin下的所有命令除了/usr/sbin/userdel

oracle4 ALL=(ALL) /usr/sbin/,!/usr/sbin/userdel

5. oracle5用户可以cat /var/log/secure*的文件

oracle5 ALL=(ALL) /bin/cat /var/log/secure*,!/bin/cat /var/log/secure* *

sudo是linux下常用的允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或者全部的root命令,如halt,reboot,su等等。这样不仅减少了root用户的管理时间,同样也提高了安全性。Sudo不是对shell的一个代替,它是面向每个命令的。sudo的配置文件是 /etc/sudoers 文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。sudo都提供了一个编辑该文件的命令:visudo 来对该文件进行修改。强烈推荐使用该命令修改 sudoers,因为它会帮你校验文件配置是否正确,如果不正确,在保存退出时就会提示你哪段配置出错的。 打开 /etc/sudoers 文件可以发现一个特殊的 wheel 组 第2行表示:wheel 组中的用户可以在ALL/任意主机上以任意用户执行所有的命令,不过需要输入该用户自己的密码。 第4行在第2行的基础上增加了NOPASSWD,意思是无需输入密码。不过这行默认情况下是注释掉的。 这样我们只需要创建一个专用的账户,然后将其添加到wheel组。 创建用户jupiter 将用户添加到wheel组中 现在用户jupiter就可以执行一些原本root用户才能执行的命令。 首先切换到 jupiter 用户 尝试切换到root用户主目录被拒绝 这次使用sudo 然后就可以成功切换到root用户主目录了。 如果不想输入密码,那么可以将上面提到的第4行的注释字符 # 去掉。 Linux命令手册:https://linux.cmsblogs.cn/

sudo是以管理员权限进行 *** 作,但是需要输入密码,如果想在用sudo时不用输入密码,需要修改 /etc/sudoers 文件。 首先需要备份一下 sudoers 文件,万一改崩了还有救。 使用 sudo visudo 命令打开, 如果失败了用 sudo vi /etc/sudoers在最下面一行加上,下面的 username 需要改成自己的用户名: 如果要指定哪些 *** 作不需要输入密码,需要在 NOPASSWD 后面加上指定命令: 保存退出之后,重新登录一次就可以了。 参考:Linux 中不输入密码运行 sudo 命令的方法


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/6118476.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-15
下一篇 2023-03-15

发表评论

登录后才能评论

评论列表(0条)

保存