我是Linux新手。我谷歌了几天,并在CentOS中安装了Java和Tomcat。
现在我需要一个在其主目录中具有所有权限的用户(包括子目录中的文件,子目录和文件),但无法访问任何其他目录。
此用户还必须拥有管理一项服务的权限(我创建了tomcat服务,我可以'开始','停止'和'重启')。
任何人都可以解释如何做到这一点吗?
答案 0 :(得分:3)
你已经问了很多。
可能有几种方法:
为这个新用户创建他们自己的新组。让他们成为这个群体中唯一的成员。
删除所有数据文件的全局读取,写入和执行权限。如果有任何用户通过 world 权限获取数据文件的权限,则可以根据需要为所有用户和数据创建新组(可能是accounting
一个,billing
},一个用于sales
,一个用于engineering
,等等。无论什么有效。)
为此用户为sudoers(5)
,sudo stop tomcat
,sudo start tomcat
,sudo restart tomcat
添加新的sudo status tomcat
条目,或者此用户需要的任何命令执行以管理tomcat服务。有关编辑visudo(8)
配置文件的详细信息,请参阅sudo(8)
。
如果确实想要锁定此用户,请将此人需要的实用程序复制到他们的~/bin/
目录中,然后继续删除{{1}上的世界执行位},/bin
,/sbin
,/usr/bin
。 (单独留下/usr/sbin
,/lib
等 - 在这个用户需要的库中复制无疑是很多的工作。)
我将使用AppArmor系统解释这一点;我已经在AppArmor工作了十多年,这是我最了解的系统。还有更多选择:TOMOYO,SMACK和SELinux都是很好的工具。 AppArmor和TOMOYO致力于限制对路径名的访问。 SMACK和SELinux的工作理念是系统上的每个对象都分配了一个标签,策略指定哪些标签(在进程上)可以读取,写入,执行等标签(在数据或其他进程上)。如果您想要实施全面的Open,Classified,Secret,Top Secret保护,SMACK或SELinux将是更好的工具。如果您想将某些程序限制在某些文件中,AppArmor或TOMOYO将是更好的工具。
AppArmor应该可以在大多数Ubuntu,SUSE,PLD,Annvix,Mandriva和Pardus发行版上使用。
AppArmor系统限制进程并控制进程在进程执行新程序时如何从域移动到域。域通常由程序分配。
最简单的入门方法是将/usr/lib
复制到/bin/bash
(或/bin/jail_bash
中的其他名称不),为用户设置shell在/etc/shells
中/etc/passwd
可以轻松实现这一点,并为chsh(1)
创建一个只允许您允许的操作的AppArmor配置文件。如果我们正确地限制了该过程,那么用户就无法逃避我们为他们制作的配置文件。
为此用户为/bin/jail_bash
,sudoers(5)
,sudo stop tomcat
,sudo start tomcat
添加新的sudo restart tomcat
条目,或者此用户需要的任何命令执行以管理tomcat服务。有关编辑sudo status tomcat
配置文件的详细信息,请参阅visudo(8)
。
在一个终端中,运行sudo(8)
。在另一个终端中,以用户身份登录(或以其他方式运行aa-genprof jail_bash
)并开始执行您希望允许此人执行的任务。我们将使用您的工作作为培训材料来迭代地构建配置文件。您可能有兴趣观看/bin/jail_bash
或/var/log/syslog
(如果您安装了/var/log/audit/audit.log
软件包),以了解AppArmor注意到您的程序正在执行哪些操作。不要一次做太多 - 每次迭代只需要一些新东西。
在auditd
终端中,回答问题。允许需要允许的内容。否认什么应该被拒绝。当您被问及执行权限时,更喜欢继承或子而非个人资料。 (配置文件选项将影响系统中的其他所有人。继承或子只会影响您当前所有配置文件的执行情况致力于改进。 Child 将权限分解为更小的部分,而 inherit 在更大的配置文件中保留权限。在这种情况下,首选继承。)
一旦得到有关执行tomcat的问题,请使用 unconfined execute 权限。这很危险 - 如果启动tomcat的方式中的错误允许人们启动无限制的shell,那么这可以用来打破监狱。你可以限制tomcat(这甚至是一个好主意 - tomcat并不完美)来阻止它成为一条逃生路线,但这可能不是马上就必须的。
AppArmor旨在让您随着时间的推移轻松扩展系统上的配置文件。 AppArmor不适用于所有安全情况,但我们在DEF CON Capture-the-flag黑客竞赛with excellent results中部署了与此非常相似的方案。我们必须允许攻击者aa-genprof
(和短暂的用户帐户)通过root
以及POP3,SMTP,HTTP + CGI和FTP访问计算机。
在允许用户登录之前,请务必手动检查telnet
中的配置文件。您可以使用纯文本编辑器修复所需内容;运行/etc/apparmor.d/
重新加载所有配置文件(并卸载您可能删除的配置文件)。
在您首次学习如何配置AppArmor时,保持无限制的/etc/init.d/apparmor restart
root
shell处于打开状态非常方便。如果您忽略有关不应该拥有自己的配置文件的程序的警告,则可能很难重新进入您自己的系统。 (在最糟糕的情况下,不要忘记用sash(1)
启动。)
答案 1 :(得分:0)
您可以通过在限制模式下启动bash来轻松创建非常受限制的环境。将用户的shell设置为rbash而不是bash,这将使其进入受限模式。
http://www.gnu.org/s/bash/manual/html_node/The-Restricted-Shell.html
rbash有可能太限制您的需求。除其他外,受限制的环境禁止更改目录。但请看一下它,看看它是否足以满足您的需求。