linux无密码sudo,在Linux系统中运行没有sudo密码的特定命令
本文介绍在Linux操作系统中运行没有sudo密码的特定命令的方法。
背景
我在AWS上部署了Ubuntu系统上的脚本,此脚本的主要目的是检查特定服务是否以固定间隔运行(确切地说每隔一分钟),并且如果由于任何原因而停止,则自动启动该服务,但问题是我需要sudo权限来启动服务,你可能已经知道,我们应该在运行sudo用户时提供密码,但我不想这样做,我真正想要做的是以无密码的形式运行sudo服务,如果你遇到这样的情况,在这个简短的文章中,我将教你如何在类Unix操作系统中运行没有sudo密码的特定命令(也可以参考Linux系统中sudo命令的10个技巧一文)。
看看下面的例子:
$ sudo mkdir /ostechnix
[sudo] password for sk:
正如你在上面的屏幕截图中看到的,我需要在root(/)文件夹中创建名为ostechnix的目录时提供sudo密码,每当我们尝试使用sudo权限执行命令时,我们都必须输入密码,但是,在我的场景中,我不想提供sudo密码,这是我在Linux机器上运行没有密码的sudo命令所做的。
在Linux中运行没有sudo密码的特定命令
出于任何原因,如果你希望允许用户在不提供sudo密码的情况下运行特定命令,则需要在sudoers文件中添加该命令。
我希望名为sk的用户执行mkdir命令而不提供sudo密码,让我们看看如何做到这一点。
编辑sudoers文件:
$ sudo visudo
在文件末尾添加以下行:
sk ALL=NOPASSWD:/bin/mkdir
这里,sk是用户名,根据上面的行,用户sk可以从任何终端运行'mkdir'命令,没有sudo密码。
可以使用逗号分隔值添加其他命令(例如chmod),如下所示:
sk ALL=NOPASSWD:/bin/mkdir,/bin/chmod
保存并关闭文件,注销(或重启)你的系统,现在,以普通用户“sk”身份登录并尝试使用sudo运行这些命令,看看会发生什么:
$ sudo mkdir /dir1
看到?即使我使用sudo权限运行'mkdir'命令,也没有密码提示,从现在开始,用户sk在运行'mkdir'命令时无需输入sudo密码。
运行除sudoers文件中添加的那些命令之外的所有其他命令时,系统将提示你输入sudo密码。
让我们用sudo运行另一个命令:
$ sudo apt update
看到?此命令提示我输入sudo密码。
如果你不希望此命令提示你询问sudo密码,请编辑sudoers文件:
$ sudo visudo
在visudo文件中添加'apt'命令,如下所示:
sk ALL=NOPASSWD: /bin/mkdir,/usr/bin/apt
你是否注意到apt二进制可执行文件路径与mkdir不同?是的,你必须提供正确的可执行文件路径,要查找任何命令的可执行文件路径,例如'apt',请使用如下所示的'whereis'命令:
$ whereis apt
apt: /usr/bin/apt /usr/lib/apt /etc/apt /usr/share/man/man8/apt.8.gz
如你所见,apt命令的可执行文件是/usr/bin/apt,因此我将其添加到sudoers文件中。
就像我已经提到的,你可以使用逗号分隔值添加任意数量的命令,完成后保存并关闭sudoers文件。注销并再次登录到你的系统。
现在,检查你是否能够使用sudo前缀运行命令而不使用密码:
$ sudo apt update
看到?即使我用sudo运行它,apt命令也没有问我密码。
这是另一个例子,如果要运行特定服务,例如apache2,请按如下所示添加它:
sk ALL=NOPASSWD:/bin/mkdir,/usr/bin/apt,/bin systemctl restart apache2
现在,用户可以在没有sudo密码的情况下运行“sudo systemctl restart apache2”命令。
在上述情况下,我可以对特定命令重新进行身份验证吗?答案:是的。只需删除添加的命令即可,注销并重新登录。
或者,你可以在命令前添加“PASSWD:”指令,请看下面的例子。
添加/修改以下行,如下所示:
sk ALL=NOPASSWD:/bin/mkdir,/bin/chmod,PASSWD:/usr/bin/apt
在这种情况下,用户sk可以运行'mkdir'和'chmod'命令而无需输入sudo密码,但是,他必须在运行'apt'命令时提供sudo密码。
结语
应用此方法时应该非常小心,这种方法可能具有相当的破坏性,例如,如果你允许用户在没有sudo密码的情况下执行'rm'命令,他们可能会意外或故意删除重要内容。
相关主题
linux无密码sudo,在Linux系统中运行没有sudo密码的特定命令相关推荐
- Linux下的32位C程序,linux系统c语言生成.so文件,生成64位可执行文件,在64位系统中运行32位的可执行文件...
1.linux 系统c语言生成.o文件,---->gcc -m64 -c -fPIC test.c -o test.o 2.linux 系统c语言生成.so文件,----->gcc -sh ...
- Linux编译mybatis,使用mybatis assembly插件打成tar包,在linux系统中运行服务-Go语言中文社区...
使用mybatis assembly插件打成tar包,在linux系统中运行服务 assembly插件插件地址: 链接:https://pan.baidu.com/s/1i6bWPxF 密码:gad5 ...
- linux运行360sh,在深度deepin系统中运行install.sh文件的方法
在深度deepin操作系统中有时会遇到x.sh文件,如在安装canon imageclass 4712驱动时,找到linux-ufrii-drv-360-sc替代,但install.sh不知道如何运行 ...
- Linux学习总结(49)——应当竭力避免在系统中运行的 Linux 命令
前言 如果你是一个 Linux 新手,在好奇心的驱使下,可能会去尝试从各个渠道获得的命令.以下是 7 个致命的 Linux 命令,轻则使你的数据造成丢失,重则使你的系统造成瘫痪,所以,你应当竭力避免在 ...
- 在Linux和Mac OS X系统上运行.NET
.NET Core运行时已经看到了实现真正的跨平台的美好前景,它最终出现在Linux和Mac OS X平台上.在上周举办的Microsoft Build大会上,来自微软的项目经理Habib Heyda ...
- 在Windows, Mac, Linux三种系统中分别获取wifi密码的方式
在Windows, Mac, Linux三种系统中分别获取wifi密码的方式 1. Windows netsh wlan show profile name=wifi名称 key=clear | fi ...
- 在Windows和Linux系统中,有以下常用的磁盘修复命令
在Windows和Linux系统中,有以下常用的磁盘修复命令: Windows系统: 1. CHKDSK命令:检查磁盘上的文件系统错误,并对损坏的扇区进行恢复.格式:CHKDSK [驱动器:] [参数 ...
- 在每个运行中运行多个查询_linux系统中运行级别介绍
CentOS7.3学习笔记总结(五十)- linux系统中运行级别介绍 linux系统中的运行级别是操作系统运行时的功能级别,级别从0到6共7个功能级别,分别是: 0:停机 1:单用户模式 2:多用户 ...
- 教你成功在Win10系统中运行docker
1 前言 在上文Docker初体验中我们介绍了Docker的一些基本概念和常用命令,但因为Docker是在Linux系统下创建的资源分离机制,所以它无法在Windows系统下直接运行.这次我们将用3分 ...
最新文章
- Eclipse打包工具 FatJAR
- Tomcat安全加固
- live555工程建立与调试
- java (10) 集合类
- yii 清除mysql缓存_Yii2开启数据表结构缓存和清除
- 抢先试用ReSharper UnitRun™ 1.0
- Opencv 深度学习识别性别和检测年龄
- Kettle增量同步变动数据
- 微服务网关(gateway)概述 与 嵌入式 Zuul 反向代理
- error LNK2001: 无法解析的外部符号 _ft_sdf_renderer_class/ _ft_bitmap_sdf_renderer_class
- sas字段有html脚本,sas 实现自动化报表格式之定性变量
- 权限设计,可控制每个接口的使用。
- 可以在电脑上刷微信朋友圈啦-微信 mac最新版
- 【FXCG】美联储加息之际,新兴市场加息周期却接近尾声
- 创建个人博客只需五步骤——小白都能看会的详细过程,教你如何白嫖阿里云服务器
- Python控制键盘鼠标,原来还能这样玩?
- Oracle SQL:update更新语句总结
- 刘强东怼天猫,是在陈述事实还是另有深意?
- 总裁面对面压轴秀:且听黄飞说全渠道…
- 北大生命学院邓宏魁课题组最新成果:建立全新胰岛移植策略,解决干细胞治疗糖尿病的关键难题...
热门文章
- 7-7 六度空间 (30分)_近30年仅6人生涯总决赛首秀得分30+ 浓眉哥能成下一个吗
- python 节气计算_python 生成 1900-2100 的二十四节气文件
- spark-submit
- Linux 进程通信fifo,Linux 进程通信之FIFO的实现
- jcreator编译多个java_java用JCreator怎么都编译不过去!
- java压缩对象_Java 对象指针压缩
- 临沧计算机教试报名,2019下半年临沧小学计算机教师资格证考什么?
- 机器学习付费专栏的一些简介
- jupyter跑Java,C++/C,R
- 八十、React中的容器组件和无状态组件