我不久将要做大量的PHP工作,并且我对学习RoR感兴趣,因此我在VirtualBox中安装了Linux Mint 12。
到目前为止,切换最令人沮丧的方面是处理Linux权限。似乎我无法做任何有用的事情(例如,将Symfony2 tarball从我的Downloads目录复制到我的文档根目录并解压缩它),而无需通过sudo伪装成根目录。
有没有一种简单的方法可以告诉linux让我不受限制地访问某些目录,而不必简单地打开它们的所有权限?
我不久将要做大量的PHP工作,并且我对学习RoR感兴趣,因此我在VirtualBox中安装了Linux Mint 12。
到目前为止,切换最令人沮丧的方面是处理Linux权限。似乎我无法做任何有用的事情(例如,将Symfony2 tarball从我的Downloads目录复制到我的文档根目录并解压缩它),而无需通过sudo伪装成根目录。
有没有一种简单的方法可以告诉linux让我不受限制地访问某些目录,而不必简单地打开它们的所有权限?
Answers:
我想到两个选择:
使用以下命令拥有所需的目录chown
:
sudo chown your_username directory
(用您的用户名替换your_username,并用所需目录替换目录。)
您可以做的另一件事是以root用户身份工作,只要您知道自己在做什么。要使用root用户,请执行以下操作:
sudo -s
然后您可以执行任何操作而不必sudo
在每个命令前都键入。
一般来说,除非您做的事情对整个系统产生影响,否则请始终以自己的用户身份工作。
如果要在Web服务器上放置文件,请以您自己的用户身份工作,然后用于sudo
将文件放置在文件系统的Web服务区域中。通常,这将由安装脚本执行,并且您将运行sudo -u webmaster install-webserver-files
或更高sudo -u webmaster git update
版本(或您选择的版本控制系统)之类的东西。
如果您在开发服务器上工作,并且希望立即访问文件,请在Web服务器区域中创建一个目录,并将其设置为拥有或至少可写的目录。一次性操作(sudo chown …
或sudo -u webmaster setfacl …
)之后,您将不需要日常操作的提升特权。
有时允许多个用户写入目录,或者对所有者或多个组以外的其他多个用户具有不同的权限,这很方便。访问控制列表为您提供了此功能。请参阅 服务器上共享目录的权限问题或备份脚本权限问题。
是的,以root用户身份登录,这将为您提供超级用户访问控制。
Windows中的概念相同,您可以使用管理员登录到终端。
我一直认为,作为用户,您可以在Linux上做任何您想做的事情,而对于其他所有事情,总会有sudo
。sudo
允许执行一些其他用户一样的事情,大多数情况下是root
进行系统管理。sudo
一直是一个更大的优势资源,可以将我的一些日常任务和特权作为(root)用户委派给其他一些任务,并帮助我更好地管理我的时间和其他时间,而又不会将特权提升到超出所需的范围。同时,我对他们的信任使他们的条目保持在sudoers
配置文件。我不确定它是否可以关联,但是我能说的是,sudo确实为您提供了一个更好的安全性视角,即谁可以使用他们的特权以及他们可以做什么。即使出现问题,他们也要承担责任。(我总是可以使用sudoers日志信息来进行一些偷偷摸摸的探测,以找出罪魁祸首)。伙计们一直对我表示关注,他们必须为Linux环境中要使用提升特权进行的所有操作都键入sudo。在这里我也找到了同样的问题。
为了查看解决方案并寻求替代方案,我遇到了基于资源的访问控制, RBAC
但是在另一个Solaris
类似工具之类的冒险世界中,pfexec
这种方法会更好,因为这样可以保持已经提升的用户特权并信任关于系统管理员希望如何使用其特权的良知和警觉性。
考虑到RBAC的可用解决方案及其在Linux世界中的实现,我偶然发现了
SELinux http://www.ibm.com/developerworks/linux/library/l-rbac-selinux/
grsecurity http://en.wikipedia.org/wiki/Grsecurity
尽管还有其他一些实现,但我会以列表的最高顺序考虑它们。实施RBAC是组织中的许多工作,尤其是在有很多用户的情况下。在同类环境中,RBAC听起来是一个更好的解决方案。但是,当网络中存在异构的Unix安装并且用户数据库很常见时,这可能会失败。由于SELinux在Solaris上不能扩展/实现,而RBAC / pfexec工具不在Linux上实现。存在执行一件事情的不同方法。例如:http : //blogs.oracle.com/darren/entry/opensolaris_rbac_vs_sudo_howto
网络范围内的不同安装可能不支持此方法(但是openrbac可被视为常见的实现方法),如sudoers是单个主机方法或无法在网络/域中进行集中配置。/etc/sudoers
每次更改时都需要同步。此外,在操作sudoers文件时有一个知识库的要求,要求了解sudoers配置的策略语言以免犯任何错误并允许任何授予。RBAC可能会在某种程度上提供集中化的方法,而安全配置文件可能很常见,但是可以从单个位置(也就是存储用户/密码/组信息的位置)添加/从授予的角色中删除用户。 LDAP,NIS或AD等域)。这也隐式地需要了解在RBAC数据库上运行所需的命令,例如smexec,smmultiuser等。
Sudo在这里仍然可以提供更多的跨平台方法,因为它可以在所有提供setuid功能的Unix / like平台上使用。双方sudo
并RBAC
在给非root用户一些特权,可以用出来给做成功root
密码本身。Sudo可以为命令行参数提供一种更精细/更细化的方法,这些方法可以在运行命令时使用,并且仅将带有参数的命令限制为可以使用提升的特权运行。尽管RBAC可能会限制使用最多已安装的命令或二进制文件,但不能对命令行参数进行任何控制。审计要好得多,并且内置在RBAC环境中,而sudo
,这取决于配置以及所采取的安全性约束(例如,不授予外壳,尤其是允许主机无问题地登录到其他主机)。这些只是我可以列举的一些差异,我个人倾向于使用sudo而不是RBAC,尽管有了上述限制,我仍然可以实施一些变通方案。在RBAC解决所有问题以更好地提高sudo的优势之前,我认为sudo不会消失,因为它很简单。
我会在您工作的地方根目录文档根目录,因此您可以完全访问它。
为避免每次安装Gem时都必须键入sudo,请在此处关注此文章:http : //forums.site5.com/showthread.php?t=11954
我也强烈建议安装RVM来管理Ruby和Rails的版本。 http://beginrescueend.com/
当您找到想要将应用程序部署为使用与开发版本不同的版本的主机时,它将使您的生活变得更加轻松。
运行命令。
sudo su root
现在,您将能够以root用户身份运行命令。小心!任何运行的命令都将以root用户身份登录。如果您不小心,可能会把事情弄糟。
或者,您可以更改目录的权限,以允许您的用户保存和编辑文件。
sudo -s
呢?
sudo -i
以此模拟登录外壳。与通过sudo运行bash或另一个shell相比,它更接近本地本地root登录。
su
?对sudo的痴迷是什么?您不需要sudo。曾经
su
如果root密码未知,则不可能仅使用它。将用户添加到sudoers并运行sudo su
允许用户使用其现有的已知用户密码来升级
编辑/ etc / passwd文件,并通过将用户和组ID更改为UID 0和GID 0,向用户“ yourUserName”授予root权限:
yourUserName:0:0 :: // home / yourUserName:/ bin / sh
user @ server:〜$ sudo passwd用户的root
[sudo]密码:
输入新的UNIX密码:
重新输入新的UNIX密码:
passwd:密码已成功更新
user @ server:〜$ su
密码:
root @ server:/ home / user#
那“#”提示不是美的吗?
我只使用一次“ sudo”来达到
user @ server:〜$ su
密码:
root @ server:/ home / user#
在服务器的使用寿命内。
为了安全起见,
root @ server:/ home / user#退出
exit
user @ server:〜$
多年以来,当“ sudo”不属于软体动物流行趋势的时候,系统管理员一直在这样做。
这样做时,您有责任保重,而不是我的。
伊恩
sudo -s
。完成的工作