약국에서는 특정 약품을 지연 금고에 보관합니다. 이는 검색 요청과 금고를 열 수 있는 시간 사이에 고정된 지연(예: 15분)이 있음을 의미합니다. 파일에 대한 편집 권한을 사용하여 이 작업을 수행할 수 있는지 궁금합니다. 이렇게 하면 루트 사용자라도 지연이 발생합니다.
그리고 이것이 불가능할 경우 시간지연 방식으로 파일을 암호화하는 것이 가능한가요? "무차별 대입은 약 n년이 걸린다"보다 더 우아하고 정확한 것입니다.
답변1
하나로 명확히 해주셨네요논평저것
때때로 루트 액세스가 필요한 사용자가 있는데 최소한 루트 액세스 권한이 있을 때까지 컴퓨터의 특정 파일을 수정하지 못하도록 하고 싶습니다.N몇 분 정도 생각해 볼 수 있습니다.
나는 아마도 여러 가지 방법 중 하나로 이 문제를 해결할 것입니다. 편집을 고려해야 할 단일 파일이라고 생각합니다.
스크립트를 고려해보세요 /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