如果我正确理解 Linux 哲学,sudo
应该谨慎使用,并且大多数操作应该作为低权限用户执行。但这似乎没有意义,因为我总是不得不输入sudo
,无论是管理包、编辑配置文件、从源代码安装程序,还是你有什么。这些甚至都不是技术性的东西,只是普通用户所做的任何事情。
它让我想起了 Window 的 UAC,人们要么禁用它,要么配置为不需要密码(只需单击一下)。此外,许多人的 Windows 用户也是管理员帐户。
另外,我看到有些人显示sudo
不需要sudo
. 他们是否以sudo
不需要的方式配置了他们的系统?
roa*_*ima 76
你提到了这些系统管理功能
管理包、编辑配置文件、从源代码安装程序
作为事物
普通用户所做的任何事情
在典型的多用户系统中,这些不是普通的用户操作;系统管理员会担心这一点。普通用户(不是“特权不足”)可以使用该系统而无需担心其维护。
在家庭系统上,是的,您最终必须管理和使用系统。
用起来真的有那么难sudo
吗?请记住,如果这只是您的系统,那么您没有理由不能弹出root
shell(sudo -s
-有关获取 root shell 的各种方法的概述,请参阅此帖子)和/或配置为sudo
不提示输入密码。
Gra*_*avy 33
每当您执行标准用户不应有能力执行的操作时,就会使用 Sudo/Root,以免以系统管理员通常不允许的方式损坏/更改系统配置。
无论我是管理包、编辑配置文件、从源代码安装程序,还是你有什么。
从技术上讲,所有这些都是管理功能,如果执行不正确的操作,可能会严重损坏您的系统。在公司环境中,作为系统管理员,我不会让我的用户在我不知情的情况下做这些事情,因此 sudo。
例如,如果可以在没有提升权限的情况下修改包/配置文件,那么对于外部源来说,简单地执行可能会破坏/危害您的系统的远程代码将是非常简单的。通过强制这些操作需要 root 访问权限,它会强制您作为用户来决定是否发生这些操作。
它UAC
与 windows非常相似,它实际上是 windows 获得UAC
.
您第一次使用 sudo 时收到的报价非常合适,而且非常重要:
我们相信您已经收到了当地系统管理员的常规讲座。通常归结为以下三点:
Run Code Online (Sandbox Code Playgroud)#1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility.
尤其是#2,打字前要三思。这是 sudo 存在的一个重要原因,当您键入一个命令时,它会反击“必须是 root 才能执行此操作”,它会迫使您停下来思考您实际在做什么。
Tho*_*ner 20
另外,我看到有些人显示
sudo
不需要sudo
. 他们是否以sudo
不需要的方式配置了他们的系统?
您必须以超级用户身份执行这些命令,但不必使用sudo
. 例如,您可以改为使用su
或doas
(OpenBSDs 替换为sudo
),或者您可以简单地以 root 身份登录。
因此,如果他们在这里显示他们的命令而sudo
不是他们假设读者将只是使用他最喜欢的超级用户身份执行这些命令的方式。
这当然并不意味着他们可以作为普通用户执行这些命令。
Dmi*_*yev 17
提供的一项安全功能sudo
是您可以拥有一个没有root
密码的系统,因此root
用户无法直接登录。这为选择弱密码的用户提供了额外的保护——试图暴力破解密码(通过 SSH 或其他方式)的攻击者必须首先确定一个有效的用户名。
另一方面是更细粒度的权限管理。以 root 身份考虑make; sudo make install
vs 做make; make install
。期间很多事情都可能出错make
。配置不当的工具可能会尝试覆盖重要的系统文件、“清理”/lib
而不是当前目录、消耗所有可用 RAM 并挂起系统等,这make install
是一个很小的简单操作,发生致命错误的可能性要小得多。
xji*_*xji 15
关键是,从历史上看,一个系统实际上是由多个用户共享的,这些用户只是登录、做一些事情然后注销。从而区分管理员和普通用户。这样的系统仍然存在于大学实验室中,如果您使用这样的计算机,您会明显感觉到差异。您是唯一用户并且碰巧必须充当管理员的家用 PC 确实是一个较晚的开发。
小智 12
电脑是一种工具。让我们尝试用另一种工具进行类比,比如说煎锅。有时,您必须照顾好您的煎锅。例如,您必须用洗洁精清洁它。您会说洗洁精是您使用煎锅制作的任何食谱的必需成分吗?你永远不会看到“洗洁精”列为烹饪书中的一种成分。是需要的,但是工具的准备是另外一回事,所以烹饪书上没有提到。煎锅必须清洁,但这不是它的用途。
这对你的电脑来说是一样的。它必须被配置和照顾,但这不是它的目的。你照顾它,你配置它,所以它可以正常工作。完成此操作后,您可以使用它,而不是作为系统管理员,而是作为用户。这就是它的目的。当您是用户时,您不再需要sudo。只需使用您事先准备好的工具。当然,有时您需要使用 root 权限,就像您必须像使用煎锅一样经常清洁煎锅一样。
因此,毫不夸张地说,我们可以说您永远不需要sudo(或 root 密码)来使用您的计算机。只准备你的电脑。
我敢打赌,这是因为您将 GUI 软件用于除系统管理任务之外的所有任务,或者您正在谈论 Linux 服务器,在这种情况下,大多数访问自然是系统管理。因此,感觉就像在 shell requires 中做任何事情一样sudo
。
也可以将 shell 用于您的日常任务。管理您的个人文件~
、编辑文件、在 IRC 上聊天、编译代码、浏览网页,所有这些都可以在 shell 中完成。我什bc
至用作我的首选计算器。有些事情通过 GUI 更容易完成,有些事情通过 shell 更容易完成——即使你更喜欢使用 GUI,shell 通常在批处理操作和自动化方面表现出色(想想 shell 脚本)。我个人使用最适合手头任务的方法。
在某些情况下,设置您的系统是个好主意,这样您就不需要sudo
每次都使用默认情况下需要 root 但不太可能导致问题的操作。一个例子是,我使用涉及使用串行端口的硬件,并且我已经设置了 udev 规则,以便以我的普通用户身份访问设备,而不必是 root。
我认为配置sudo
为不需要密码不是一个好主意。使用一个错误输入的命令或恶意脚本很容易弄乱整个系统。
如果您需要始终执行绝对需要 root 的任务,为什么不在sudo -s
终端窗口中运行持久的root shell?然后它就可以使用而无需输入密码,并且不那么容易意外使用。我什至在 root shell 中将我的 shell 提示设置为鲜红色。
[...] 但这似乎没有意义,因为我总是不得不输入 sudo,无论是管理包、编辑配置文件、从源代码安装程序,还是您有什么。[...]
与所有这些相关的隐含形容词是它们是系统范围或 全局的变化。您必须将 Unix 的起源视为一个多用户系统1,其中多个用户将远程使用相同的安装。一个外行用户允许更改所有用户的全局设置是没有意义的。这是系统管理员的、根的、特权和责任。
在多用户设置,你有预装软件,并在他们的系统级配置/usr
和/etc
分别。触摸这些位置需要 root 权限。但是由于Unix软件是考虑多用户编写的,所以你可以在$HOME
目录2下编译安装软件,并且在你的家下有你自己的配置文件,你可以在那里自由编辑文件,而不是超级用户。
除了在家里安装自己的软件外,大多数系统范围的软件会$HOME
在第一次从/etc
. 这使您可以自定义大部分内容而无需进行任何操作root
。
使用家用 PC,在单个主用户设置中,您可以使用sudo
自己喜欢的方式并根据自己的喜好进行设置。但它习惯以不接触的应用程序配置/etc
,而是始终提供家庭用户特定的配置。这样你就可以让你的包管理器在升级时重置系统范围的配置。在单用户设置中,在系统范围内安装新软件非常好;发行版软件包不假设替代品,因此这是一个简单的出路。
我会让我的包管理器在全局安装东西,但任何从源代码编译的东西和自制的东西我都留在$HOME
. 而且我不必为此执行任何操作。
如果您有外部的数据文件,存储$HOME
,随意chown
或
chgrp
目录到你的名字,所以你可以访问这些文件没有
sudo
。
[1](有点讽刺,因为 Unix 本来就是 Multics 操作系统的“单用户”版本)
[2](如果系统允许通过不将主分区挂载为 noexec)
归档时间: |
|
查看次数: |
41574 次 |
最近记录: |