为什么我必须使用 sudo 才能执行 /home 目录之外的任何操作?

为什么我必须使用 sudo 才能执行 /home 目录之外的任何操作?

我刚刚安装了我的第一个 Linux 桌面(64 位 Ubuntu 12.04)并且正在试用它:

myUser@myMachine:~$ cd /opt/
myUser@myMachine:/opt$ mkdir lemmiwinks
mkdir: cannot create directory `lemmiwinks': Permission denied
myUser@myMachine:/opt$

如果我首先尝试sudo以 root 身份执行此操作,则会成功:

myUser@myMachine:/opt$ sudo mkdir lemmiwinks
[sudo] password for myUser: 
myUser@myMachine:/opt$ ls
lemmiwinks
myUser@myMachine:/opt$ 

这是怎么回事?为什么我必须sudo获得/opt(或任何其他非/home/myUser目录)的访问权限?

如何创建并授予新用户访问权限/opt?我也可以这样做吗myUser?提前致谢!

答案1

/opt 目录很可能由 root 拥有,即系统上的超级用户。在我的 ubuntu linux 系统上(与您的非常相似),当我以非 root 用户身份对 /opt 进行长列表时,情况如下:

~ $ ls -l /|grep opt
drwxr-xr-x   8 root root  4096 Jan  6  2012 opt

Linux 权限通常有三类:所有者的权限、对该目录/文件也具有特殊权限的其他组权限以及其他所有人的权限。

上面列表的第一部分“drwxr-xr-x”显示权限,然后“root root”显示所有者(root)和组(root),然后是大小和日期,后面是名称(opt)

从中,drwxr-xr-x 首先显示资源的类型,在本例中“d”代表目录,然后按顺序显示每个所有者、组和其他人的读|写|执行(rwx)权限。

因此在这种情况下,所有者(root)对 /opt 具有读、写和执行权限,但组成员(root)与其他人一样仅具有读和执行权限。

这是因为该组和其他人(r-xr-x 部分)没有写权限,导致您以“myUser”身份运行,无法在 /opt 中创建新目录

/opt 通常是安装第三方软件的地方,因此不清楚为什么您希望新用户能够写入 /opt,因为他们可以例如修改 /opt 中的其他软件。

默认情况下,所有用户都可以访问 /opt 并从中读取但不能写入,如图所示,授予 /opt 上每个人的 rx 权限。

但是,如果您确实希望“新用户”能够在 /opt 中写入,您至少有几个选择:

  • 您可以将 /opt 上的所有人权限更改为 rwx(不建议);或者
  • 您可以将 /opt 的组所有权更改为其他内容,例如“optgroup”,并使组权限为 rwx(其他所有人的权限均为 rx),然后将新用户添加到您创建的组“optgroup”中;

非常谨慎关于向新用户授予他们不应更改的地方的权限。

阅读有关 Linux 文件权限的更多信息网址:http://www.tuxfiles.org/linuxhelp/filepermissions.html

答案2

sudo 本质上与在 Windows 7 或 Vista 的 UAC 中单击“确定”相同。您正在授予自己按需管理员权限。

要授予其他用户访问文件夹的权限(编辑、创建等),只需授予他们您希望他们拥有的访问权限级别,或者授予管理员权限。他们也必须使用 sudo。

您可以通过始终以提升的用户身份运行来禁用 sudo,但不建议这样做。Linux、OS X 和 Windows 6+ 的安全性之一是您永远不应以管理员身份运行,当您收到提升权限的提示时,您应该知道您请求了该操作,然后相应地批准或拒绝。没有这个,您可能会在未经您明确许可或不知情的情况下安装或运行奇怪的软件。这可能是恶意软件、病毒,或者只是您不想运行或安装的 Word 或浏览器插件。此外,一旦某些东西找到了在没有明确许可的情况下在系统上运行的方法,某些恶意软件就可以使用这种低级别的查找信息来提升自身或其他软件的权限。例如,通过社会工程学进行的黑客攻击可以从这个访问级别开始。

此外,Windows 也是一样的,默认情况下,您对 %UserProfile%* 具有完全访问权限,但如果未提升并允许操作,则不能完全访问其他用户或 C:\ 的根目录。

答案3

您必须以 root 身份(超级用户)才能操作系统文件和文件夹,就像在 Windows 中必须授予管理权限才能执行相同操作一样。sudo代表superuser do,但您可以su以 root 身份使用终端(以及从中启动的每个程序),这样就不必sudo在每个高级命令前键入。exit返回myUser。我不确定您的发行版,但在 Debian 中也有一个 root 终端,就您的意图和目的而言,它与使用 具有相同的效果su

事情就是这样的。Linux 一直被认为是一个多用户系统,所以你可以把它看作是多用户系统的结果,但这也是为了你自己好,因为使用 root 帐户做日常事务可能会结局不好

答案4

一些颜色:

文件/opt/系统通常用于第三方软件包。完整软件包安装在其中/opt/packagename或任何其他位置。这与 /usr 或 /usr/local 稍有不同,因为在这些位置,一堆文件混杂在一起。

那么,为什么要/opt/锁定呢?通常,共享二进制区域是锁定的。如果我讨厌 bob,我不想安装会清除其主目录的“官方”软件包。

另一个原因是磁盘空间。如果我是系统管理员,我不希望任何人安装可能损坏我电脑的东西。你相信每个能写入东西的人都不会破坏/opt其他东西吗?用户是否会写入太多东西并溢出 /opt 分区?或者甚至意外删除其他文件并破坏其他应用程序?

如果您想让人们访问/opt,我会创建一个 UNIX 组,Idunno optadm 或任何其他组,并让该组在 /opt 上具有权限,然后如果您相信他们不会过多地使用它,请授予特定用户该组的成员资格。另外,请确保它/opt位于自己的分区上。您不希望某些人在 /opt 中玩游戏,以免他们因为安装某些游戏而破坏系统的其他部分。

相关内容