关注分享主机优惠活动
国内外VPS云服务器

如何在linux系统中使用sudo命令(linux sudo su命令)

今天主机频道就和大家分享一下在linux系统中如何使用sudo命令的相关知识点。内容详实,逻辑清晰。我相信大部分人都太了解这些知识了,所以我把这篇文章分享给大家,供大家参考。希望你看完这篇文章有所收获。让我们一起来看看吧。

比如运行一些mount、halt、su之类的命令,或者编辑一些系统配置文件,比如/etc/mtab、/etc /samba/smb.conf等。这样不仅减少了root用户的登录次数和管理时间,还提高了系统的安全性。一、sudo的特点

Sudo的角色注定在安全上要格外谨慎,否则会导致非法用户抢夺root权限。同时要兼顾易用性,让系统管理员更有效更方便的使用。Sudo设计者的目标是给用户尽可能少的权限,但仍然允许他们完成自己的工作。因此,sudo具有以下特点:

# 1.sudo可以限制指定用户在指定主机上运行某些命令。# 2.sudo可以提供日志,如实记录每个用户用sudo做了什么,并可以将日志传输到中央主机或日志服务器。# 3.sudo为系统管理员提供了一个配置文件,允许系统管理员集中管理用户的使用权和使用的主机。它的默认存储位置是/etc/sudoers。# 4.sudo使用时间戳文件来完成一个类似于“检票”的系统。当用户执行sudo并输入密码时,用户会获得一张“票”,默认生存期为5分钟(默认值可以在编译时更改)。超时后,用户必须重新输入密码。

二。sudo订单

Sudo程序本身是一个设置了suid位的二进制文件。我们可以检查它的权限:

复制代码代码如下:

$ ls-l/usr/bin/sudo-s-x-x 2 root root 106832 02-12 17:41/usr/bin/sudo

它的所有者是root,所以每个用户都可以像root一样执行程序。设置了suid的程序可以在运行时向用户提供所有者的euid。这就是为什么设置suid的程序必须认真编写的原因。但是设置一个命令文件的suid和用sudo运行它是不同的概念,扮演着不同的角色。

sudo的配置记录在/etc/sudoers文件中,我们将在下面详细解释。配置文件指示哪些用户可以执行哪些命令。要使用sudo,用户必须提供指定的用户名和密码。注意:sudo需要的不是目标用户的密码,而是执行sudo的用户的密码。如果不在sudoers中的用户通过sudo执行命令,sudo会向管理员报告这个事件。用户可以通过sudo -v v查询自己是否在sudoers,如果是,它还可以更新你“准考证”上的时间;如果没有,它会提示您,但不会通知管理员。

sudo命令格式如下:

复制代码代码如下:

sudo-k-l-v-h-k-l-v sudo[-hpsb][-a auth _ type][-c class-][-p prompt][-u username # uid]{-e file[...] -i -s命令}

我们来看看sudo的其他一些常用参数:

选项含义函数sudo-hhelp列出使用方法并退出。Sudo-vversion显示版本信息并退出。Sudo-llist列出了当前用户可以执行的命令。只有sudoers中的用户可以使用该选项。Sudo-uusername#uiduser以指定用户的身份执行命令。后面的用户不是root,可以是用户名,也可以是#uid。

Sudo-kkill清除“准考证”上的时间,下次使用Sudo需要输入密码。

Sudo-ksurekill类似于-k,但是它要撕掉“录取卷”,也就是删除时间戳文件。

Sudo-bcommandbackground在后台执行指定的命令。

Sudo-ppromptcommandprompt可以更改密码提示,其中%u将被替换为用户帐户名,%h将显示主机名。非常人性化的设计。Sudo-efileedit不是执行命令,而是修改文件,相当于命令sudoedit。

还有一些不常见的参数,可以在手册页sudo(8)中找到。

三。配置sudo

要配置sudo,您必须编辑/etc/sudoers文件,并且只有超级用户可以修改它,您还必须使用visudo来编辑它。使用Visudo有两个原因。首先,它可以防止

两个用户同时修改;其次,它还可以进行有限的语法检查。所以,即使你只是一个超级用户,你也最好用visudo来检查语法。

Visudo默认在vi中打开配置文件,并使用vi修改文件。我们可以在编译时修改这个默认项。Visudo不会在未经授权的情况下保存有语法错误的配置文件。它会提示你问题,询问如何处理,就像:

复制代码代码如下:

& gt& gt& gtsudoersfile:syntaxerror,第22行& lt& lt

此时,我们有三种选择:键入“e”重新编辑,键入“x”不保存退出,键入“q”退出并保存。如果真的选择了Q,那么sudo将不会再次运行,直到错误被纠正。

现在,让我们来看看神秘的配置文件,并了解如何编写它。让我们从一个简单的例子开始:让用户foobar通过sudo执行所有根可执行命令。以visudo为root打开配置文件,您可以看到以下几行:

复制代码代码如下:

# runasaliasspecification # userprivilegespecificationrootall =(all)all

我们一眼就能看出root拥有所有的权限,只要按照root现有的例子就可以了。下面加一行(最好用tab做空白):

复制代码代码如下:

foobarall=(all)all

保存并退出后,切换到foobar用户,我们将使用其身份执行命令:

复制代码代码如下:

[foobar @ localhost ~]$ ls/rootls:/root:权限不足[foobar @ localhost ~]$ sudols/root password:anaconda-ks . cfgdesktopnstall . log . log

好吧,我们来限制foobar的权利,不让他为所欲为。例如,我们只想让他像root一样使用ls和ifconfig,并将该行改为:

复制代码代码如下:

foobarlocalhost=/sbin/ifconfig,/bin/ls

然后执行命令:

复制代码代码如下:

[foobar @ localhost ~]$ sudo head-5/etc/shadow password:对不起,userfoobarisnotallowedtoexecute & # 39;/usr/bin/head-5/etc/shadow & # 39;asrootonlocalhost . local domain .[foobar @ localhost ~]$ sudo/sbin/ifconfigeth 0 linkencap:Ethernet hwaddr 00:14:85:EC:e9:9b...

现在让我们来看看这三者到底是什么意思。第一个all指的是网络中的主机,我们后来把它改成了主机名,表示foobar可以在这个主机上执行下面的命令。第二个括号中的all指的是目标用户,即将要执行命令的用户。最后的all当然指的是命令名。例如,我们希望foobar用户在linux主机上以jimmy或rene的身份执行kill命令,并编写如下配置文件:

Foobar Linux = (jimmy,rene)/bin/kill,但还是有一个疑问。foobar是以Jimmy还是Rene的身份执行?这个时候应该想到了sudo-u,就是这个时候用的。Foobar可以用sudo-ujimmykillpid或者sudo-urenekillpid,但是这个很麻烦。事实上,我们可以将rene或jimmy设置为默认目标用户,而无需每次都添加-u。向其中添加另一行:

Defaults:foobarunas _ default = Rene Defaults如果后面有冒号,则是以下用户的默认值;如果没有,则是所有用户的默认设置。就像配置文件中的一行:

defaultsenv_reset的另一个问题是,很多时候,我们已经登录了,每次使用sudo都要输入密码,很繁琐。我们能停止输入密码吗?当然,我们可以像这样修改配置文件:

foobar localhost = no passwd:/bin/cat,/bin/ls再次来到sudo:

复制代码代码如下:

[foobar @ localhost ~]$ sudols/root anaconda-ks . cfgdesktopinstall . log

install.log.syslog

当然你也可以用说“有些命令user foobar不能运行”!运算符,但这不是一个好主意。因为,用!操作员从所有命令中“剔除”一些命令通常是无效的。用户可以将该命令完全复制到另一个地方,并在更改名称后再次运行它。四。日志和安全性

Sudo对安全性考虑的很周到,不仅可以记录日志,必要时还可以向系统管理员报告。但是,sudo的日志功能不是自动的,必须由管理员打开。执行以下操作:

复制代码代码如下:

# touch/var/log/sudo # VI/etc/syslog . conf

在syslog.conf的末尾添加一行(必须用制表符分隔)并保存它:

Local2.debug/var/log/sudo重新启动了日志等待过程,

Psauxgrepsyslogd填充syslogd进程的pid(输出的第二列是pid ),如下所示:

通过这种方式,sudo可以写一个日志:

复制代码代码如下:

[foobar @ localhost ~]$ sudols/root anaconda-ks . CFG

desktop install . log install . log . syslog $ cat/var/log/sudo jul 2822:52:54 localhostsudo:foobar:tty = pts/1;pwd =/home/foobar;用户= root命令=/bin/ls/root

然而,有一个小“缺陷”就是sudo的日志记录不是很忠实:

复制代码代码如下:

[foobar @ localhost ~]$ su docat/etc/shadow & gt;/dev/null[foobar @ localhost ~]$ cat/var/log/sudo...7月28日23时10分24秒localhostsudo:foobar:tty = pts/1;pwd =/home/foobar;用户= root命令=/bin/cat/etc/shadow

重定向不录音!为什么?因为shell在命令运行之前就完成了重定向工作,所以sudo根本看不到重定向。这也有一个好处,下面的手段不会成功:

复制代码代码如下:

[foobar @ localhost ~]$ sudols/root & gt;/etc/shadowbash:/etc/shadow:权限不足。

Sudo有自己保护安全的方法。以root身份执行sudo-v并检查sudo的设置。出于安全考虑,有些环境变量没有传递给sudo后面的命令,或者在检查后才传递,比如path、home、shell等。当然,也可以通过sudoers配置这些环境变量。

未经允许不得转载:主机频道 » 如何在linux系统中使用sudo命令(linux sudo su命令)

评论 抢沙发

评论前必须登录!