linux系统sudo命令解读

更新时间:2014年03月24日10:29:43作者:

Sudo是Unix/Linux平台上的一个特别有用的工具,它容许系统管理员分配给普通用户一些合理的“权利”,让她们执行一些只有超级用户或其他特许用户能够完成的任务

例如:运行一些像mount,halt,su之类的命令linux sudo命令详解,或则编辑一些系统配置文件,像/etc/mtab,/etc/samba/smb.conf等。这样以来,就除了降低了root用户的登录次数和管理时间,也提升了系统安全性。

一.sudo的特征

sudo饰演的角色注定了它要在安全方面愈发慎重,否则都会造成非法用户谋取root权限。同时,它还要兼具易用性,让系统管理员才能更有效,更便捷地使用它。sudo设计者的宗旨是:给用户尽可能少的权限但仍准许完成她们的工作。所以,sudo

有以下特性:

#1.sudo才能限制指定用户在指定主机上运行个别命令。

linux的sudo命令_linux命令详解_linux sudo命令详解

#2.sudo可以提供日志,忠实地记录每位用户使用sudo做了些哪些,而且能将日志传到中心主机或则日志服务器。

#3.sudo为系统管理员提供配置文件,准许系统管理员集中地管理用户的使用权限和使用的主机。它默认的储存位置是/etc/sudoers。

#4.sudo使用时间戳文件来完成类似“检票”的系统。当用户执行sudo而且输入密码后,用户获得了一张默认存活期为5分钟的“入场券”(默认值可以在编译的时侯改变)。超时之后,用户必须重新输入密码。

二.sudo命令

sudo程序本身就是一个设置了SUID位的二补码文件。我们可以检测一下它的权限:

复制代码代码如下:

$ls-l/usr/bin/sudo

—s--x--x2rootroot10683202-1217:41/usr/bin/sudo

它的所有者是root,所以每位用户都可以像root那样执行该程序。设置了SUID的程序在运行时可以给使用者以所有者的EUID。这也是为哪些设置了SUID的程序必须留神编撰。并且设置一个命令文件的SUID和用sudo来运行它是不同的概念,它们起着不同的作用。

sudo的配置都记录在/etc/sudoers文件中,我们下边将会详尽说明。配置文件指明什么用户可以执行什么命令。要使用sudo,用户必须提供一个指定用户名和密码。注意:sudo须要的不是目标用户的密码,而是执行sudo的用户的密码。若果不在sudoers中的用户通过sudo执行命令linux端口映射,sudo会向管理员报告这一风波。用户可以通过sudo-v来查看自己是否是在sudoers之中。若果是,它还可以更新你的“入场券”上的时间;倘若不是,它会提示你,但不会通知管理员。

sudo命令格式如下:

复制代码代码如下:

sudo-K-L-V-h-k-l-vsudo[-HPSb][-aauth_type][-cclass-][-pprompt][-uusername#uid]{-efile[…]-i-scommand}

下边我们再来看一下sudo其它常用的一些参数:

选项涵义作用

sudo-hHelp列举使用方式,退出。

linux命令详解_linux的sudo命令_linux sudo命令详解

sudo-VVersion显示版本信息,并退出。

sudo-lList列举当前用户可以执行的命令。只有在sudoers里的用户能够使用该选项。

sudo-uusername#uidUser以指定用户的身分执行命令。旁边的用户是除root以外的sogou pinyin linux,可以是用户名,也可以是#uid。

sudo-kKill去除“入场卷”上的时间,上次再使用sudo时要再输入密码。

sudo-KSurekill与-k类似,而且它还要撕毁“入场卷”,也就是删掉时间戳文件。

sudo-bcommandBackground在后台执行指定的命令。

sudo-ppromptcommandPrompt可以修改寻问密码的提示语,其中%u会代换为使用者账号名称,%h会显示主机名称。特别人性化的设计。

sudo-efileEdit不是执行命令,而是更改文件,相当于命令sudoedit。

linux的sudo命令_linux命令详解_linux sudo命令详解

还有一些不常用的参数,在指南页sudo(8)中可以找到。

三.配置sudo

配置sudo必须通过编辑/etc/sudoers文件,但是只有超级用户才可以更改它,还必须使用visudo编辑。之所以使用visudo有两个诱因,一是它才能避免

两个用户同时更改它;二是它也能进行有限的句型检测。所以,虽然只有你一个超级用户,你也最好用visudo来检测一下句型。

visudo默认的是在vi里打开配置文件,用vi来更改文件。我们可以在编译时更改这个默认项。visudo不会私自保存带有句型错误的配置文件,它会提示你出现的问题,并寻问该怎么处理,如同:

复制代码代码如下:

>>>sudoersfile:syntaxerror,line22/dev/null

[foobar@localhost~]$

cat/var/log/sudo…Jul2823:10:24localhostsudo:foobar:TTY=pts/1;

linux命令详解_linux的sudo命令_linux sudo命令详解

PWD=/home/foobar;USER=root;COMMAND=/bin/cat/etc/shadow

重定向没有被记录在案!为何?由于在命令运行之前,shell把重定向的工作做完了,sudo根本就没看见重定向。这也有个益处,下边的手段不会得逞:

复制代码代码如下:

[foobar@localhost~]$sudols/root>/etc/shadowbash:/etc/shadow:权限不够

sudo有自己的方法来保护安全。以root的身分执行sudo

-V,查看一下sudo的设置。由于考虑到安全问题,一部份环境变量并没有传递给sudo旁边的命令,或则被检测后再传递的,例如:PATHlinux sudo命令详解,HOME,

SHELL等。其实,你也可以通过sudoers来配置这种环境变量。

如上所见,sudo对于控制和审查root的访问很有帮助,它能让系统管理员更有效,安全地管理系统。把握sudo的正确使用也是对于系统管理员的良好训练。本文只是初步地介绍了sudo的使用,了解更多请参考sudoers(5)和sudo(8)指南页。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复