(6)sudo命令详解(每周一个linux命令系列)
首先说句抱歉,最近事情比较复杂,停更了一阵子。我又回来啦
多用户管理
我们常用的windows个人系统虽然可以设置多用户,但是实际上是不可以多用户同时登陆的(这个我实验过,我以前用windows服务器的时候,多用户可以同时登陆,自以为个人版的也可以,结果啪啪打脸啊),这就使得这功能很鸡肋,而且大家也很少在windows中使用多用户这个功能。
而linux是多用户系统,不同用户可以同时登陆进行操作,私以为linux的用户管理要比windows好太多了,当然也略复杂。其中最主要的就是,并不是每个人都有最高权限,因为linux系统认为你有足够的能力管理自己的系统,系统本身不会对你的行为做限制,当然也不为你的行为买单。
我们认为用户一般分为两类,一类是root用户,拥有最高权限,一类是普通用户,拥有不完全的权限,普通用户可以在有需要的时候,提升权限来执行命令。
sudo命令
sudo就是这样一个命令,他可以做的事情就是,可以提权到另一个用户来执行这个用户可以执行的任务。
命令格式:
sudo -u <用户名> <命令> //如果省略-u 则默认为root用户
注:如果需要输入密码,输入的是当前用户的密码。提权到新用户身份,命令是以新用户身份来执行的,因此创建文件和文件夹等属于此用户。
su <用户名> //用来切换用户 如果需要输入密码,输入的是要切换到的用户的密码
给用户增加sudo权限
useradd命令上一个文章已经提过,这样创建完用户就是普通用户,如果想给此用户增加sudo权限应该怎么操作呢?
我们可以使用visudo命令,出于安全考虑,需要在root权限下才可以运行,这很好理解吧。
输入命令后打开一个临时文件:"/etc/sudoers.tmp"
也表明了这个权限的管理是记录在sudoers文件中,在centos中一般放在 /etc/sudoers文件中,我们也可以通过vi /etc/sudoers来操作,但是不建议这样做,因为使用visudo会有错误检测和提示,vi则没有
文件如下:
## Allow root to run any commands anywhere
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
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
## Allows members of the users group to mount and unmount the
## cdrom as root
# %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
## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d
上面并不是全部文件,我们只讲解其中一部分
先说一下这两条
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
这些代码就是用来控制权限的,代码格式为:
源用户/组 主机 = [(目的用户:组)] [是否需要输入密码验证] [命令1,命令2,...]
其中ALL可以代替所有主机,或者所有命令。源用户/组的位置,如果是带'%'则代表是组,不带代表用户 其中命令和
示例:
//wheel组中的用户,通过任意主机登录,可以切换到任意其他用户,不需要密码 可以通过sudo执行所有命令
%wheel ALL=(ALL:ALL) NOPASSWD: ALL
//用户张三 通过任意主机登录,可以切换到sudo组中的任意用户,不需要密码 可以以通过sudo执行所有命令
zhangsan ALL=(ALL:sudo) NOPASSWD: ALL
也可以不写其中的【目的用户和组】和【是否需要密码验证】的部分 如下:
root ALL=(ALL:ALL) ALL
%wheel ALL=(ALL) ALL
或者控制职能执行一些命令例如只能以通过sudo执行top命令(只是举个例子,当然普通用户也可以执行top命令)
checktop ALL= /usr/bin/top //这里最好使用绝对路径,否则可能会导致可以通过sudo执行一些其他路径下的同名程序带来安全隐患
可以使用'*'作为通配符,可以使用'!'排除
//可以运行/usr/bin/下的所有程序,但是/usr/bin/top除外
checktop ALL=/usr/bin/*,!/usr/bin/top
另外我们注意到其中有一行:#includedir /etc/sudoers.d
这使得sudoers文件包含了/etc/sudoers.d中不以~号结尾的文件和不包含.号的文件,这些文件都会被解析成sudoers的配置加载。注意这一句的格式是固定的,就像是c文件中的#include类似。
补充:
查看命令的绝对路径 使用
which <命令>
(6)sudo命令详解(每周一个linux命令系列)的更多相关文章
- (5)ps详解 (每周一个linux命令系列)
(5)ps详解 (每周一个linux命令系列) linux命令 ps详解 引言:今天的命令是用来看进程状态的ps命令 ps 我们先看man ps ps - report a snapshot of t ...
- (4)top详解 (每周一个linux命令系列)
(4)top详解 (每周一个linux命令系列) linux命令 top详解 引言:今天的命令是用来看cpu信息的top top 我们先看man top top - display Linux pro ...
- (3)lscpu详解 (每周一个linux命令系列)
(3)lscpu详解 (每周一个linux命令系列) linux命令 lscpu详解 引言:今天的命令是用来看cpu信息的lscpu lscpu 我们先看man lscpu display infor ...
- (2)free详解 (每周一个linux命令系列)
(2)free详解 (每周一个linux命令系列) linux命令 free详解 引言:今天的命令是用来看内存的free free 换一个套路,我们先看man free中对free的描述: Displ ...
- 每周一个linux命令之---uptime详解
每周一个linux命令之---uptime详解 linux命令 uptime详解 引言:从今天开始,每周更新一个对程序员有用的linux命令,我真的没敢写每天一个,我怕我坚持不下去,每周一个还是可以的 ...
- ulimit 命令详解 socket查看linux最大文件打开数
ulimit 命令详解 Linux对于每个用户,系统限制其最大进程数.为提高性能,可以根据设备资源情况,设置各linux 用户的最大进程数 可以用ulimit -a 来显示当前的各种用户进程限 ...
- 企业sudo权限规划详解 (实测一个堆命令搞定)
简述问题: 随着公司的服务器越来越多,人员流动性也开始与日俱增,以往管理服务器的陈旧思想应当摒弃,公司需要有 更好更完善的权限体系,经过多轮沟通和协商,公司一致决定重新整理规划权限体系 ...
- Linux命令详解:[7]获得命令帮助
在维护和使用Linux系统时,常常会忘记命令的使用方法,如果旁边又没有相应的资料,那怎么办呢?不用担心,系统本身提供了详细的手册供使用者查询,下面小编就以CentOS6.4系统为例演示如何获得命令帮助 ...
- centos top 命令详解及退出top命令-使用p键及free命令
1.作用 top命令用来显示执行中的程序进程,使用权限是所有用户. 2.格式 top [-] [d delay] [q] [c] [S] [s] [i] [n] 3.主要参数 d:指定更新的间隔,以秒 ...
随机推荐
- Vim——回顾整理
一.命令练习(一) hjkl(左下上右) 保存到某路径 :saveas 路径 w 到下一个单词的开头 e 到下一个单词的结尾 % 括号匹配移动(),{},[] 0 到行头 $ 到行头 gU字母变大写 ...
- Windows环境使用Nexus-3.x搭建Maven私服
[前言] 本文主要讲解在Wiindows环境下搭建最新出的Nexus 3.x私服. 1.搭建私服的必要性 一般情况下,各个公司的开发团队为了提高开发效率,都会使用项目构建工具进行开发.常见的构建工具有 ...
- Javassm连接数据库报错129 ERROR [com.alibaba.druid.pool.DruidDataSource] - {dataSource-1} init error
Javassm连接数据库报错129 ERROR [com.alibaba.druid.pool.DruidDataSource] - {dataSource-1} init error 发现jdbc这 ...
- TestOps - 最健壮性的测试角色
一十一 发表于 2018-03-02 09:10:08 TestOps 最具影响力的测试运维一体化综合平台. DevOps实现了从代码到服务的快速落地,而TestOps集成了DevOps效率,更是 ...
- Archlinux/Manjaro使用笔记-报错:一个或多个 PGP 签名无法校验!的解决方法
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 解决办法:添加无法校验的pgp签名为信任 gpg --recv-keys xxxxxx xxxxxx为无法校验的gpg值
- 关于 ul 嵌套 li 并且再嵌套 a 的 BUG
在写网页的过程中,总是写完了这一套,样式出了问题又去找问题废了好长时间总结一下写法以下是结构 经常会出现 li 里面与文字不在一个高度上 <div class="indicators& ...
- js控制两个元素高度保持一致
<script type="text/javascript"> $(function(){ if($("#left").height() > ...
- Java 开源博客 Solo 1.8.0 发布 - 改进文件上传
本次发布主要是更新了编辑器,使其更好地支持文件上传.(1.8.0 版本变更记录请看这里) 我们的 Markdown 编辑器: 另外,我们对 HTTPS 的支持也更完善了,欢迎大家试用! 简介 Solo ...
- BI怎么选?重点看这10个技术指标
2016年,商业智能市场火热,不管是投资圈还是IT圈,都在广泛关注着大数据和商业智能.宣传广告媒体报道见多了,不知道大家对BI选型的技术标准有谱了没.笔者对Gartner的BI魔力象限考评的15个关键 ...
- Twitter基于R语言的时序数据突变检测(BreakoutDetection)
Twitter开源的时序数据突变检测(BreakoutDetection),基于无参的E-Divisive with Medians (EDM)算法,比传统的E-Divisive算法快3.5倍以上,并 ...