標準ユーザーが特定のパラメータを使用してコマンドを実行できないように制限する

標準ユーザーが特定のパラメータを使用してコマンドを実行できないように制限する

コマンドの実行権限を削除して、標準ユーザーがコマンドを実行できないように制限する方法を知っています。しかし、標準ユーザーが特定のオプション/引数を使用してコマンドを実行できないように制限することは可能ですか?

たとえば、標準ユーザーは次のコマンドを実行できる必要があります。

ls

しかし:

ls -l

標準ユーザーが実行できるchshコマンドや同じコマンドがありますが、実行すると権限が拒否されるため、これが可能だと思います。passwdchsh rootpasswd -a -S

ベストアンサー1

唯一の方法は、問題のコマンド/ユーティリティにラッパーを直接作成し、それを開始したユーザーの(E)UIDに基づいて何を許可するかを決定することです。たとえば、上記のツールはこれを実行しchshたり、passwd実装にこの機能を組み込むことができます。

ラッパーの作成方法ls

#!/usr/bin/perl

use strict;
use warnings;

my $problematic_uid = 1000; # For example
my $is_problematic = $< == $problematic_uid;
unless(/ -l / ~~ @ARGV or $is_problematic){
    exec qq{/new/path/to/ls }.join '',@ARGV
}else{
    die "Sorry, you are not allowed to use the -l option to ls\n"
}

元のパスがlsユーザーの中にないことを確認する必要がありますPATH/new/path/to/ls問題は、このラッパーを使用するにはユーザーが元のラッパーを実行できる必要があるため、ユーザーlsが元のlsラッパーを直接呼び出してそれをバイパスできることです。

おすすめ記事