sudo详解

  sudo详解



目录

  前言

   1、原理

   二、命令

   三、sudo配置

    1、配置文件

    2、时间戳文件

    3、日志文件

    4、配置文件支持使用通配符glob

    5、配置文件规则有两类

    6、授权规则

      1)授权格式

      2)格式说明

    7、sudo别名

      1)别名有四种类型

      2)别名格式

前言

Sudo(substitute user [或 superuser] do),是一种程序,用于类Unix操作系统如BSD,Mac OS X,以及GNU/Linux以允许用户

通过安全的方式使用特殊的权限运行程序(通常为系统的超级用户)。

对linux有一定了解的人多少也会知道点关于sudo命令。sudo命令核心思想是权限的赋予 ,即某个命令的所属用户不是你自己,而你

却有权限执行它。但是我们需要注意的是,虽然你有权限执行这个命令,但是在执行的时候却仍是以这个命令本身所属用户来完成的[注释

1]。(su命令类似sudo命令,但是两者的差别在于前者su是一个粗粒度权限赋予,对su最好的理解我觉得是change user running

command permanent。即永久的切换到了su过去的用户,然后以这个su到的新用户干它能干的一切事情,而sudo则是指在执行某个命令

的时候临时切换到这个命令的所属用户执行[注释1],而且sudo可以做到以单个命令为单位将权限赋予给其他用户,相比su显得更加灵活。)

1、原理

在sudo于1980年前后被写出之前[2],一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须要先告知超级用户的密码。

sudo使一般用户不需要知道超级用户的密码即可获得权限。首先超级用户将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常是/etc/sudoers),即完成对该用户的授权(此时该用户称为“sudoer”)[3];在一般用户需要获取特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该用户自己的密码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行。之后的一段时间内(默认为5分钟[4],可在/etc/sudoers自定义),使用sudo不需要再次输入密码。

由于不需要超级用户的密码,部分Unix系统甚至利用sudo使一般用户替换超级用户作为管理账号,例如Ubuntu、Mac OS X等。

二、命令

语法

sudo [-bhHpV][-s ][-u <用户>][指令]

或sudo [-klv]

参数

-a type       使用指定的 BSD 认证类型

-b            在后台运行命令

-C fd         关闭所有 >= fd 的文件描述符

-E            在执行命令时保留用户环境

-e            编辑文件而非执行命令

-g group      以指定的用户组执行命令

-H            将 HOME 变量设为目标用户的主目录。

-h            显示帮助消息并退出

-i [command]  以目标用户身份运行一个登录 shell

-K            完全移除时间戳文件

-k            无效的时间戳文件

-l[l] command 列出用户能执行的命令

-n            非交互模式,将不提示用户

-P            保留组向量,而非设置为目标的组向量

-p prompt     使用指定的密码提示

-S            从标准输入读取密码

-s [command]  以目标用户身份运行 shell

-U user       在列表时,列出指定用户的权限

-u user       以指定用户身份运行命令(或编辑文件)

-V            显示版本信息并退出

-v            更新用户的时间戳而不执行命令

--            停止处理命令行参数

三、sudo配置

       1、配置文件

/ect/sudoers

下文的中授权或别名写入该文件即可

执行visudo命令可编写

/ect/sudoers.d/

可在该目录下自定义文件并将授权或别名写入。

 2、时间戳文件

/va/db/sudo

        3、日志文件

/var/log/secure

        4、配置文件支持使用通配符glob:

?:任意单一字符

*:匹配任意长度字符

[wxc]:匹配其中一个字符

[!wxc]:除了这三个字符的其它字符

\x :转义

[[alpha]] :字母  示例  /bin/ls   [[alpha]]*

        5、配置文件规则有两类

1、别名定义:不需必须的

2、授权规则:必须的。

6、授权规则

    1)授权格式

用户 登入主机=(代表用户) 命令

示例 :

root ALL=(ALL) ALL

wang ALL=(ALL) /bin/mount /dev/sr1 /mnt/dvd2

#意思是任何主机可以登录用户wang并代表所有用户利用所有的权限执行mount命令将/dev/sr1 挂载到/mnt/dvd2

授权用户 主机=[(切换到哪些用户或用户组)] [是否需要密码验证] 命令1,[(切换到哪些用户或用户组)] [是否需要密码验证] [命令

2],[(切换到哪些用户或用户组)] [是否需要密码验证] [命令3]......

%wheel ALL=(ALL) NOPASSWD: ALL

#这里的NOPASSWD 代表无需密码验证。

    2)格式说明:

user :运行命令者的身份

host:通过那些主机

(runas):以那个用户的身份

Command :运行那些命令

User和runas

username

#uid

%group_name

%#gid

User_aliasrunas_ailas

Host:

Ip或hostname

netwoek(/netmask)

host_alias

command:

command name

directory

sudoedit

Cmnd_Alias

7、sudo别名

别名:(这里的别名可以理解为定义的组)

    1)别名有四种类型:

User_Alias   #用户别名 别名成员可以是用户,用户组(前面要加%号)

Runas_Alias #用来定义runas别名,指定的是“目的用户”,即sudo 允许切换至的用户;

Host_Alias #which host 那些主机上

Cmnd_Alias   #  command执行那些命令

    2)别名格式

别名必须命名是包含大写字母、下划线以及数字,但必须以一个大写字母开头[A_Z]([A_Z][0-9]_)*

示例: User_Alias NAME = wang,alice

Cmnd_Alias DISKMAG=/sbin/fdisk,/sbin/parted

Cmnd_Alias NETMAG=/sbin/ifconfig,/etc/init.d/network

Runas_Alias OP = root, operator

Host_Alias HT01=localhost,st05,st04,10,0,0,4,255.255.255.0,192.168.1.0/24

Cmnd_Alias ADMINCMD = /usr/sbin/useradd

Cmnd_Alias CMD=/usr/sbin/usermod, /usr/bin/passwd [a-zA-Z]*

Cmnd_Alias CMD1=!/usr/bin/passwd root #!意思代表取反

时间: 2024-07-28 17:46:07

sudo详解的相关文章

sudo 详解、用户以及组的创建删除。

一.用户名文件. root:x:0:0:root:/root:/bin/bash 共7部分. 1,用户名. 2,存放的是该帐号的口令,(密码)现存于/etc/shadpw/,所以现在用X表示. 3,代表用户标示号, uid 4,组 标示号,gid 5,注释说明.没有实际意义 6,用户的加目录. 7,用户的shell. 二.密码文件 user1:$6$X/dAMmCG$uLvF2l/Df/TgldEWVc7lL93bVxjKDpLStDWYcMD0DdN7a/VUwdl1PcEhYBOjTwOQd

linux学习之路之sudo详解

sudo详解 之前介绍过su的使用,su就是switch user,从一个用户切换到另一个用户 那么sudo是什么东东呢? sudo:就是让某个用户能够以另外任意一个用户的身份通过某些主机执行某些任务.记住了,是以另外 一个身份来执行命令,而不是切换到另一个用户上去哦! 但是要想让某个用户能够使用sudo来执行命令的话,必须要在sudo的配置文件定义才可以,只有在 /etc/sudoers中定义过的用户才可以执行相应的命令,这些命令也必须要在sudo的配置文件/etc/sudoers中定义才可以

系统自动安装及基本故障排除、sudo详解

系统安装过程 anaconda:stage2.img,主要提供安装的界面,包含txt.GUI界面 kickstart:三部分组成 1.命令段:定义的配置选项 必须指定的命令 keyboard us:键盘 lang en_US:语言 timezone Asia/Shanghai:时区 authconfig --useshadow:认证 bootloader --location:默认安装到mbr clearpart --initlabe1(初始化一个分区表) --linux(清除所有Linux分区

sudo 详解

1.sudo 简介 sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等.这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性.sudo不是对shell的一个代替,它是面向每个命令的.(百度百科) su 命令 su是最简单的身份切换命令,一般都是su - username,然后输入password就ok了,root用su至其他用户无须密码:但非root用户切换时需要密码.切换到root可以使用su -

Linux sudo 详解

简单的说,sudo 是一种权限管理机制,管理员可以授权于一些普通用户去执行一些 root 执行的操作,而不需要知道 root 的密码.严谨些说,sudo 允许一个已授权用户以超级用户或者其它用户的角色运行一个命令.当然,能做什么不能做什么都是通过安全策略来指定的.sudo 支持插件架构的安全策略,并能把输入输出写入日志.第三方可以开发并发布自己的安全策略和输入输出日志插件,并让它们无缝的和 sudo 一起工作.默认的安全策略记录在 /etc/sudoers 文件中.而安全策略可能需要用户通过密码

Linux中的sudoer详解

目录 Linux中的sudo详解 一.引言 二.格式 三./etc/sudoers文件 四.sudoers文件讲解 五.其他 Linux中的sudo详解 一.引言 Liunx用户只有两类: 管理员用户---root 普通用户--其他 我们在学习sudo命令之前,肯定学习过su(switch user)命令,su命令是用来切换用户身份的命令,而sudo命令是一种切换用户来执行某种操作的命令 su和sudo的区别: su命令的主要作用是让你可以在已经登录的会话中切换到另外一个用户,换句话说,这个工具

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

简述问题: 随着公司的服务器越来越多,人员流动性也开始与日俱增,以往管理服务器的陈旧思想应当摒弃,公司需要有 更好更完善的权限体系,经过多轮沟通和协商,公司一致决定重新整理规划权限体系,主管明确指出权限存在的问 题,并需要解决以往的root权限泛滥问题. 我作为本次权限规划的发起人,我了解到了公司现状后,经过多次与相关员工及领导沟通,确认了公司存在的 部分问题:  运维部基本入职离职流程中存在一些账号问题: 如  离职不报备,系统权限不回收.账号密码过于简单化 这样无疑给公司的服务器及数据安全造

Linux运维--企业sudo权限规划详解 (实测一个堆命令搞定)

简述问题: 随着公司的服务器越来越多,人员流动性也开始与日俱增,以往管理服务器的陈旧思想应当摒弃,公司需要有 更好更完善的权限体系,经过多轮沟通和协商,公司一致决定重新整理规划权限体系,主管明确指出权限存在的问 题,并需要解决以往的root权限泛滥问题. 我作为本次权限规划的发起人,我了解到了公司现状后,经过多次与相关员工及领导沟通,确认了公司存在的 部分问题:  运维部基本入职离职流程中存在一些账号问题: 如  离职不报备,系统权限不回收.账号密码过于简单化 这样无疑给公司的服务器及数据安全造

Nmap扫描教程之基础扫描详解

Nmap扫描教程之基础扫描详解 Nmap扫描基础扫描 当用户对Nmap工具了解后,即可使用该工具实施扫描.通过上一章的介绍,用户可知Nmap工具可以分别对主机.端口.版本.操作系统等实施扫描.但是,在实施这些扫描工作之前,需要先简单了解下Nmap工具的使用,以方便后面实施扫描.所以,本章将通过使用Nmap工具实施基础的扫描,来帮助用户了解该工具. Nmap扫描扫描概述 在实施基本的扫描之前,需要先了解一些Nmap网络扫描的基本知识,及需要考虑的一些法律边界问题.本节将对网络基本扫描进行一个简单介