薬局では、特定の薬を遅延セーフティボックスに保管しています。これは、検索要求と金庫を開くことができる時間の間に一定の遅延(15分など)があることを意味します。ファイルの編集権限を使用してこれを行うことができるかどうか疑問に思います。これにより、rootユーザーでも遅延が発生します。
そして、これが不可能な場合は、時間遅延方式でファイルを暗号化することは可能ですか? 「無差別代入は約n年かかる」よりもエレガントで正確なものです。
ベストアンサー1
一つで明確にしてくれましたねコメントそれ
場合によっては、rootアクセスを必要とするユーザーがいますが、少なくともrootアクセス権があるまでコンピュータ上の特定のファイルを変更しないようにしたいと思います。N数分ほど考えることができます。
私はおそらくいくつかの方法の1つでこの問題を解決します。編集を検討すべき単一のファイルだと思います。
スクリプトを検討してください/usr/local/bin/myedit
。ユーザーをグループに追加するかmyeditors
、実際にユーザーの場合は%myeditors
値をユーザー名に変更します。次のようにファイルvisudo
にこの行を追加します。sudoers
%myeditors ALL=(ALL) NOPASSWD: /usr/local/bin/myedit
それではスクリプトを生成し、/usr/local/bin/myedit
それを実行可能にすることを忘れないでください(chmod a+x /usr/local/bin/myedit
)。
#!/bin/bash
#
# THIS SCRIPT RUNS AS ROOT
#
# %myeditors ALL=(ALL) NOPASSWD: /usr/local/bin/myedit
########################################################################
# User configurable values
target='/usr/local/etc/specialfile' # The file to be edited
delay=600 # Delay in seconds
########################################################################
# Here we go
#
progName="${0##*/}"
# Reset PATH to known quantity
export PATH=/usr/local/bin:/bin:/usr/bin
# Force the script to run with sudo
[[ $(id -u) != 0 ]] && exec sudo "$0" "$@"
printf 'Waiting %d seconds...' $delay
sleep $delay && echo
read -t 60 -p "Are you sure you still want to edit $target (y/N)? " YN
[[ "${YN,,}" =~ ^(y|yes)$ ]] || exit 1
umask 0022
tmpf=$(mktemp -d "/tmp/${progName}_XXXXXXXXXX")
cp -f "$target" "$tmpf"
# Revert to the original user account to edit the temporary file
chown "$SUDO_USER" "$tmpf"
sudo -u "$SUDO_USER" "${EDITOR:-vi}" "$tmpf"
# Apply changes
if [[ -f "$tmpf" ]] && ! cmp -s "$target" "$tmpf"
then
echo 'Applying changes'
cp -pf "$target" "$target.old"
cp -f "$tmpf" "$target"
fi
# All done
rm -f "$tmpf"
exit 0
呼び出しコマンドいいえ sudo
(使用するかどうかは関係ありません。)
myedit