(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:指定更新的间隔,以秒 ...
随机推荐
- python字典操作和内置方法
一 字典基本介绍 python中只有字典是映射结构,通过key取值,并且key是不可变数据类型,而value可以是任意数据类型. 字典通过一个花括号,里面存放key:value的数据结构来定义.理论上 ...
- 如何将自定义的搜索参数便捷的添加到js方式的bootstrap table的参数中
页面: <div> <form id="exp_form"> 查询参数... <button type="button" oncl ...
- Java 图形化界面设计(GUI)实战练习(代码)
关于Java图形化界面设计,基础知识网上可搜,下面简单介绍一下重点概念,然后就由浅入深代码实例. 程序是为了方便用户使用的,Java引入图形化界面编程. 1.JFrame 是容器类 2.AWT 是抽象 ...
- java基础-配置java的环境变量
学习java之前首先在https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html上面下载与 ...
- 7种html5css3网页图片展示特效代码
鼠标拖拽图片渐变透明切换特效 mobile手机左右滑动切换幻灯片 游戏透明提示图层幻灯片特效 可以编辑滚动条灯片颜色的scroll插件 几种文字动画显示插件代码 360度背景图片旋转的css3动画 左 ...
- html学习笔记——ife task0001
花了两三天大概看完html和css基本用法,但到自己布局的时候还是很懵不知道从哪里入手啊,就找了个简单的任务(ife2015 spring)试一下. 之前不涉及到布局的跳过,从涉及到position和 ...
- ArcGIS Arcade
ArcGIS Arcade http://127.0.0.1/Resource/JavaScript/arcgis_js_api/sdk/4.10/latest/guide/arcade/index. ...
- (后台)java 读取excel 文件 Unable to recognize OLE stream 错误
原因:不支出读取 excel 2007 文件(*.xlsx).只支持 excel 2003 (*.xls). 光修改文件后缀不行,需要文件另存(或者导出)为 .xls Excel 1997-2004 ...
- SpringBoot整合定时任务
定时任务一般是项目中都需要用到的,可以用于定时处理一些特殊的任务. 在SpirngBoot中使用定时任务变的特别简单,不需要再像SpringMVC一样写很多的配置,只需要在启动类上增加一个@Enabl ...
- apache 访问权限出错,apache selinux 权限问题, (13) Permission Denied
今天在使用 httpd 做文件服务器的时候,发现 png 图像没有打开,但是原本www/html 文件夹内部的文件就可以打开.后来猜测是selinux 的问题,之前一直想写一篇关于selinux 的博 ...