想知道是否可以在 ubuntu 11.10 服务器中创建具有自定义 sudo 权限的用户。我的意思是,用户可以启动和关闭该盒子,但不能访问,/var/www
例如,或者可以通过更改盒子的 ip/etc/network/interfaces
并重新启动网络,并且只能访问系统和自定义的特定文件/etc/init.d/*
。
可以做这样的事吗?谢谢
编辑:
这是我们第一次在 Linux 机器上部署软件。因此,它是 apache2 中运行的 php 应用程序与 tomcat 中的报告服务器以及捆绑在 2 个 jar 中的其他应用程序的组合。这些 jar 用作服务,它们的配置已添加到/etc/init
文件夹中。因此,理想情况下,如果可能的话,我们希望保护/var/www/ourapp
文件夹/var/lib/tomcat6/webapps/ourreporting
。允许客户端用户重新启动机器,更改 ip 重新启动网络,启动和停止我们的服务,apache2、tomcat6 查看日志/var/logs/apache2|tomcat6
,这些应该就够了
答案1
是的,你可以 - 但值得考虑的是你想要防范什么。
最理想的是强化二进制文件,只执行一项任务,并非常仔细地验证其输入。
当然,像更改 /etc/network/interfaces 这样的操作 - 您不希望他们以 root 身份调用编辑器 - 您希望他们使用其标准编辑器生成一个新文件,然后您希望将该文件安全地安装在顶部。
但请注意:如果他们要更改 IP,他们还需要一种方法来关闭接口并重新启动。
然后他们可以在界面上安装任何他们喜欢的“up”或“down”脚本,然后,哇哦,他们就拥有了root权限。
所以基本上来说,它很复杂,有很多漏洞,等待有足够创造力的人去利用。所以我再问一遍,你想防范什么?这是你能在人员层面而不是技术层面解决的问题吗?
答案2
打开 /etc/sudoers 文件
# /etc/sudoers
#
# 必须以 root 身份使用“visudo”命令编辑此文件。
#
# 有关如何编写 sudoers 文件的详细信息,请参阅手册页。
#
默认 env_reset
# 取消注释以允许 sudo 组成员不需要密码
#%sudo ALL=NOPASSWD: ALL
# 主机别名规范
# 用户别名规范
# 命令别名规范
# 用户权限规范
根 ALL=(全部) 全部
# admin 组的成员可以获得 root 权限
%admin 全部=(全部) 全部
在 /etc/sudoers 文件中写入以下行
你的用户名 ALL=(ALL) ALL
那么你将成为 sudoer
答案3
查看这允许特定用户执行关机命令。您还可以根据本指南。我建议创建一个名为关机的组,并将所有具有关机权限的用户放入该组中。
只要您不将这些用户提升为管理员(将他们放入特定组中),他们就无权访问/var/www
。
更新:根据 Bron Gondwana 的说法,我的以下建议很危险,因为一旦以 root 身份启动,用户就可以用 vi 打开任何内容。
~/.bashrc
据我所知,您可以在用户中(或在/etc/bash.bashrc
系统范围设置中)创建一个别名alias viinterfaces="vi /etc/network/interfaces"
,并授予用户访问权限,viinterfaces
如上述文章之一所述。我目前手头没有 Linux,所以你必须测试这个建议或等待另一个超级用户确认或拒绝这是否有效。