linux学习之路之sudo详解

sudo详解

之前介绍过su的使用,su就是switch user,从一个用户切换到另一个用户

那么sudo是什么东东呢?

sudo:就是让某个用户能够以另外任意一个用户的身份通过某些主机执行某些任务。记住了,是以另外

一个身份来执行命令,而不是切换到另一个用户上去哦!

但是要想让某个用户能够使用sudo来执行命令的话,必须要在sudo的配置文件定义才可以,只有在

/etc/sudoers中定义过的用户才可以执行相应的命令,这些命令也必须要在sudo的配置文件/etc/sudoers中定义才可以,默认情况下,只有root用户才可以使用sudo执行命令。

sudo的配置文件/etc/sudoers

刚刚说过,只有在/etc/sudoers中定义过的用户可以使用sudo命令,所以,要想让某些用户也能够使用sudo来执行某些命令,只需在/etc/sudoers中增加相应的sudo条目即可。

一般情况下,我们要想编辑某个配置文件,直接使用vim命令即可,但是由于使用vim编辑的配置文件无法检查增减条目的语法,因此我们一般不建议使用vim直接编辑。而是使用另外一种命令来编辑/etc/sudoers。

visudo:该命令默认情况下就是越来编辑/etc/sudoers的,该命令可以检查这个文件的语法错误,因此,如果要想修改/etc/sudors是,使用visudo来编辑更好,这样就不会出现什么问题了。

visudo -f filename:也可以用来编辑其他配置文件的,只要加上-f和指定文件即可

sudo条目

格式为:

who        which_host=(runas)        command

who:表示使用者账号

which_host:表示登入者来源主机

runas:表示以哪一个用户身份来执行,默认情况下,不加用户,表示以root身份来执行

command:规范这个用户可以使用sudo执行那些命令(这些命令要使用绝对路径)

情景模拟一:要想让hadoop这个用户能够以root的身份来执行useradd,usermod命令,该如何实现?

1、默认情况下,只有root用户才有权限使用useradd,usermod命令的

2、使用sudo以root身份来使用useradd命令添加用户

3、在/etc/sudoers中添加一个sudo条目

4、再次使用sudo以root身份来添加用户

5、使用sudo以root身份来删除xsl用户

注意:在上述这个过程中,每次执行命令时都要输入密码,这是因为如果某个用户有事离开了但是却没有退出当前用户,这时任何一个用户就可以在此主机上执行任何命令,修改root密码,或者删除有关信息等等,这对于系统来说是极不安全的。因此在每次执行命令前,都需要输入当前用户自身的密码,该密码有效期为5分钟(5分钟内执行任何命令不需要输入密码),5分钟过后就要重新输入了。

要想在执行某些命令时,不需要输入密码,可以在某些命令前加上"NOPASSWD:"等TAG信息

例如:hadoop        ALL=(root)    NOPASSWD:  /usr/sbin/useradd

其中ALL表示所有来源主机、所有可以切换的用户、所有命令

注意:在增加某个条目时,如果规定了某个用户可以执行修改密码的命令时,也就是增加了这个命令/usr/bin/passwd,要去掉修改root账号密码的命令。使用!可以用来取反。这样一般用户就不能修改root的密码了。以hadoop这个sudo条目为例:

hadoop        ALL=(root)        /usr/bin/passwd  [A-Za-z]*,!/usr/bin/passwd root

/usr/bin/passwd  [A-Za-z]*:表示在执行passwd命令时,需要输入修改的账号名,因为如果不输入账号名,默认修改的也是root的密码,因此这也是不可以的。

为sudo条目定义命令别名

有时候如果某些用户需要执行相同的命令,如果一个一个的为他们添加sudo条目时,会比较麻烦。这时我们可以为某些用户或者某些命令创建别名,以别名的方式为他们添加sudo条目,这样就方便多了。

在定义别名时必须全部而且只能是大写英文字母

可以为sudo条目中的每一个字段定义一个别名。

如何定义别名:

定义用户别名:

格式:  User_Alias   aliasname=

aliasname可以是用户名、组名(使用%引导)、还可以包含其他的用户别名(嵌套)

定义主机别名

格式:Host_Alias    aliasname=

aliasname可以是主机名、ip-addr、网络地址、其他主机别名(嵌套)

定义执行身份别名

格式:    Runas_Alias  aliasname=

aliasname可以是用户名、组名(前面加上%)、其他Runas别名(嵌套)

执行命令别名

格式        Cmnd_Alias  aliasname=

aliasname可以是命令路径(绝对路径)、目录(此目录内的所有命令)、其他事先定义过的别名

情景模拟二:有3个用户,hadoop、xsl、test都可以执行useradd、passwd命令,该如何操作?

可以在/etc/sudoer中添加如下条目即可:

User_Alias USERALIAS=hadoop,xsl,test
Cmnd_Alias CMDALIAS=/usr/sbin/useradd,!/usr/bin/passwd root,/usr/bin/passwd [A-Za-z]*
USERALIAS   ALL=(root)  CMDALIAS

当然可以使用sudo -l来查看某个用户可以使用sudo来执行的某些命令

linux学习之路之sudo详解

时间: 2024-10-11 00:41:22

linux学习之路之sudo详解的相关文章

Linux学习笔记——用户及权限详解

用户及权限详解    用户.组.权限 安全上下文(secure context): 权限: r   w   x  文件: r:可读,可以使用类似cat等命令查看文件内容: w:可写,可以编辑或删除此文件: X:可执行,exacutable,可以命令提示符下当作命令提交给内核运行:  目录: r:可以对此目录执行ls以列出内部的所有文件: w:可以在此目录创建文件: x:可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息: rwx: r--:只读 r-x:读和执行 ---:无权限

Linux学习笔记—— 用户管理命令详解

 用户管理命令详解  用户管理: useradd,userdel,usermod,passwd,chsh,chfn,finger,id,chage 添加用户: useradd [options] USERNAME    -u (UID)   手动指定UID -g (GID)  (基本组) -G, ...     (附加组) 可以有多个,彼此之间用,号隔开 -c "COMMENT"         注释信息     -d /path/to/somedirectory  指定家目录 -s

【Linux学习011】sed命令详解

一.简介 sed(Stream EDitor)是一种行编辑器,Linux中有三种常见的行编辑器:gred,sed,awk,其中awk命令最复杂,grep命令最简单,sed命令难度适中. sed命令能够接收一个文件或者管道输入流,以一次处理一行的方式处理完成整个文档,能够接收管道输入流是sed命令的一个特色功能. sed命令的详细使用方法在线手册:http://www.gnu.org/software/sed/manual/sed.html sed最全命令格式展开 sed OPTIONS... [

linux学习笔记:网络配置详解

我们安装好一台linux主机系统,要想将其接入网络就需要配置好网络配置了,centos5.x,centos6.x,到现在的centos7.x主要有三大配置网络的家族工具供我们使用: 这里主要以静态配置网络地址方式说明,首先从古老的ifcfg家族命令开始介绍: ifcfg家族:ifconfig,route,netstat ifconfig命令:网卡接口的查看和管理 格式:ifconfig [interface] -a:显示所有的接口信息,包含没有激活状态的接口: -s:简单显示接口的网络状况: i

Linux学习之零拷贝技术详解

本文探讨Linux系统中主要的几种零拷贝技术 以及零拷贝技术适用的场景 .为了迅速建立起零拷贝的概念,我们拿一个常用的场景进行引入: 引文 在写一个服务端程序时(Web Server或者文件服务器),文件下载是一个基本功能.这时候服务端的任务是: 将服务端主机磁盘中的文件不做修改地从已连接的socket发出去 ,我们通常用下面的代码完成: while((n = read(diskfd, buf, BUF_SIZE)) > 0) write(sockfd, buf , n); 基本操作就是循环的从

Linux学习之:find命令详解

find命令:       在Linux文件管理中,find的命令是个很强大的实时查找工具,通过遍历指定路径下文件系统层级结构完成文件查找.              特性:查找速度慢(因为从根目录开始查找).精确查找.实时查找. 用法:       find [OPTION] [查找起始路径] [查找条件] [处理动作]       查找起始路径:指定具体搜索目标起始路径,默认为当前目录:       查找条件:指定的查找标准,可以根据文件名.大小.类型.从属关系.权限等等标准进行:默认为找出

C++学习之路: 构造函数详解与初始化列表

引言:这是C++对象内存分配的基础,为防止忘记. 看一个类包含其他类时是如何构造的. #include <iostream> using namespace std; class Object { public: Object() { cout << "Object.." << endl; } ~Object() { cout << "~Object.." << endl; } }; class Conta

Linux学习之路之DNS的配置文件和正解区域文件、反解区域文件

DNS正解区域文件 在DNS中,我们知道有域和区域的概念,域的英文名称是domain,它是一种逻辑概念:而区域英文全称zone,它是一种物理概念.且zone分为正解区域和反解区域 正解区域:提供正向解析的服务,即FQDN-->IP的过程 反解区域:提供反向解析的服务,即IP-->FQDN的过程 不管好似正解区域还是反解区域,都通过了一个配置文件,这个文件中的每一个条目就是一个资源记录(Resource Record,RR). 资源记录的类型主要有这些,且这些资源记录的格式为: SOA:起始授权

【Linux学习】Linux下用户组、文件权限详解

原文地址:http://www.cnblogs.com/123-/p/4189072.html Linux下用户组.文件权限详解 用户组 在linux中的每个用户必须属于一个组,不能独立于组外.在linux中每个文件有所有者.所在组.其它组的概念 - 所有者 - 所在组 - 其它组 - 改变用户所在的组 所有者 一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者 用ls ‐ahl命令可以看到文件的所有者 也可以使用chown 用户名 文件名来修改文件的所有者 文件所在组 当某个用户创