您好、欢迎来到现金彩票网!
当前位置:秒速飞艇开奖 > 特权命令 >

11以root特权身份运行命令(组图)

发布时间:2019-06-07 07:22 来源:未知 编辑:admin

  用户获取root特权的传统方式是以root身份登录或者输入一条su命令并输入root口令。当普通用户在图形界面环境下执行某一条享有特权的命令时,系统将提示用户输入root口令。近来sudo()的使用已经取代了这些获取root特权身份的传统方法。

  Ubuntu安装之后没有提供root口令,从而达到将root账号锁定的目的。这种设置能够阻止任何人以root账号登录(除非启动系统进入恢复模式)。然而,系统中确实存在root账号(用户名为root的用户,请查看/etc/passwd文件的第一行)。这个账号/用户是一些文件的所有者(输入命令1S-1/bin,看看输出结果),并且运行了一些进程(输入命令ps-ef,看看输出结果左侧列)。对于Ubuntu系统的正常运转,root账号至关重要。

  sudo实用工具能够用来运行命令,就像你以root身份登录后的身份运行该命令一样。本书使用短语以特权身份运行来强调。虽然你没有以root身份登录,但是当你使用sudo时,就具有root用户的权限。

  Ubuntu强烈鼓励使用sudo。事实上,Ubuntu发行时将root账号锁定(它没有口令),这样你就没有办法使用传统的办法。就系统管理而言,与使用root账号相比,使用sudo具有如下很多优势。

  当使用sudo时,它要求你输入口令(不是root的口令),这样你只需要记住一个口令即可。

  sudo实用工具将它执行的所有命令记入日志。这种日志对于操作失误后的操作步骤回顾以及系统审计都非常有用。

  sudo实用工具能够允许实现比使用su和root账号更细粒度的安全策略。通过使用sudo,可以允许特定的用户来指定特定的命令,而使用传统的root账号设置没有办法完成有些事情。

  sudo的使用使得恶意用户获取系统访问机会变得更加困难。如果将root解锁,那么恶意用户在开始攻击之前就能够知道他想要破解的账号的用户名。而如果不将root解锁,该恶意用户就必须确定用户名和口令才能侵入系统。

  有些用户质疑sudo的安全性能是否弱于su。因为二者均依赖于口令,所以它们的强度和弱点都是一样的。如果口令被破解,那么系统就会被破解。然而,如果sudo所允许执行某项任务的用户的口令被破解,整个系统并不会处于危险境地。因此,如果使用得当,sudo具有的更加细微粒度的权限结构将使其成为一款比su更加安全的工具。此外,如果使用sudo调用单条命令,那么与用户使用su打开一个rootshell相比,用户试图在完成指定任务之后继续以root特权身份进行操作的可能性更小。

  当运行那些需要root特权身份的图形界面程序时,请使用gksudo(在KDE下面为kdesu)而不是sudo。尽管两款实用工具都能够以root特权身份运行程序,但是sudo使用用户的配置文件,而gksudo使用root的配置文件。大多数时候这种区别并不重要,但有时候却非常关键。有些程序如果用sudo来调用的话,就不能正常运行。使用gksudo能够阻止不正确的权限被应用到主目录中与X窗口系统相关的文件。在少数情况下,错误应用这些权限会导致你不能再次登录。此外,在桌面或面板上,你可以在启动器(参见《基础篇》4.3.3节)中使用gksudo。

  使用sudo并不总是设置系统的最好、最安全的方法。在只有一个用户使用的系统上,使用sudo与小心使用su和root口令之间没有太大的差别。而在一个有多个用户的系统中,特别是在集中管理的系统网络中,使用sudo比使用su更加安全。如果你是一个不能对sudo感到满意的彻底的UNIX/Linux用户,那么想要切换到su也很简单:为root账号指定一个口令,然后使用su。参见1.1.3节。

  在安装Ubuntu的时候,所设置的第一个用户包含到admin组中。sudo安装的时候被配置成允许admin组的成员以root特权身份运行。因为没有root口令,所以初始情况下在命令行下执行享有特权的管理任务的唯一方法是第一个用户使用sudo来运行它们。图形界面程序调用其他程序(比如gksudo,参见上面的提示),它又会调用sudo进行身份验证。

  时间戳默认情况下,sudo第一次运行的时候会要求你输入你的口令(不是root口令)。此时sudo为你设置时间戳。在提供口令之后,sudo(根据你的时间戳)在15分钟之内不会再次向你询问口令。

  在下面的示例中,Sam试图以用户sam(非特权用户)的身份来设置系统时钟。date实用工具显示一条错误消息,后面跟着他刚输入的日期的展开形式。当他使用sudo来运行date设置系统时钟的时候,sudo向他询问其口令,然后该命令成功运行。

  接下来,Sam使用sudo卸载文件系统。因为他在距离前一条sudo命令不超过15分钟之内输入这条命令,所以他不需要再次输入口令:

  现在,Sam使用选项-l查看sudo允许他运行哪些命令。因为他是这个系统中第一个注册用户(因而他是admin组成员),所以他被允许以任何用户的身份运行任何命令。

  派生root shell如果你需要以root特权身份运行多条命令,那么使用下面的方法将使这件工作变得更加容易:派生一个rootshell,输入命令而无需在每条命令前面敲入sudo,然后从该shell退出。这种方法会使sudo内置的一些防护措施失效,因而要小心使用,并记得要尽可能快地返回到非rootshell。(请查阅1.1节中关于最小特权的提示信息。)使用sudo的-i选项来派生rootshell:

  在这个示例中,sudo派生出一个rootshell,该shell显示提示符#,提醒你正在以root特权身份进行操作。id实用工具显示运行该shell的用户的身份信息。exit命令(还可以使用组合键Control+D)终止rootshell,让用户返回到他的正常状态以及之前的shell和提示符。

  sudo环境前一个示例中的pwd实用工具给出了选项-i(参见下面的选项部分)建立的被修改的环境的一个方面。这个选项派生一个root登录shell(这个shell拥有以root身份登录的用户能够拥有的一样的环境),同时执行root的初始化文件(参见《基础篇》9.2.1节)。在发出sudo-i命令之前,pwd内置命令显示/home/sam为Sam的工作目录;而在执行这条命令之前,它显示工作目录是/root,即root的主目录。使用选项-s(参见下面的选项部分)在不修改环境的情况下派生一个rootshell。如果调用sudo时不带任何选项,它将在一个未经修改的环境中运行你指定的命令。为了证明上面的说法,下面的示例让sudo运行pwd,不带任何选项。在这种方式下运行的命令的工作目录没有发生变化。

  输出重定向下面的命令未能成功运行的原因在于,尽管sudo派生的shell以root特权身份执行ls,但是用户正在运行的不享有特权的shell将输出重定向。用户的shell没有权限向/root目录写入数据。

  有几种解决这个问题的方法。最简单的方法是将整个命令行传递给在sudo下面运行的shell:

  bash的选项-c派生一个shell来执行紧跟在这个选项后面的命令字符串,而后终止。sudo实用工具以root特权身份运行派生出来的shell。可以将这个字符串用引号引起来,防止非特权shell解释其中的特殊字符。还可以用sudo-i来派生一个rootshell,执行命令,然后从特权shell中退出。(参见前一节内容。)

  处理sudo运行的命令的输出重定向问题的另一个方法是使用tee(参见《基础篇》7.2.4节):

  这条命令将ls的输出结果写入到文件中,同时还将其显示出来。如果不想显示输出结果,那么可以让非特权shell将输出结果重定向到/dev/null(参见2.1节)。在下面的示例中,使用这个办法消除屏幕输出,并使用tee的选项-a将输出追加到文件而不是重写其内容:

  其中,options是一个或多个选项,command是想要执行的命令。如果没有选项-u,sudo就会以root特权身份运行命令。下面是一些较为常见的选项,完整的选项列表请参见sudo的手册页。

  中为root(或者由-u指定的另一个用户)指定的shell,运行root(

  (kill,杀死) 重置运行这条命令的用户的时间戳(参见1.1.1节),

  (参见1.1.2节第3小节)中设置的参数。不要在这个选项后面带上一条命令。

  (list commands,列出命令) 正在运行sudo的这位用户能够在

http://mille-alliances.com/tequanmingling/190.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有