지연된 파일 편집

지연된 파일 편집

약국에서는 특정 약품을 지연 금고에 보관합니다. 이는 검색 요청과 금고를 열 수 있는 시간 사이에 고정된 지연(예: 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

관련 정보