有一个与众不同的特点,那就是初次使用时,你无法作为root来登录系统,为什么会这样?这就要从系统的安装说起。对于其他Linux系统来说,一般在安 装过程就设定root密码,这样用户就能用它登录root帐户或使用su命令转换到超级用户身份。与之相反,Ubuntu默认安装时,并没有给root用 户设置口令,也没有启用root帐户。问题是要想作为root用户来运行命令该怎么办呢?没关系,我们可以使用sudo命令达此目的。

sudo是linux下常用的允许普通用户使用超级用户权限的工具,该命令为管理员提供了一种细颗粒度的访问控制方法,通过它人们既可以作为超级用户 又可以作为其它类型的用户来访问系统。这样做的好处是,管理员能够在不告诉用户root密码的前提下,授予他们某些特定类型的超级用户权限,这正是许多系 统管理员所梦寐以求的。

1.sudo的缺省配置

默认时,Ubuntu为sudo提供了一个基本的配置,该配置保存在/etc目录下的sudoers文件中。在修改该配置文件时,务必使用 visudo工具来进行编辑,因为该工具会自动对配置语法进行严格检查,如果发现错误,在保存退出时给出警告,并提示你哪段配置出错,从而确保该配置文件 的正确性。相反,如果使用其它的文本编辑程序的话,一旦出错,就会给系统带来严重的后果。下面给出的是Ubuntu默认的/etc/sudoers文件内 容:

User privilege specification

root ALL=(ALL) ALL

Members of the admin group may gain root privileges

%admin ALL=(ALL) ALL

下面对以上配置做简要说明:

第一项配置的作用,是允许root用户使用sudo命令变成系统中任何其它类型的用户。第二个配置规定,管理组中的所有成员都能以root的身份执行 所有命令。因此,在默认安装的Ubuntu系统中,要想作为root身份来执行命令的话,只要在sudo后面跟上欲执行的命令即可。下面用一个例子加以说 明,如果您想执行apt-get

update的话,应当在命令行中键入以下内容:

$ sudo apt-get update

2.配置文件语法详解

接下来,我们用一个实例来详细解释/etc/sudoers文件的配置语法,请看下面的例子:

jorge ALL=(root) /usr/bin/find, /bin/rm

上面的第一栏规定它的适用对象:用户或组,就本例来说,它是用户jorge。此外,因为系统中的组和用户可以重名,要想指定该规则的适用对象是组而非 用户的话,组对象的名称一定要用百分号%开头。

第二栏指定该规则的适用主机。当我们在多个系统之间部署sudo环境时,这一栏格外有用,这里的ALL代表所有主机。但是,对于桌面系统或不想将 sudo部署到多个系统的情况,这一栏就换成相应的主机名。

第三栏的值放在括号内,指出第一栏规定的用户能够以何种身份来执行命令。本例中该值设为root,这意味着用户jorge能够以root用户的身份来 运行后面列出的命令。该值也可以设成通配符ALL,jorge便能作为系统中的任何用户来执行列出的命令了。

最后一栏(即/usr/bin/find,

/bin/rm)是使用逗号分开的命令表,这些命令能被第一栏规定的用户以第三栏指出的身份来运行它们。本例中,该配置允许jorge作为超级用户运行

/usr/bin/find和 /bin/rm这两个命令。需要指出的是,这里列出的命令一定要使用绝对路径。

3.sudo命令的使用方法

现在的问题是,用户jorge怎样利用分配给他的权限呢?其实很简单,只要在命令行模式下使用 sudo命令。

加上他想运行的程序就可以了,比如:

www.linuxidc.com @ubuntu:~$ sudo find . ! -name ‘*.avi’ -exec rm -f //{//} //;  倘若jorge企图执行/etc/sudoers文件规定之外的程序(比如find

rm)的话,sudo命令便会以失败而告终,并给出警告信息,指出他无权以超级用户身份来运行这些命令。

要想以非root用户身份来运行命令,必须使用-u选项来指定想要作为的用户;否则的话,sudo会默认为root用户,比如要想以fred身份来执 行ls命令,就应该这样:

$ sudo -u fred ls /home/fred  就像您看到的那样,我们可以利用这些规则为系统创建具体的角色。例如,要让一个组负责帐户管理,你一方面不想让这些用户具备完全 的root访问权限,另一方面还得让他们具有增加和删除用户的权利,那么我们可以在系统上创建一个名为accounts的组,然后把那些用户添加到这个组 里。之后,再使用visudo为/etc/sudoers添加下列内容:

%accounts ALL=(root) /usr/sbin/useradd, /usr/sbin/userdel,

/usr/sbin/usermod  现在好了,accounts组中的任何成员都能运行useradd、userdel和usermod命令了。如果 过一段时间后,您发现该角色还需要其他工具,只要在该表的尾部将其添上就行了。这样真是方便极了!

需要注意的是,当我们为用户定义可以运行的命令时,必须使用完整的命令路径。这样做是完全出于安全的考虑,如果我们给出的命令只是简单的userad 而非

/usr/sbin/useradd,那么用户有可能创建一个他自己的脚本,也叫做userad,然后放在它的本地路径中,如此一来他就能够通过这个名为

useradd的本地脚本,作为root来执行任何他想要的命令了。这是相当危险的!

sudo命令的另一个便捷的功能,是它能够指出哪些命令在执行时不需要输入密码。这很有用,尤其是在非交互式脚本中以超级用户的身份来运行某些命令的 时候。例如,想要让用户作为超级用户不必输入密码就能执行kill命令,以便用户能立刻杀死一个失控的进程。为此,在命令行前边加上NOPASSWD:属 性即可。例如,可以在/etc/sudoers文件中加上下面一行,从而让jorge获得这种权力:

jorge ALL=(root) NOPASSWD: /bin/kill, /usr/bin/killall  这样一来,jorge就能运行以下命令,作为root用户来杀死失控的rm进程了。

www.linuxidc.com @ubuntu:~$ sudo killall rm

6.如何启用root帐户

通过以上介绍,我们发现sudo的确很好用,但是如果您早就习惯了在root下工作,想回味一下过去的感觉该怎么办呢?很简单,只要为root设置一 个root密码就行了:

$ sudo passwd root  好了,现在您能直接作为root登录了

Ubuntu中sudo命令相关推荐

  1. linux中sudo命令_Linux中的Sudo命令

    linux中sudo命令 Sudo is one of the most widely used commands by Linux administrators and beginners alik ...

  2. 卸载 linux 命令行,如何在 Ubuntu 中使用命令行卸载 CrossOver

    在 Ubuntu 中如果我们想要使用 Windows 应用程序,那么可以安装一个 CrossOver,在此已经为大家介绍过了这款系统兼容软件的各种优势,在此便不一一阐述了. 在此之前为大家介绍过在 U ...

  3. 解决Ubuntu执行sudo命令后提示无法解析主机

    解决Ubuntu执行sudo命令后提示无法解析主机 异常现象 异常原因 查看修改主机名 普通用户与管理员间的切换 异常现象 异常原因 /etc/hostname和/etc/hosts文件中主机名称不一 ...

  4. sdcv: 在Ubuntu中使用命令行查询离线英文词典

    在Ubuntu中,通过**sdcv**可以在命令行终端环境中查询英文单词,词库以离线形式存在.**sdcv**是词典**StartDcit**的命令行终端版本. ### Installation 通过 ...

  5. 解决Ubuntu中vi命令的编辑模式下不能正常使用方向键和退格键的问题

    在Ubuntu中,进入vi命令的编辑模式,发现按方向键不能移动光标,而是会输出ABCD,以及退格键也不能正常删除字符.这是由于Ubuntu预装的是vim-tiny,而我们需要使用vim-full,解决 ...

  6. linux中sudo命令概述

    SUDO 使用背景 Sudo 的全称为:super user do. 顾名思义:干超级用户才能干的事!所以Sudo最常用的功能就是提升一个命名的执行权限. Linux是以用户和组来管理权限的,如果你使 ...

  7. 【Linux中sudo命令】

    sudo: 允许普通用户使用一下root用户才可以执行的命令 sudo命令在执行时需要验证用户口令,所以使用该命令的用户必须有密码 1.限制用户在某台主机上执行 2.提供了非常详尽的日志, 3.提供了 ...

  8. 「ubuntu」sudo命令卡住

    由于修改了主机名,而且/etc/hosts中的主机名映射给注销掉了,回到bash中使用sudo命令就变的很卡 需要在 /etc/hosts中增加本主机名的映射,比如 127.0.1.1 <主机名 ...

  9. ubuntu下sudo命令不能使用问题

    不知道从什么时候开始,ctrl+alt+F1进入命令行之后,登录成功.使用sudo命令,不能使用....被坑了很久. 解决方法: 出现 [sudo ] username !!! 之后,在输入一遍 密码 ...

最新文章

  1. python试题for循环布尔值_Python自我修炼(升仙中....整数,布尔值,字符串,for循环)
  2. 2021首期Nature封面:牛津大学ML算法实现10万高压非晶硅原子的模拟​ | AI日报
  3. 执行phpize Cannot find config.m4
  4. 一个简易实用的web权限管理模块的应用与实现
  5. [V2.0 alpha]又一款博客园Android客户端低调推出
  6. Python邻接矩阵邻接表转换
  7. shift and算法
  8. 三阶段提交协议(有限状态自动机)
  9. 基于Funcode设计C语言游戏–迷你高尔夫
  10. mac os+selenium2+chrome驱动+python3
  11. vue 中使用 js-xlsx 导出数据导 excle, 支持多 sheet
  12. IPETRONIK为您提供专业化的数据采集软件IPEmotion进行声学采集与分析
  13. C语言报错警告合集(转)
  14. 自己的智能AI聊天机器人,可自定义头像,免费html源码分享,粘贴即用!
  15. 图片按指定比例缩放并压缩至指定大小,解决保存图片文件体积过大bug。
  16. python入门题库 赶紧来试试自己的水平吧
  17. 修改改EXCEL页眉页脚
  18. 小寒也会写程序(五)
  19. python求解优化问题_科学计算:最优化问题-2(Python)
  20. 疫情无情,人间有爱,百迈客免费赠送1000个微生物云分析账号

热门文章

  1. 水面反光如何拍摄_怎样拍好水面上的倒影?水面倒影拍摄技巧介绍
  2. pythonstaticmethod调用外部变量_在Python中,是否可以从staticmethod引用实例变量?
  3. 系统安全-BadUsb代码以及木马远控的制作(可绕过360)
  4. Hugging Face PEFT 调优实战附代码
  5. Laya 3D 画线
  6. oracle11g 下载图解,oracle11g 64位客户端下载 附安装教程
  7. CSS 实现好看的边框
  8. HTML一些常用的表单元素,表单元素-HTML中常用的表单元素
  9. sketchup怎么建模使用1skp素材库的同时进行无损渲染呢?
  10. js --- 扩展运算符