首先说句抱歉,最近事情比较复杂,停更了一阵子。我又回来啦

多用户管理

我们常用的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命令系列)的更多相关文章

  1. (5)ps详解 (每周一个linux命令系列)

    (5)ps详解 (每周一个linux命令系列) linux命令 ps详解 引言:今天的命令是用来看进程状态的ps命令 ps 我们先看man ps ps - report a snapshot of t ...

  2. (4)top详解 (每周一个linux命令系列)

    (4)top详解 (每周一个linux命令系列) linux命令 top详解 引言:今天的命令是用来看cpu信息的top top 我们先看man top top - display Linux pro ...

  3. (3)lscpu详解 (每周一个linux命令系列)

    (3)lscpu详解 (每周一个linux命令系列) linux命令 lscpu详解 引言:今天的命令是用来看cpu信息的lscpu lscpu 我们先看man lscpu display infor ...

  4. (2)free详解 (每周一个linux命令系列)

    (2)free详解 (每周一个linux命令系列) linux命令 free详解 引言:今天的命令是用来看内存的free free 换一个套路,我们先看man free中对free的描述: Displ ...

  5. 每周一个linux命令之---uptime详解

    每周一个linux命令之---uptime详解 linux命令 uptime详解 引言:从今天开始,每周更新一个对程序员有用的linux命令,我真的没敢写每天一个,我怕我坚持不下去,每周一个还是可以的 ...

  6. ulimit 命令详解 socket查看linux最大文件打开数

    ulimit 命令详解     Linux对于每个用户,系统限制其最大进程数.为提高性能,可以根据设备资源情况,设置各linux 用户的最大进程数 可以用ulimit -a 来显示当前的各种用户进程限 ...

  7. 企业sudo权限规划详解 (实测一个堆命令搞定)

    简述问题:         随着公司的服务器越来越多,人员流动性也开始与日俱增,以往管理服务器的陈旧思想应当摒弃,公司需要有 更好更完善的权限体系,经过多轮沟通和协商,公司一致决定重新整理规划权限体系 ...

  8. Linux命令详解:[7]获得命令帮助

    在维护和使用Linux系统时,常常会忘记命令的使用方法,如果旁边又没有相应的资料,那怎么办呢?不用担心,系统本身提供了详细的手册供使用者查询,下面小编就以CentOS6.4系统为例演示如何获得命令帮助 ...

  9. centos top 命令详解及退出top命令-使用p键及free命令

    1.作用 top命令用来显示执行中的程序进程,使用权限是所有用户. 2.格式 top [-] [d delay] [q] [c] [S] [s] [i] [n] 3.主要参数 d:指定更新的间隔,以秒 ...

随机推荐

  1. SQL while循环

    ALTER Proc [dbo].[p_GetServerDataCursor] AS BEGIN IF EXISTS ( SELECT * FROM sys.objects WHERE object ...

  2. 如何完全卸载oracle和删除oracle在注册表中的注册信息

    卸载步骤介绍 1.停止所有Oracle相关的服务 操作方法: 控制面板-->管理工具 -->服务 -->将所有oracle开头的服务均停止 2.卸载Oracle 10g数据库服务器组 ...

  3. 设计模式-享元模式(FlyWeight)

    一.概念 享元模式是对象的结构模式,它以共享的方式高效的支持大量的细粒度对象,减少对象的数量,并达到节约内存的目的. 享元对象能够做到共享的关键,主要是区分了内部状态和外部状态,内部状态是对象是在建立 ...

  4. Flask 中的蓝图(BluePrint)

    蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开 怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查 ...

  5. lfs(systemd版本)学习笔记-第4页

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemd版本)学习笔记-第3页 的地址:https://www.cnblogs.com/renren-study- ...

  6. js之模态对话框

    目标效果:点击页面按钮,显示模态对话框,在模态对话框里点击取消关闭模式对话框. 效果如下 实现代码如下: <!DOCTYPE html> <html lang="en&qu ...

  7. 微信小程序测试二三事

    微信小程序虽是微信推出的新形态的产品,但是在测试思路上跟其他的传统测试,大相径庭.既然大相径庭,那我们该如何测试呢. 功能测试功能测试跟传统的web功能测试一样,不是app的功能测试哦.这是因为小程序 ...

  8. 安卓开发_浅谈DatePicker(日期选择器)

    DatePicker继承自FrameLayout类,日期选择控件的主要功能是向用户提供包含年.月.日的日期数据并允许用户对其修改.如果要捕获用户修改日期选择控件中的数据事件,需要为DatePicker ...

  9. Java:【面向对象:抽象类,接口】

    本文内容: 抽象类 接口 抽象类与接口的异同 首发日期:2018-03-24 抽象类: 虽然已经有了父类,但有时候父类也是无法直接描述某些共有属性的,比如哺乳类和人类都会叫,而一般来说哺乳类这个父类并 ...

  10. python数据探索

    数据质量分析 脏数据包括:缺失值:异常值:不一致的值:重复数据及含有特殊符号的数据: 1.缺失值处理 统计缺失率,缺失数 2.异常值处理 (1)简单统计量分析 (2)3Q原则 正态分布情况下,小概率事 ...