当前位置: 首页 > 编程日记 > 正文

sudo配置文件详解及实战

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

安装NGINX之后每次都需要切换ROOT用户做配置文件修改和启动,为了加强安全,ROOT用户一般是不允许直接提供给应用开发人员或者运维人员的,所以需要提供一种方法可以一般用户执行ROOT用户下的程序,并且该可执行程序依赖的其他ROOT用户资源也是可以访问的。使用chmod命令只能解决指定文件的非ROOT用户访问问题,程序执行时依赖的文件还是会提示权限不足。因此需要将普通用户加入sudo列表。

在扒了一篇帖子,转载过来

一、sudo执行命令的流程

将当前用户切换到超级用户下,或切换到指定的用户下, 
然后以超级用户或其指定切换到的用户身份执行命令,执行完成后,直接退回到当前用户。 
具体工作过程如下: 
当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限 
–>确认用户具有可执行sudo的权限后,让用户输入用户自己的密码确认 
–>若密码输入成功,则开始执行sudo后续的命令

二、不需要输入密码的情况

1.root执行sudo时不需要输入密码(eudoers文件中有配置root ALL=(ALL) ALL这样一条规则) 
2.欲切换的身份与执行者的身份相同,不需要输入密码 
3./etc/sudoers文件设置为允许用户在不输入该用户的密码的情况下使用所有命令 
如设置允许wheel用户组中的用户在不输入该用户的密码的情况下使用所有命令 
( %wheel ALL=(ALL) NOPASSWD: ALL)

三、/etc/sudoers文件解释

[root@test ~]# cat /etc/sudoers
## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
##该文件允许特定用户像root用户一样使用各种各样的命令,而不需要root用户的密码 
##
## Examples are provided at the bottom of the file for collections
## of related commands, which can then be delegated out to particular
## users or groups.
## 在文件的底部提供了很多相关命令的示例以供选择,这些示例都可以被特定用户或  
## ## 用户组所使用  
## This file must be edited with the 'visudo' command.
## 该文件必须使用"visudo"命令编辑
## Host Aliases
#主机别名
## Groups of machines. You may prefer to use hostnames (perhap using 
## wildcards for entire domains) or IP addresses instead.
## 对于一组服务器,你可能会更喜欢使用主机名(可能是全域名的通配符)
## 或IP地址代替,这时可以配置主机别名# Host_Alias     FILESERVERS = fs1, fs2
# Host_Alias     MAILSERVERS = smtp, smtp2
## User Aliases
#用户别名
## These aren't often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname 
## rather than USERALIAS
## 这并不很常用,因为你可以通过使用组来代替一组用户的别名  
# User_Alias ADMINS = jsmith, mikem## Command Aliases
## These are groups of related commands...
## 指定一系列相互关联的命令(当然可以是一个)的别名,通过赋予该别名sudo权限,  
## 可以通过sudo调用所有别名包含的命令,下面是一些示例## Networking
#网络操作相关命令别名  
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient,/usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
## Installation and management of software
#软件安装管理相关命令别名  
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
## Services
#服务相关命令别名 
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig
## Updating the locate database
#本地数据库升级命令别名  
Cmnd_Alias LOCATE = /usr/sbin/updatedb
## Storage
#磁盘操作相关命令别名
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
## Delegating permissions
#代理权限相关命令别名 
Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp
## Processes
#进程相关命令别名
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
## Drivers
#驱动命令别名
Cmnd_Alias DRIVERS = /sbin/modprobe
#环境变量的相关配置
# Defaults specification
#
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear. 
#         You have to run "ssh -t hostname sudo <cmd>".
#
Defaults    requiretty
Defaults    env_reset
Defaults    env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR \LS_COLORS MAIL PS1 PS2 QTDIR USERNAME \LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION \LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC \LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS \_XKB_CHARSET XAUTHORITY"
## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## 下面是规则配置:什么用户在哪台服务器上可以执行哪些命令(sudoers文件可以在多个系统上共享)
## Syntax:
##语法
##      user    MACHINE=COMMANDS
##  用户 登录的主机=(可以变换的身份) 可以执行的命令  
##
## The COMMANDS section may have other options added to it.
## 命令部分可以附带一些其它的选项  
##
## Allow root to run any commands anywhere 
## 允许root用户执行任意路径下的任意命令 
root    ALL=(ALL)       ALL
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
## 允许sys中户组中的用户使用NETWORKING等所有别名中配置的命令## Allows people in group wheel to run all commands
# %wheel        ALL=(ALL)       ALL
## 允许wheel用户组中的用户执行所有命令  
## Same thing without a password
## 允许wheel用户组中的用户在不输入该用户的密码的情况下使用所有命令
# %wheel        ALL=(ALL)       NOPASSWD: ALL
## Allows members of the users group to mount and unmount the
## cdrom as root
## 允许users用户组中的用户像root用户一样使用mount、unmount、chrom命令 
# %users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
## Allows members of the users group to shutdown this system
# %users  localhost=/sbin/shutdown -h now
## 允许users用户组中的用户像root用户一样使用shutdown命令

四、实际案例演示

实例1:让普通用户fieldyang具有/etc/init.d/nagios脚本重启的权限,可以在/etc/sudoers添加如下设置:

[root@test ~]# visudo
fieldyang ALL=NOPASSWD:/etc/init.d/nagios restart

实例2:让普通用户fieldyang具有所有超级用户的权限而又不用输入密码

[root@test ~]# visudo
fieldyang ALL=(ALL)NOPASSWD:ALL
[fieldyang@test ~]#sudo su - 
[fieldyang@test ~]#pwd
/root

实例3:针对MySQL数据库的设置,让test组中的test用户具备/etc/init.d/mysqld的权限

################## mysql ################

1.

[root@test ~]# groupadd test
[root@test ~]# useradd -g test -m -d /home/test -s /bin/bash test
[root@test ~]# passwd test

2.

[root@test ~]# visudo
# test ALL=(ALL) NOPASSWD: /etc/init.d/mysqld
test ALL=(ALL)  /etc/init.d/mysqld

3. start/stop mysql 
  3.1) start mysql 
   login test

[root@test ~]# su test
[test@test ~]$ sudo /etc/init.d/mysqld start

3.2) stop mysql 
   login test

[root@test ~]# su test
[test@test ~]$ sudo /etc/init.d/mysqld stop

实例4:针对tomcat的设置,让test组中的test用户具备tomcat操作的权限

################## tomcat ################

1.

[root@test ~]# groupadd test
[root@test ~]# useradd -g test -m -d /home/test -s /bin/bash test
[root@test ~]# passwd test

2.

[root@test ~]# visudo# test ALL=(ALL)  /usr/local/tomcat/bin/shutdown.sh,/usr/local/tomcat/bin/startup.shtest ALL=(ALL) NOPASSWD: /usr/local/tomcat/bin/shutdown.sh,/usr/local/tomcat/bin/startup.sh

3.

[root@test ~]# vim /usr/local/tomcat/bin/catalina.sh### JDK export JAVA_HOME=/usr/local/jdkexport JRE_HOME=$JAVA_HOME/jre

4. start/stop tomcat 
  4.1) start tomcat 
    login test

[root@test ~]# su test  
[test@test ~]$ sudo /usr/local/tomcat/bin/startup.sh
[test@test ~]$ ss -ntlup | grep Java
[test@test ~]$ curl -I http://localhost:8080
  • 1
  • 2
  • 3
  • 4

4.2) stop tomcat 
    login test

[root@test ~]# su test 
[test@test ~]$ sudo /usr/local/tomcat/bin/shutdown.sh

转载于:https://my.oschina.net/u/3049601/blog/2966535

相关文章:

Centos中文输入法安装以及切换

鼓捣鼓捣&#xff08;我是一只菜鸟&#xff09;&#xff0c;终于在我的Centos上面装上我的大中华输入法了&#xff0c;哈哈哈哈下面就简单描述下安装过程吧&#xff01;&#xff01;&#xff01;centos6.5用yum安装中文输入法打开终端&#xff0c;进入root用户&#xff08;命令…

【MATLAB】矩阵信息的获取

1、矩阵结构 矩阵的结构是指矩阵子元素的排列方式。 函数名称函数功能isempty(A)检测矩阵是否为空isscalar(A)检测矩阵是否是单元素的标量矩阵isvector(A)检测矩阵是否是只具有一行或一列元素的一维向量issparse(A)检测数组是否是系数矩阵 返回1表示该矩阵是某一特定类型的矩…

Android Gradle Plugin 源码解析(上)

一、源码依赖 本文基于: android gradle plugin版本&#xff1a; com.android.tools.build:gradle:2.3.0 gradle 版本&#xff1a;4.1 Gradle源码总共30个G&#xff0c;为简单起见&#xff0c;方便大家看源码&#xff0c;此处通过gradle依赖的形式来查看源码&#xff0c;依赖源…

Guice系列之用户指南(七)

原文地址&#xff1a;https://code.google.com/p/google-guice/wiki/ToConstructorBindings Constructor Bindings&#xff08;构造器绑定&#xff09;&#xff1a;在父类型上绑定子类实现的构造函数。 贴代码&#xff1a; 12345678910111213141516171819202122232425262728293…

Linux系统火焰图

CentOS7.8 安装perf #yum install perf 执行perf 执行perf record 命令&#xff0c;记录该PID的行为 #perf record -a -g -p 14851 -- sleep 30 --30秒后退出 需要注意后面生成svg图片的所有命令要和当前perf在同一目录&#xff0c;不然会报错。 #perf report 安装git …

深圳杯---垃圾焚烧厂的经济补偿问题

垃圾围城是世界性难题&#xff0c;在今天的中国显得尤为突出。2012年全国城市生活垃圾清运量达到1.71亿吨&#xff0c;比2010年增长了1300万吨。数据显示&#xff0c;目前全国三分之二以上的城市面临垃圾围城问题&#xff0c;垃圾堆放累计侵占土地75万亩。因此&#xff0c;垃圾…

make -j8以及linux下查看cpu的核数

# 总核数 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 物理CPU个数 X 每颗物理CPU的核数 X 超线程数# 查看物理CPU个数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l# 查看每个物理CPU中core的个数(即核数) cat /proc/cpuinfo| grep "cpu …

IDEA2021.3.2拉取maven报错maven-default-http-blocker解决方法

因为IDEA2021.3.2 的Maven是3.8.1后&#xff0c;mvn编译的时候总是提示拉不到依赖&#xff0c;报错如下&#xff1a; Could not validate integrity of download from http://0.0.0.0/... 因为使用HTTP协议下载依赖&#xff0c;可能会导致中间人攻击。 所以Maven 3.8.1就禁止…

2013高教社杯---B碎纸片的拼接复原

破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。传统上&#xff0c;拼接复原工作需由人工完成&#xff0c;准确率较高&#xff0c;但效率很低。特别是当碎片数量巨大&#xff0c;人工拼接很难在短时间内完成任务。随着计算机技术的发展&a…

oracle--with as

with as把一段查询结果放在临时表&#xff0c;后面的查询中可多次使用 语法&#xff1a; with 别名 as(select * from table) 或 with 别名1 as(select * from table1), ............. 别名n as(select * from tablen) 示例&#xff1a; with 别名 as(select * from table wher…

Flask上下文管理源码分析

略略略...转载于:https://www.cnblogs.com/dzf123456/p/9446220.html

IDEA函数调用关系图插件

Call Graph是一款IDEA插件&#xff0c;用于可视化基于IntelliJ平台的IDE的函数调用图。 这个插件的目标是让代码更容易理解&#xff0c;有助于读懂和调试代码。 安装插件 安装后&#xff0c;通过View - Tool Windows - Call Graph &#xff0c;激活窗口 激活后&#xff0c;需要…

[Notice]博客地址转移 vitostack.com

个人博客地址转移至vitostack.com 这里可能不会经常更新。 欢迎访问新地址。 转载于:https://www.cnblogs.com/Vito2008/p/5595430.html

【MATLAB】find 函数 总结

【MATLAB版本为2014a】 MATLAB中函数find函数的作用是进行矩阵元素的查找&#xff0c;它通常与关系函数和逻辑运算相结合。 indfind(X,...)&#xff1a;该函数查找矩阵中的非零元素&#xff0c;函数返回这些元素的双下标[row,col]find(X,...)&#xff1a;该函数查找矩阵X中的…

与HTTP关系密切的协议:IP、TCP、DNS

TCP/IP协议族的协议挺多的&#xff0c;我们精力有限&#xff0c;不可能一个个都了如指掌&#xff0c;那就挑一些与HTTP协议关系了解吧~ 负责传输的IP协议 按层次分&#xff0c;IP协议位于网络层。 IP协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里&#xff0…

C#精髓 第四讲 GridView 72般绝技

说明&#xff1a;准备出一个系列&#xff0c;所谓精髓讲C#语言要点。这个系列没有先后顺序&#xff0c;不过尽量做到精。可能会不断增删整理&#xff0c;本系列最原始出处是csdn博客,谢谢关注。 C#精髓 第四讲 GridView 72般绝技 作者&#xff1a;清清月儿 主页&#xff1a;ht…

Android layer-list(3)

&#xfeff;&#xfeff;Android layer-list&#xff08;3&#xff09; 在附录文章3、4的基础上&#xff0c;就Android layer-list再写一个较为复杂的应用。 先写布局文件&#xff0c;该布局涉及到LinearLayoutCompat&#xff0c;关于LinearLayoutCompat参看附录文章5。 布局文…

【MATLAB】二维矩阵可视化 MATLAB绘图

基本绘图函数 1、plot(y) 如果y是向量&#xff0c;则采用向量的索引值作为横坐标值&#xff0c;以向量元素的值作为纵坐标值。 如果y是实数矩阵&#xff0c;则相当于对y的每一列进行二维绘图。 如果y是复数组成的向量&#xff0c;则相当于plot(real(y),imag(y))。 2、plot…

phpstudy一个域名配置两个网站(一个是thinkphp5,一个是原生php)

phpstudy一个域名配置两个网站&#xff08;一个是thinkphp5&#xff0c;一个是原生php&#xff09; 一、总结 一句话总结&#xff1a;把原生php的网站直接放到thinkphp5的public目录下可以解决以stem.aaaa.hk\**方式访问原生网站会被当成thinkphp子模块的问题 最后的解决方法&a…

bzoj3442 学习小组

目前处于迷之TLE状态 -----6.21更新 已AC 3442: 学习小组 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 200 Solved: 87Description 【背景】坑校准备鼓励学生参加学习小组。【描述】共有n个学生&#xff0c;m个学习小组&#xff0c;每个学生有一定的喜好&#xff0c;只愿…

C语言经典著作导读

本人不是卖书的&#xff0c;我也不会给出任何购书链接&#xff0c;只是给C语言学习者推荐一条学习的方向。如果你喜欢看电子书网上很多&#xff0c;如果你喜欢纸质那么就买吧&#xff0c;经典的书值得收藏&#xff0c;是对版权的尊重&#xff01; 基础篇 1.《写给大家看的C语言…

针对2013年B题碎纸片拼接问题(附件一、附件二)

题目链接&#xff1a;https://blog.csdn.net/CSDN___CSDN/article/details/82051821 http://www.shumo.com/wiki/doku.php?id2013_%E5%B9%B4%E5%85%A8%E5%9B%BD%E5%A4%A7%E5%AD%A6%E7%94%9F%E6%95%B0%E5%AD%A6%E5%BB%BA%E6%A8%A1%E7%AB%9E%E8%B5%9B_cumcm_%E8%AF%95%E9%A2%98…

什么是类型别名?什么是潜在类型?

2019独角兽企业重金招聘Python工程师标准>>> 别名类型 在Go语言里&#xff0c;可以用type声明自定义的各种类型。在这些自定义的类型中&#xff0c;有一种被叫做别名类型。 举个例子&#xff1a; type MyString string这句代码的意思是&#xff1a;MyString是strin…

Linux网络编程必看书籍推荐

首先要说讲述计算机网络和TCP/IP的书很多。 先要学习网络知识才谈得上编程 讲述计算机网络的最经典的当属Andrew S&#xff0e;Tanenbaum的《计算机网络》第五版&#xff0c;这本书难易适中。 《计算机网络&#xff08;第5版&#xff09;》是国内外使用最广泛、最权威的计算机…

5个最佳的Android测试框架

2019独角兽企业重金招聘Python工程师标准>>> 谷歌的Android生态系统正在不断地迅速扩张。有证据表明&#xff0c;新的移动OEM正在攻陷世界的每一个角落&#xff0c;不同的屏幕尺寸、ROM /固件、芯片组以及等等等等&#xff0c;层出不穷。于是乎&#xff0c;对于Andr…

【CTF】实验吧 凯撒变异

通过分析可以知道前四个“afZ_”四个的ASCII码值与“flag”的ASCII码值依次相差5&#xff0c;6&#xff0c;7&#xff0c;8。 #include <stdio.h> #include <string.h> int main () {char str[40]"afZ_r9VYfScOeO_UL^RWUc";int i0,j5;while(i<strlen…

ant design pro (八)构建和发布

一、概述 原文地址&#xff1a;https://pro.ant.design/docs/deploy-cn 二、详细 2.1、构建 当项目开发完毕&#xff0c;只需要运行一行命令就可以打包你的应用&#xff1a; npm run build 由于 Ant Design Pro 底层使用的 roadhog 工具&#xff0c;已经将复杂的流程封装完毕&a…

Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存

Linux进程间通信--进程&#xff0c;信号&#xff0c;管道&#xff0c;消息队列&#xff0c;信号量&#xff0c;共享内存 参考&#xff1a;《linux编程从入门到精通》,《Linux C程序设计大全》,《unix环境高级编程》 参考&#xff1a;C和指针学习 说明&#xff1a;本文非常的长…

PgSQL · 实战经验 · 如何预测Freeze IO风暴

背景和原理 有没有被突发的IO惊到过&#xff0c;有没有见到过大量的autovacuum for prevent wrap。 PostgreSQL 的版本冻结是一个比较蛋疼的事情&#xff0c;为什么要做版本冻结呢&#xff1f; 因为PG的版本号是uint32的&#xff0c;是重复使用的&#xff0c;所以每隔大约20亿…

【CTF】实验吧 传统知识+古典密码

对照顺序写下&#xff1a; 根据对应的干支得到 28 30 23 8 17 10 16 30 甲子 所有的数加60 得到 88 90 83 68 77 70 76 90 找到ASCII码对照表可得到XZSDMFLZ 题干中提到古典密码&#xff08;常用的就是栅栏密码和凯撒密码&#xff09; 栅栏密码&#xff08;两栏&#…