我有一个权限受到严格限制的用户。
虽然我可以修改我的 crontab,但默认编辑器是nano
,当您习惯vi
并且不想破坏生产环境时,这可能会成为一个真正的问题。
我无法导出变量,也无法声明变量,所以export EDITOR='vi'
或者EDITOR=vi crontab -e
只是不起作用......而且我什至不允许直接运行 vi (或 nano),所以我不知道我实际上如何处理它。
有没有办法绕过这些限制?
为了了解我的局限性,登录消息是:
You are in a limited shell.
Type '?' or 'help' to get the list of allowed commands
和“?”的结果命令是
cd clear crontab exit help history lpath ls lsudo php pwd
编辑:忘记寻找我的操作系统版本
/proc/version 告诉我:
Linux 版本 2.6.26-2-amd64 (Debian 2.6.26-29) ([电子邮件受保护])(gcc 版本 4.1.3 20080704(预发布)( Debian 4.1.2-25
)) #1 SMP 2012 年 3 月 4 日星期日 21:48:06 UTC
...并cat /etc/debian_version
告诉我5.0.10
(什么?!)
我现在更习惯使用 Ubuntu,但还是有点惊讶。
答案1
从使用消息来看,您正在运行壳牌。这不是像 bash、ksh、zsh、BusyBox 等那样的 Bourne 风格 shell。它甚至不是像 rksh 或 rbash 这样的受限 shell。除了执行带有某些参数的一组固定命令之外,它没有变量、重定向或任何其他功能。
如果您能够运行 vi,则意味着 lshell 中存在错误或配置错误。它旨在防止运行任意命令。
既然你可以运行php
,你也许可以解决这个问题。但显然管理员不希望你这样做。
crontab 通常很短,因此如果您想使用不同的编辑器对其进行编辑,请打开一个足够大的终端,通过 GUI 剪贴板将整个内容复制到本地计算机,然后在另一个方向进行编辑和复制。在 nano 中,确保关闭自动换行(Alt+L进行切换),以及(但这对于 crontab 来说不重要)自动缩进 ( Alt+ I)。
答案2
如果您能够将文件传入和传出系统,请备份当前的 crontab:
$ crontab -l >crontab.txt
如果您无法执行重定向,只需复制crontab -l
并粘贴 crontab(确保一切都相同)。
然后,使用不那么锁定的系统上的 crontab 文本文件,在编辑器中更新它。
将文件传回并执行
$ crontab crontab.txt
在生产服务器上实施之前,应在相同的开发服务器上进行适当的测试,包括作业规范是否正确。请注意,crontab
以这种方式加载 crontab替换当前的 crontab。
我不承担任何责任。