![Linux 和神秘的目录消失(和重新出现)案例](https://linux22.com/image/1326590/Linux%20%E5%92%8C%E7%A5%9E%E7%A7%98%E7%9A%84%E7%9B%AE%E5%BD%95%E6%B6%88%E5%A4%B1%EF%BC%88%E5%92%8C%E9%87%8D%E6%96%B0%E5%87%BA%E7%8E%B0%EF%BC%89%E6%A1%88%E4%BE%8B.png)
我已经设置了我的第一个 Ubuntu 服务器,并立即登录(作为myuser
)开始对其进行自定义。我转到/opt
并运行mkdir sandbox
。
mkdir:无法创建目录“sandbox”:权限被拒绝
权限被拒绝?!?好的。所以我运行sudo -i
并输入myuser
的密码。重新运行mkdir
命令,瞧!目录创建好了。我退出了。
我重新以 身份登录myuser
并导航到/opt
并运行ls
:什么都没有!里面没有可见的目录/opt
!什么!?!?
因此我再次使用 sudosudo -i
并重新运行ls
。现在它看见了sandbox/
。
我认为我缺少一些有关用户和根的 Linux 基础知识。在服务器配置/安装期间,它要求我创建一个用户,我照做了(myuser
)。我假定这也将是根用户(具有完全管理员权限),因为它不仅是我在安装期间创建的用户,它还是系统中的第一个用户!
那么为什么myuser
不能呢:
/home/myuser
无需 sudo 即可在外部创建目录?- 查看“sudo 模式”下创建的目录
sudo
我也不太清楚和su
用户之间的区别root
。
最终,除了完全理解这些基础知识之外,我还想安装一堆/opt/sandbox/
可以全天候运行并与本地文件系统交互的服务器软件。现在我不确定我是否应该在以 身份登录myuser
、以 sudo 身份登录myuser
或其他方式安装这些应用程序。
这些服务器位于安全的私人家庭局域网内,因此我不需要“真正的管理员”和疯狂的安全控制。我只是在为我正在编写的一个小软件工具设置一个简单的开发环境。提前感谢对上述问题的任何帮助。
答案1
/opt 默认归用户root
和组所有root
。
尝试一下l /
,你会看到文件夹 /opt 的所有者root root
分别是“ ”和“组”。
如果您确实想以非 root 用户身份在 /opt 中创建和修改文件,则需要在其中创建一个文件夹并修改其权限,以便非 root 用户可以自由访问它。
例子:
sudo mkdir /opt/sandbox
sudo chown myuser:users /opt/sandbox
第一个命令创建了文件夹,但是它归root
组所有root
,第二个命令将所有权(chown
)更改为您的用户myuser
,并使其成为组的一部分users
(myuser
属于其中的一部分)。
答案2
那么为什么 myuser 不能:......
尝试
ls -l sandbox
getfacl sandbox
如果这些输出不清楚或者没有解释您所看到的内容,请将输出剪切并粘贴到您的问题的编辑中。
我也不太清楚 sudo、su 和 root 用户之间的区别。
sudo
仅为您提供一个命令的提升 root(即管理员)权限。 sudo 有一个配置文件,您可以在其中控制允许哪些用户执行哪些操作。
su
通过为您提供一个具有有效用户 ID root 的新 shell 会话,为您提供多个命令的提升权限。
root 用户是一个名为 root 的特殊用户,您可以在 /etc/passwd 中看到它。在 Unix 或 Linux 系统中,您总会遇到十几个其他用户。人们通常有一个普通帐户,并使用该帐户进行所有工作,但绝对需要 root 权限的操作除外(例如,安装供系统上所有用户使用的软件)。这使得恶意软件更难做坏事,也使您更难犯下无法挽回的错误。
我想安装一些服务器软件
我发现最好使用系统的包管理器来安装包。我不想手动在 /opt 中创建文件夹,那将是我的最后选择。