2

このようなルート権限を持つファイルがあります

[root@testbox ~]# ls -l /etc/resolv.conf
-rw-r--r-- 1 root root 113 Feb 21 21:29 /etc/resolv.conf

/etc/sudoer を使用して、ユーザーに対してパスワードなしの sudo を有効にしました

%mayur ALL=(ALL) NOPASSWD: ALL

この特定のファイルを編集しようとするとブロックされる方法が必要です。たとえば..ファイル名に基づいてこれらのコマンドをブロックしたい

$ echo 123 | sudo tee /etc/resolv.conf  ## SHOULD GET BLOCKED
$ touch newfile | echo 123 > newfile | sudo cp newfile /etc/resolv.conf  ## SHOULD GET BLOCKED

私の取り組み:

%mayur ALL=(ALL) NOPASSWD: ALL,!/* /etc/resolv.conf
  • これはまったく役に立ちませんでした。
  • sudoers のマニュアル ページも確認しましたが、正規表現のサポートはそれほど優れていないようです。

機能するものはすべて役立ちます。ありがとう。

編集:複数のユーザーがsudoアクセスを持つ複数のサーバーにソリューションを適用できるようにしたい

4

1 に答える 1

1

ラッパーを使用できます:

#!/bin/bash
declare -A EXCLUDE
while IFS= read -r FILE; do
    EXCLUDE[$FILE]=.
done < /etc/sudoers.exclude-list
for ARG in "$@"; do
    TARGET=$(exec /usr/bin/readlink -m -- "$ARG")
    [[ -n $TARGET && -n ${EXCLUDE[$FILE]} ]] && {
        echo "sudo: Sorry, target is not allowed: $TARGET"
        exit 1
    }
done
exec /path/to/real/sudo-in-secured-location "$@"

絶対/etc/sudoers.exclude-list実ファイル パスの行ベースのリストです。エントリに余分なスペースを含めたり、リストを DOS 形式にすることはできません。

このスクリプトには、実際の sudo と同じ所有権と権限が必要です。

于 2014-08-04T16:03:59.517 に答える