我在NAS4FREE上用Finch-Freebsd创build了一个监狱,并添加了一个本地非超级用户通过ssh访问监狱。
我希望能够授予这个用户有限的访问权限专门closures监狱,并开始closures监狱驻留的服务器
我怎样才能让上述用户有限的shell命令权启动关机命令?
到目前为止,试图启动一个sh /etc/rc.shutdown
我得到以下输出
eval:无法打开/var/run/cron.pid:权限被拒绝停止sshd。 kill:12060:不允许操作停止lighttpd。 kill:12001:不允许操作eval:无法打开/var/db/mysql/RemandYard.pid:权限被拒绝pututxline:权限被拒绝终止
正如卡桑德里所说的那样,你不能在监狱内用命令做到这一点。
然而,你可以做的是创build一个单独的用户(我将在此之后主持人在主机系统上closer ,这个用户应该被阻塞,以便它只能用SSH密钥login。
您的监狱用户应该拥有私钥和密钥。
在主机方面,您授予closer帐户的sudo权限:
closer localhost=NOPASSWD:/usr/sbin/shutdown
在主机端,将SSH密钥的公共部分放在/home/closer/.ssh/authorized_keys 。 编辑密钥,以便开始
command="sudo /usr/sbin/shutdown",from="1.2.3.4"
然后是实际的密钥,都在同一行。 (固定IP地址,以便它与jail匹配。)使authorized_key文件和目录不可写入用户。
当监狱系统上的用户现在使用该密钥来SSH到主机时,它将立即触发closures。 用户将无法使用密钥进行其他任何操作 – 只要用户使用该密码login,它就会运行该命令。 关键只能从这个监狱使用,所以你不要冒险让整个世界访问closures你的服务器,如果他们以某种方式得到他们的手中的关键。
Jail专门禁止closures命令,在这里的手册页。
正常的机器关机命令(如halt(8),reboot(8)和shutdown(8))不能在jail中成功使用。
另外引用FreeBSD操作系统的devise和实现 ,
在监狱内运行的进程不允许执行允许他们看到或影响监狱外运行的任何操作。 这个限制在很大程度上是通过掩盖在jail中运行的根进程可用的一组命名系统特权来实现的。 受限制的权限包括:
- 获得关于监狱外进程的信息;
- 改变内核variables;
- 安装或卸载文件系统;
- 修改物理networking接口或configuration; 和
- 重新启动系统。
所以你想做的事实际上根本不可能通过监狱的devise来实现。 closures一个监狱和它驻留在你的服务器将需要在主机系统上有一个实际的特权用户。