为什么我必须sudo在我的/ home目录之外做任何事情?


2

我刚刚安装了我的第一个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 还有?提前致谢!

Answers:


6

/ opt目录很可能由root拥有,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上显示每个人的r-x权限,访问/ opt并从中读取但不写入。

但是,如果您真的希望'新用户'能够在/ opt中写入,那么您至少有以下几种选择:

  • 你可以改变/ opt到rwx的所有权限(不可取);要么
  • 您可以将/ opt的组所有权更改为其他人说'optgroup'并将组权限设为rwx(将其他人留在r-x),然后将新用户添加到您创建的组'optgroup'中;

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

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


谢谢@sdjuan(+1) - 真棒,真棒的答案。你能否在AthomSteve的答案下看到我的评论?我有同样的问题给你!再次感谢!
pnongrata

@pnongrata示例是使用如上所述设置的权限写入/ opt,需要提升权限,您可以通过执行sudo来使用超级用户权限来执行该任务。当你sudo你然后能够使用root权限。有一件事要做的是当你作为普通用户登录时做whoami然后做一个sudo whoami看看你和sudo一起成为谁。我希望有所帮助。
sdjuan

5

sudo与在Windows 7或Vista的UAC中单击OK基本相同。您正在授予自己按需管理员权限。

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

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

此外,Windows是相同的,默认情况下,您可以完全访问%UserProfile%*,但不能完全访问其他用户或C:\的根,而不提升并允许操作。


谢谢@AthomSteve(+1) - 请你详细说明你的意思“ ...没有这个,那么你可能会安装一个奇怪的软件...... “也许还举一个具体的例子?再次感谢!
pnongrata

@pnongrata,添加了我的意图。
Austin T French

2

您必须是root(超级用户)才能弄乱系统文件和文件夹,就像在Windows中提供管理权限一样。 sudo 代表 superuser do, 但是你可以 su 以root身份使用终端(以及从它开始的每个程序),这样你就不必输入 sudo 在每个高级命令之前。 exit 回去 myUser。我不确定你的发行版,但在Debian中也有一个根终端,为了你的意图和目的,它具有相同的使用效果 su

这就是事情的运作方式。 Linux总是意味着是一个多用户系统,所以你可以把它想象成这样,但它也是为了你自己的利益,因为使用root帐户做日常事务可能 结局很糟糕


谢谢@Alex(+1) - 你能否在AthomSteve的答案下看到我的评论?我有同样的问题给你!再次感谢!
pnongrata

@pnongrata如果你让你的小表弟坐在你的电脑前,你希望他能做什么?我希望他能够在我的电脑中使用该软件,听我的歌曲,写文件,做画等......但是,我不希望他搞乱系统设置和做可能导致我的电脑故障的东西。我确信他不会故意这样做,但他可能会错误地这样做。使用软件是一回事 - 我希望它能够与其他软件和文件进行通信,但我不希望它弄乱系统设置等等。
Alex

1

一些颜色:

/opt/ filesystem通常用于第三方包。已安装完整包 /opt/packagename 管他呢。这与/ usr或/ usr / local有点不同,其中混合了一堆文件。

那么,为什么呢 /opt/ 锁定?通常,共享二进制区域被锁定。如果我讨厌鲍勃,我不想安装一个“官方”套餐,消灭他的家庭目录。

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

如果你想让人们访问 /opt,我会创建一个UNIX组,Idunno optadm或者其他任何东西,然后在/ opt上创建组perms,然后如果你相信它们不会太多,那就给该组中的特定用户成员资格。另外,请确保 /opt 在它自己的分区上。你不希望有人在/ opt中打破你打破系统的其他部分,因为他们正在安装一些游戏。


谢谢@Rich Homolka(+1) - 2次跟进:(1)除了推杆 /opt 在它自己的分区中,对于典型的(最佳实践)Linux系统,还有哪些其他(常见的)分区策略? (2)你可以在AthomSteve的答案下看到我的评论吗?我有同样的问题给你!再次感谢!
pnongrata

@pnongrata由“奇怪的软件安装”...件丢失,重要文件删除。其他文件被覆盖。如果你给人们安装权限,你就可以给他们改变权限。
Rich Homolka
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.