sudo 机制可以让你轻松以普通用户偶尔执行管理任务。让我们来学习一下。
本文是我们关于迁移到 Linux 的系列文章的第五篇。如果你错过了之前的那些,你可以在这里赶上:
你可能一直想了解 Linux。也许它在你的工作场所使用,如果你每天使用它,你的工作效率会更高。或者,也许你想在家里的某些计算机上安装 Linux。无论是什么原因,这一系列文章都是为了让过渡更容易。
与许多其他操作系统一样,Linux 支持多用户。它甚至支持多个用户同时登录。
用户帐户通常会被分配一个可以存储文件的家目录。通常这个家目录位于:
/home/<login name>
这样,每个用户都有存储自己的文档和其他文件的独立位置。
管理任务
在传统的 Linux 安装中,常规用户帐户无权在系统上执行管理任务。典型的安装 Linux 的系统会要求用户以管理员身份登录以执行某些任务,而不是为每个用户分配权限以执行各种任务。
Linux 上的管理员帐户称为 root。
Sudo 解释
从历史上看,要执行管理任务,必须以 root 身份登录,执行任务,然后登出。这个过程有点乏味,所以很多人以 root 登录并且整天都以管理员身份工作。这种做法可能会导致灾难性的后果,例如,意外删除系统中的所有文件。当然,root 用户可以做任何事情,因此没有任何保护措施可以防止有人意外地执行影响很大的操作。
创建 sudo
工具是为了使你更容易以常规用户帐户登录,偶尔以 root 身份执行管理任务,而无需登录、执行任务然后登出。具体来说,sudo
允许你以不同的用户身份运行命令。如果你未指定特定用户,则假定你指的是 root 用户。
sudo
可以有复杂的设置,允许用户有权限使用 sudo
运行某些命令,而其他的不行。通常,安装的桌面系统会使创建的***个帐户在 sudo
中有完全的权限,因此你作为主要用户可以完全管理 Linux 安装。
使用 Sudo
某些安装 Linux 的系统设置了 sudo
,因此你仍需要知道 root 帐户的密码才能执行管理任务。其他人,设置 sudo
输入自己的密码。这里有不同的哲学。
当你尝试在图形环境中执行管理任务时,通常会打开一个要求输入密码的对话框。输入你自己的密码(例如,在 Ubuntu 上)或 root 帐户的密码(例如,Red Hat)。
当你尝试在命令行中执行管理任务时,它通常只会给你一个 “permission denied” 错误。然后你在前面用 sudo
重新运行命令。例如:
systemctl start vsftpd
Failed to start vsftpd.service: Access denied
sudo systemctl start vsftpd
[sudo] password for user1:
何时使用 Sudo
以 root 身份运行命令(在 sudo
或其他情况下)并不总是解决权限错误的***解决方案。虽然将以 root 身份运行会消除 “permission denied” 错误,但有时***寻找根本原因而不是仅仅解决症状。有时文件拥有错误的所有者和权限。
当你在尝试一个需要 root 权限来执行操作的任务或者程序时使用 sudo
。如果文件恰好由另一个用户(包括 root 用户)拥有,请不要使用 sudo
。在第二种情况下,***正确设置文件的权限。