Linux 如何限制bash中的特定命令?
我有bash-3.2.tar.gz 我拥有编译bash所需的所有工具。现在我需要在编译的bash二进制文件中限制一个命令,例如,我想在编译的bash二进制文件中限制命令“kill”。如何做到这一点Linux 如何限制bash中的特定命令?,linux,bash,Linux,Bash,我有bash-3.2.tar.gz 我拥有编译bash所需的所有工具。现在我需要在编译的bash二进制文件中限制一个命令,例如,我想在编译的bash二进制文件中限制命令“kill”。如何做到这一点 提前谢谢。现在还不清楚你到底想做什么,所以这里有一些想法 您可以在编译bash之前从bash中删除命令,方法是编辑内置/Makefile.in中的DEFSRC和文件变量(在运行configure之前) 您可以使用enable命令禁用内置命令。例如,运行enable-nkill将禁用内置的kill命令,
提前谢谢。现在还不清楚你到底想做什么,所以这里有一些想法 您可以在编译bash之前从bash中删除命令,方法是编辑
内置/Makefile.in中的DEFSRC
和文件变量(在运行configure
之前)
您可以使用enable
命令禁用内置命令。例如,运行enable-nkill
将禁用内置的kill
命令,因此运行kill
将在$PATH
中查找名为kill
的文件。您不清楚要做什么,因此这里有一些想法
您可以在编译bash之前从bash中删除命令,方法是编辑内置/Makefile.in中的DEFSRC
和文件变量(在运行configure
之前)
您可以使用enable
命令禁用内置命令。例如,运行enable-nkill
将禁用内置的kill
命令,因此运行kill
将在$PATH
中查找名为kill
的文件。我修补了bash包builtin kill.def,使其受到限制:
--- builtins/kill.def.old 2016-09-14 14:13:49.058437000 +0530
+++ builtins/kill.def 2016-09-14 14:16:00.467550000 +0530
@@ -48,6 +48,7 @@
#include "../bashintl.h"
#include "../shell.h"
+#include "../flags.h"
#include "../trap.h"
#include "../jobs.h"
#include "common.h"
@@ -79,6 +80,14 @@
pid_t pid;
intmax_t pid_value;
+#if defined (RESTRICTED_SHELL)
+ if (restricted)
+ {
+ sh_restricted ((char *)NULL);
+ return (EXECUTION_FAILURE);
+ }
+#endif /* RESTRICTED_SHELL */
+
if (list == 0)
{
builtin_usage ();
我修补了bash包builtin kill.def,使其受到限制:
--- builtins/kill.def.old 2016-09-14 14:13:49.058437000 +0530
+++ builtins/kill.def 2016-09-14 14:16:00.467550000 +0530
@@ -48,6 +48,7 @@
#include "../bashintl.h"
#include "../shell.h"
+#include "../flags.h"
#include "../trap.h"
#include "../jobs.h"
#include "common.h"
@@ -79,6 +80,14 @@
pid_t pid;
intmax_t pid_value;
+#if defined (RESTRICTED_SHELL)
+ if (restricted)
+ {
+ sh_restricted ((char *)NULL);
+ return (EXECUTION_FAILURE);
+ }
+#endif /* RESTRICTED_SHELL */
+
if (list == 0)
{
builtin_usage ();
编译之前可能会容易得多。alias asdasd=“echo bash:asdasd:command not found”
?以任何方式删除kill命令有何用处?请记住,如果安装了,用户可能会生成另一个shell,如tcsh
或dash
,而且许多语言也支持kill
,包括C、Perl、Python、Ruby等。许多发行版也会有一个/bin/kill
。编译它之前可能会容易得多。alias asdasd=“echo bash:asdasd:command not found”
?删除kill命令有何用处?请记住,用户可能会生成另一个shell,像tcsh
或dash
(如果安装了),许多语言也支持kill
,包括C、Perl、Python、Ruby等。许多发行版也会有/bin/kill
。感谢您的帮助。感谢您的帮助。