(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:指定更新的间隔,以秒 ...
随机推荐
- [转]angular2封装material2对话框组件
本文转自:https://www.jianshu.com/p/da9978e25566 1. 说明 angular-material2自身文档不详,控件不齐,使用上造成了很大的障碍.这里提供一个方案用 ...
- 多啦爱梦~多啦A梦CSS3测试源代码
先直接看图片,感觉一下!一直以来,我们都在说浏览器对CSS3支持度这个问题.可是,鉴于知识认识水平问题,又没几个人真正了解CSS3是什么东西,和它在网站显示上的重要性.现在好了,日本某位大神写了个CS ...
- html页面边框的另一种写法
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Android ContentProvider数据共享
一.构造一个自己的Provider实现App之间数据共享 1.我们先来了解一下 Uri(统一资源定位符) 定义:每一个Content Provider使用一个公开的URI唯一标示其数据集,Andr ...
- FullCalendar – jQuery Event Calendar in ASP.NET
https://github.com/esausilva/ASP.Net-EventCalendar http://trentrichardson.com/examples/timepicker/ h ...
- JS之用ES6 Promise解决回调地狱(这里以小程序为例)
首先 写一个请求的方法,如: /** * 银行窗口 * 你需要给我提供相关的相关参数我帮你提交到服务器上 * 我会给你一个等待区的编号给你 你去等待区等待,我处理完成会去等待区通知你 * @param ...
- 共用的h5回调页面
产生背景: APP里的公用页面,像帮助中心页.授权认证结果页.各种协议页面,都需要做成H5页面,方便安卓和ios去调用. 交互情况描述: 要是有动态值,就需要定义在自己H5链接的后面,让他们传值,自己 ...
- element-ui 的el-button组件中添加自定义颜色和图标
我使用的element-ui的版本是V1.4.13. 如上图所示,如果使用el-button,加颜色是可以通过设置type属性的值,加图标就设置icon属性的值. 现在产品给了一个需求,就是自定义的很 ...
- css iphonex适配
/* iphonex适配 */ @media only screen and (device-width:375px) and (-webkit-device-pixel-ratio: 3) { . ...
- Salesforce小知识:累计汇总字段类型
累计汇总字段类型的定义 Salesforce中可以在两个对象之间建立关系.一个对象的某一条记录可以有若干条相关联的其他对象记录. 累计汇总字段可以将这些相关联的记录中的某些字段值汇总起来,显示给用户. ...