sudo是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权利”,让他们执行一些只有超级用户或其他特许用户才能完成的任务
大家知道ubuntu吧,他就封闭了root用户,都是使用的sudo
sudo能够限制指定用户在指定主机上运行某些命令。
sudo可以提供日志,忠实地记录每个用户使用sudo做了些什么,并且能将日志传到中心主机或者日志服务器。
sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。它默认的存放位置是/etc/sudoers。
sudo使用时间戳文件来完成类似“检票”的系统。当用户执行sudo并且输入密码后,用户获得了一张默认存活期为5分钟的“入场券”(默认值可以在编译的时候改变)。超时以后,用户必须重新输入密码。
编辑/etc/sudoers文件,只有超级用户才可以修改它。
sudoers文件就是sudo的配置文件了,但是我们不建议用户直接vim这个文件,建议使用visudo这个命令来编辑这个文件:#visudo
之所以使用visudo有两个原因,一是它能够防止两个用户同时修改它;二是它也能进行有限的语法检查。所以,即使只有你一个超级用户,你也最好用visudo来检查一下语法。
sudo的常用参数
sudo -l :列出当前用户可以执行的命令。只有在sudoers里的用户才能使用该选项。
sudo -u 用户名 命令:以指定用户的身份执行命令。后面的用户是除root以外的,可以是用户名,也可以是#uid。
sudo -k:清除“入场卷”上的时间,下次再使用sudo时要再输入密码。
sudo -b 命令:在后台执行指定的命令。
sudo -p 提示语:可以更改询问密码的提示语,其中%u会代换为使用者帐号名称,%h会显示主机名称。非常人性化的设计。
sudo -e 文件名:不是执行命令,而是修改文件,相当于命令sudoedit。
现在我们来试试,请大家使用visudo这个命令
然后使用/root查找
查找到这行root ALL=(ALL) ALL
这个文件最重要的也就这么一行
我给大家解释下:
第一个root 代表用户名
第一个ALL代表所有主机
(ALL)代表所有用户
后面那个ALL代表所有命令
这句话的意思就是:root用户可以在任何机器上运行所有用户的所有命令
第一个主机你就理解成这个主机吧,他主要是对一个域来定义的
用户名 主机名=命令
命令须绝对路径,以“,”分隔,以“,”结尾
如果我要让michael这个用户可以执行所有用户的shutdown和useradd命令就这样写
michael ALL=(ALL) shutdown,useradd
然后保存退出,如果没有提示的话就证明成功了
visudo默认的是在vi里打开配置文件,用vi来修改文件。我们可以在编译时修改这个默认项。visudo不会擅自保存带有语法错误的配置文件,它会提示你出现的问题,并询问该如何处理,就像:
>>> sudoers file: syntax error, line 71 <<<
此时我们有三种选择:
键入“e”是重新编辑,键入“x”是不保存退出,键入“Q”是退出并保存。如果真选择Q,那么sudo将不会再运行,直到错误被纠正。
我故意说错了这个命令,那两个命令michael用户是没有环境变量的,也就是michael没那两个命令,所以会报错,就像这样看下图:
比如把命令改成system-confg-users命令的可执行文件
先使用which system-config-users找到他的可执行文件/usr/bin/system-config-users
需要注意的是,当我们为用户定义可以运行的命令时,必须使用完整的命令路径。这样做是完全出于安全的考虑,如果我们给出的命令只是简单的useradd而非/usr/sbin/useradd,那么用户有可能创建一个他自己的脚本,也叫做useradd,然后放在它的本地路径中,如此一来他就能够通过这个名为useradd的本地脚本,作为root来执行任何他想要的命令了。这是相当危险的!
我们来查找下:which shutdown和which useradd
写/sbin/shutdown,/usr/sbin/useradd这个进去就OK了,多个命令使用","分隔
现在保存退出就没有报错哈~
你可以切换到michael这个用户,使用#sudo useradd xxxx
然后输入michael用户的密码,命令就可以执行成功
普通用户的PATH没有加/usr/sbin,自己加上export PATH=$PATH:/usr/sbin,然后我们再试试哈~
ok,可以了哈~
大型的主机就使用这种方法把权限分配给不同的管理员
#########################################################################
相关推荐
sudo命令详解及示例
**sudo命令详解:** `sudo`命令本身是一个设置了SUID(Set-User-Id)权限的二进制文件,所有用户都能以root权限运行它。它的执行需要用户输入自己的密码,而不是目标命令所需的root密码。`sudo`的配置都在/etc/...
严谨些说,sudo 允许一个已授权用户以超级用户或者其它用户的角色运行一个命令。当然,能做什么不能做什么都是通过安全策略来指定的。sudo 支持插件架构的安全策略,并能把输入输出写入日志。第三方可以开发并发布...
Linux sudo命令 Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。 使用权限:在 /etc/sudoers 中有出现的使用者。 语法sudo -V sudo -h sudo -l sudo -v sudo ...
### Linux Sudo 命令详解 #### 一、Sudo 概述及特点 **Sudo**(Superuser DO)是一种广泛应用于Unix和Linux系统的工具,它允许系统管理员为普通用户分配特定权限,使他们能够在不需要登录为超级用户的情况下执行...
### Ubuntu中sudo命令的使用详解 #### 一、引言 Ubuntu系统因其用户友好性和安全性而受到广泛欢迎。其中一个重要特性就是默认禁用了root账户的直接登录,而是通过`sudo`命令来实现管理员级别的操作。本文将深入...
在配置完成后,使用sudo命令执行操作时,系统会根据/etc/sudoers文件中的规则,判断当前用户是否有权限执行该命令。如果用户vic尝试执行未授权的关机命令,例如: ```bash vic@CentOS7 ~ $ sudo shutdown -h now ...
sudo命令是Linux系统中用于以其他用户(通常是root)权限运行命令的工具。它提供了一种安全的机制,允许非特权用户执行特定的管理任务,而无需知道root密码。这对于多用户环境中的权限管理和系统安全至关重要。 ###...
#### 附录一:sudo命令详解 sudo命令允许用户以其他用户(默认为root)的身份执行命令。主要参数包括: - `-b`:在后台执行指令。 - `-H`:将HOME环境变量设为新身份的HOME环境变量。 - `-k`:结束密码有效期,...
Linux系统中的sudo命令是一个至关重要的工具,它允许用户以管理员(root)权限执行特定命令,而无需实际登录为root用户。然而,sudo命令近期被发现存在一个严重的安全漏洞,这个漏洞可能导致非授权用户获取root权限...
### Linux的sudo详解 #### 一、概述 `sudo`(superuser do)是一个Linux及类Unix系统中广泛使用的命令,允许用户以超级用户或其他指定用户的权限执行命令。这一功能对于系统管理和日常维护至关重要,因为它提供了...
四、sudo 命令详解 sudo 命令可以让用户以其他身份来执行指定的指令,预设的身份为 root。 sudo 命令的格式为: `sudo [-bhHpV][-s ][-u <用户 >][指令]` 主要参数: * `-b`:在后台执行指令。 * `-h`:显示...
### APT常用命令详解 #### 1. **搜索包** - `apt-cache search package` 当您不确定所需软件的确切名称时,`apt-cache search`命令可以帮助您根据关键词查找可能匹配的软件包。例如,如果您想找到与“文本编辑器”...
《Linux命令详解词典(绝版)》作为施威铭研究室所著的一本经典Linux工具书,主要针对Linux操作系统中的各种命令进行了深入的解释和阐述。Linux作为一种自由和开放源代码的类Unix操作系统,广泛应用于服务器、桌面、...
这份“Linux命令详解词典”由施威铭研究室提供,涵盖了Linux系统下的所有基本及高级操作命令,对于学习和理解Linux系统的管理至关重要。下面将详细阐述一些关键的Linux命令。 1. **ls**:列出目录内容。`ls`命令...
Linux命令详解手册是一本适合Linux新手和有一定基础的用户深入学习Linux命令的指南。它详细介绍了大量的Linux命令,涵盖了系统管理、系统设置、文档编辑以及压缩备份等多个方面的操作。掌握这些命令对于理解和使用...
对Linux系统管理员或高级用户而言,sudo是必不可少的最重要的命令之一。而因为使用的是sudo安装docker,所以会导致一个问题。以普通用户登录的状况下,在使用 docker images 时必须添加 sudo ,那么如何让docker免 ...