`
mintelong
  • 浏览: 396203 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Ubuntu下sudo命令的用法

阅读更多
利用sudo命令为Ubuntu分配管理权限

Ubuntu 有一个与众不同的特点,那就是初次使用时,你无法作为root来登录系统,为什么会这样?这就要从系统的安装说起。对于其他Linux系统来说,一般在安装过程就设定root密码,这样用户就能用它登录root帐户或使用su命令转换到超级用户身份。  

   与之相反,Ubuntu默认安装时,并没有给root用户设置口令,也没有启用root帐户。问题是要想作为root用户来运行命令该怎么办呢?没关系,我们可以使用sudo命令达此目的。

Ubuntu 如何启用root帐户
        只要为root设置一个root密码就行了:
        $ sudo passwd root
        好了,现在您能直接作为root登录了。

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

1.sudo的缺省配置

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

# User privilege specificationroot 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命令。

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

jorge@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进程了。 jorge@ubuntu:~$ sudo killall rm
分享到:
评论

相关推荐

    Ubuntu中sudo命令的使用

    ### Ubuntu中sudo命令的使用详解 #### 一、引言 Ubuntu系统因其用户友好性和安全性而受到广泛欢迎。其中一个重要特性就是默认禁用了root账户的直接登录,而是通过`sudo`命令来实现管理员级别的操作。本文将深入...

    linux不能使用sudo命令解决方案

    但是,在某些情况下,使用 sudo 命令时可能会出现 "username is not in the sudoers file" 的错误信息,这是因为当前用户没有被添加到 sudoers 文件中。 sudoers 文件是 Linux 系统中的一种配置文件,它定义了哪些...

    Ubuntu中sudo执行需要网络代理的命令.pdf

    在使用Ubuntu系统时,可能会遇到需要通过`sudo`执行某些命令的情况,这些命令可能涉及网络访问,例如安装软件包或者更新系统等。通常情况下,用户会设置自己的网络代理来确保能够正常访问互联网。然而,在某些情况下...

    Ubuntu终端常用命令

    以上介绍了一些常用的Ubuntu终端命令及其基本用法,通过这些命令的学习和实践,可以大大提高用户在Linux系统中的操作效率和管理水平。希望读者能够熟练掌握并运用这些命令,更好地使用Ubuntu操作系统。

    Linux命令su、sudo、sudo su、sudo -i使用和区别.doc

    sudo命令则允许用户以其他用户(通常为root)的身份执行单个命令,而不需要知道该用户的密码。用户需要输入自己的密码,因为sudo的权限是基于用户配置的。在大多数系统中,sudo执行的命令会有时间限制,比如Ubuntu...

    Ubuntu 常用文件操作命令

    在 Ubuntu 中,权限修改命令使用 chmod 命令来实现。chmod 命令的基本语法格式为:`sudo chmod XXX 文件名`,其中 XXX 代表权限值,文件名是要修改权限的文件名称。 权限值是一个三位数,每一位分别代表所有者、组...

    ubuntu下如何通过mail命令发送邮件

    ### Ubuntu下通过Mail命令发送邮件 #### 一、引言 在Linux环境下,尤其是Ubuntu操作系统中,使用命令行工具发送电子邮件是一种非常实用的功能。本文将详细介绍如何在Ubuntu系统中利用`mail`命令来发送邮件,并提供...

    ubuntu常用使用命令

    ### Ubuntu常用命令详解 ...以上是Ubuntu系统中常用的一些命令和操作,这些命令涵盖了从基本的文件操作到高级的系统管理,对于日常使用非常有用。通过掌握这些命令,可以极大地提高在Ubuntu环境下的工作效率。

    Ubuntu Linuxs 常用命令大全.pdf

    ### Ubuntu Linux常用命令详解 #### 一、软件管理与系统维护命令 **1. 查看软件安装内容** - **命令**: `dpkg -L xxx` - 这个命令用于查看某个已安装软件包`xxx`的具体安装内容,包括文件路径等。 **2. 查找...

    ubuntu删除文件夹命令

    在 Ubuntu 中,有一个安全删除命令 `sudo rm -i`,这个命令可以防止意外删除重要文件或文件夹。使用这个命令时,将会询问是否确认删除,以避免误删重要文件或文件夹。 递归删除命令 要删除文件夹及其所有子文件和...

    Ubuntu实验二之简单命令

    熟练使用sudo命令,执行需要管理员权限的任务。 **实验分析** - 修改系统时间、编辑关键配置文件等任务通常需要管理员权限。 - sudo命令使得普通用户可以在限定时间内获得这些权限。 **实验步骤** 1. **修改系统...

    ubuntu下openjdk7 openjdk8

    这两个版本在Ubuntu中的安装、配置和使用是本文的重点。 首先,我们来了解OpenJDK7。OpenJDK7是Java SE 7的开源实现,它包含了JVM、Java类库以及Java编程工具。这个版本引入了一些重要的新特性,如钻石操作符()、...

    Ubuntu下samba的使用

    ### Ubuntu下samba的使用 #### 一、安装与配置Samba服务器 ##### 1. 安装Samba服务器 要在Ubuntu系统上安装Samba服务器,可以使用以下命令: ```bash sudo apt-get install samba ``` 同时,为了能够在Ubuntu系统...

    Ubuntu Linux命令大全

    ### Ubuntu Linux 命令大全知识点详解 #### 一、概览 Ubuntu Linux是一个广泛使用的开源操作系统,基于Debian发行版。它适用于个人电脑、服务器和云环境等。本文档旨在提供一系列基本到高级的Ubuntu Linux命令,...

    ubuntu7.04网络配置命令

    在Ubuntu 7.04(Feisty Fawn)这个版本中,网络配置主要通过命令行来完成,这对于熟悉Linux操作的用户来说是非常实用的。...学习和熟练掌握这些命令行操作,将有助于你在没有图形界面的情况下高效管理Ubuntu系统。

    Ubuntu_linux命令大全

    ### Ubuntu Linux 命令大全知识点解析 #### 标题:Ubuntu Linux命令大全 - **核心概念**:本文档旨在全面覆盖Ubuntu Linux操作系统中的常用命令,适用于初学者至进阶用户的广泛需求。Ubuntu作为广受欢迎的Linux发行...

    Ubuntu各种安装命令小计

    本文将详细介绍Ubuntu中常见的安装命令及其使用方法。 首先,我们来看看两个文件名`install.sh`和`pecl.install.sh`。它们通常是脚本文件,用于自动化执行一系列命令。`install.sh`可能是一个自定义的安装脚本,它...

    ubuntuip命令.pdf

    本文将详细介绍 Ubuntu IP 配置命令的使用方法和配置步骤。 一、设置 IP 地址 设置 IP 地址是 Ubuntu IP 配置命令的基本步骤。使用 ifconfig 命令可以设置网卡的 IP 地址和子网掩码。例如: sudo ifconfig eth0 ...

    Ubuntu基本命令大全txt

    - **示例:** 运行此命令可得知您正在使用的Ubuntu版本号。 **3. 查看已加载的内核模块** - **命令:** `lsmod` - **描述:** 列出当前内核已加载的所有模块。 - **示例:** 若要查看哪些模块已被加载,请执行此...

    ubuntu命令(全)

    1. **安装软件**:使用`sudo apt-get install`命令可以安装Ubuntu仓库中的软件,例如要安装QQ,可以运行`sudo apt-get install qq`。 2. **查看软件信息**: - `dpkg -L package_name`:显示已安装软件的文件位置...

Global site tag (gtag.js) - Google Analytics