是否可以在linux中创建不允许命令rm的脚本?

是否可以在linux中创建不允许命令rm的脚本?,linux,shell,rm,Linux,Shell,Rm,是否可以在linux中创建一个不允许命令rm的脚本?您可以创建自己的shell,模拟命令行,并将除rm命令之外的所有正常输入发送到实际命令行 如果有更优雅的解决方案,我不会感到惊讶。您可以创建自己的shell,模仿命令行,并将所有正常输入发送到实际的命令行,rm命令除外 如果有更优雅的解决方案,我也不会感到惊讶。您可以在中添加别名。bashrc alias rm='rm -i' 除非运行rm-f 如果你是这样的: alias rm='echo "command rm is forbidden"

是否可以在linux中创建一个不允许命令rm的脚本?

您可以创建自己的shell,模拟命令行,并将除rm命令之外的所有正常输入发送到实际命令行


如果有更优雅的解决方案,我不会感到惊讶。

您可以创建自己的shell,模仿命令行,并将所有正常输入发送到实际的命令行,rm命令除外


如果有更优雅的解决方案,我也不会感到惊讶。

您可以在
中添加别名。bashrc

alias rm='rm -i'
除非运行
rm-f

如果你是这样的:

alias rm='echo "command rm is forbidden"'
这将禁止使用rm命令

请注意,alias只会防止您错过键入。如果您确实希望用户具有root权限来运行rm命令,则不是系统安全设置:

$which rm
-rwxr-xr-x 1 root root 64424 Jan 20 22:46 /bin/rm
$sudo chomd 744 /bin/rm
这将强制用户作为root用户运行
rm
命令


从技术上讲,您不能禁用root来删除系统上的文件,因为root可以做任何事情,但是如果用户通过
sudo
获得权限(这不是真正的用户root,而是临时获得权限)有一些方法可以禁用特定命令,即使是sudo通过sudo配置文件运行也可以。您可以在
中添加别名。bashrc

alias rm='rm -i'
除非运行
rm-f

如果你是这样的:

alias rm='echo "command rm is forbidden"'
这将禁止使用rm命令

请注意,alias只会防止您错过键入。如果您确实希望用户具有root权限来运行rm命令,则不是系统安全设置:

$which rm
-rwxr-xr-x 1 root root 64424 Jan 20 22:46 /bin/rm
$sudo chomd 744 /bin/rm
这将强制用户作为root用户运行
rm
命令


从技术上讲,您不能禁用root来删除系统上的文件,因为root可以做任何事情,但是如果用户通过
sudo
获得权限(这不是真正的用户root,而是临时获得权限)对于特定用户,可以通过sudo配置文件禁用特定命令的运行,甚至sudo也可以这样做

Lshell是通过INI文件配置的。默认情况下,它包含允许的命令的白名单,但可以轻松地配置为禁止用户使用特定命令

此配置(默认conf/etc/lshell.conf)禁止用户foo使用mkdir:

 [foo]
 allowed = 'all' - ['mkdir', 'bash', 'sh', 'csh', 'dash', 'env']

对于特定用户,您可以这样做

Lshell是通过INI文件配置的。默认情况下,它包含允许的命令的白名单,但可以轻松地配置为禁止用户使用特定命令

此配置(默认conf/etc/lshell.conf)禁止用户foo使用mkdir:

 [foo]
 allowed = 'all' - ['mkdir', 'bash', 'sh', 'csh', 'dash', 'env']


您的意思是针对特定用户?可能是针对sudo,也可能是针对sudo,可能可以使用rm命令,但是用户可以运行ruby脚本,该脚本调用
File.unlink()
,以及其他各种删除文件的方法。我想这是一个好主意。你面临的实际问题是什么?我正在寻找一种使linux和mac一样安全的方法,从这个意义上说,保护系统文件不受rm的影响。我真正需要的是避免在任何情况下,系统文件上的rm都会加密文件。避免这种情况。好吧,mac使用了一种不同的方法,因为这是可能的(从其BSD源代码继承)将文件标记为不可变,并且两个root用户都无权修改它们(仅通过再次取消标记)。无论如何,这不会使mac比linux更安全。只有在您不知道其更安全的原因的情况下。您的意思是针对特定用户?可能是针对sudo,也可能是针对sudo,但用户可以运行调用
File.unlink()的ruby脚本
,以及其他各种删除文件的方法。我认为这是。你面临的实际问题是什么?我正在寻找一种方法,使linux和mac一样安全,从这个意义上说,保护系统文件不受rm的影响。我真正需要的是避免在任何情况下,系统文件上的rm都会加密文件避免这种情况?好吧,mac使用不同的方法,因为它有可能(从其BSD源继承)将文件标记为不可变的,并且两个root用户都无权修改它们(仅通过再次取消标记)。无论如何,这并不会使mac比linux更安全。只有在您不知道其更安全的原因时。您的意思是,您想禁止用户运行
rm
,即使使用
sudo
(这将获得根权限)?是的,或者至少在sudoi的命令上加一个别名。在这种情况下,你应该按照我的帖子通过
sudo
config fle限制命令。你的意思是你想禁止用户运行
rm
,即使使用
sudo
(这将获得根权限)是的,确切地说,或者至少为sudoi的命令加上一个别名。在这种情况下,你应该按照我给出的帖子,通过
sudo
config fle来限制命令。事实上,不。据我所知,这是唯一的方法——而且你必须非常严格地限制用户在这个shell中的操作。例如,不能访问编译器rse无法访问其他可以隐式执行命令的shell或程序。事实上,在shell中,您提供的功能非常有限。您可以允许sudo,只要您确保通过sudo执行的命令不违反这些安全限制。事实上,没有。据我所知,这是唯一的方法-您也可以在允许用户在此shell中执行的操作方面必须非常严格。例如,不能访问编译器。当然,不能访问可以隐式执行命令的其他shell或程序。事实上,在该shell中,您提供的功能非常有限。只要确保命令通过sudo执行不会违反这些安全限制。