컴퓨터를 과도하게 사용하기 때문에 매일 23시부터 7시까지 몇 시간 동안 컴퓨터를 차단하여 해당 시간 동안에는 컴퓨터를 사용할 수 없도록 하고 싶습니다.
현재 저는 시간이 되면 컴퓨터를 일시정지/끄는 습관이 있고 crontab
1분마다 그렇게 하기 때문에, 일반적으로 로그인을 하거나 컴퓨터를 켜려고 하면 몇 초밖에 시간이 없습니다. 다시 일시중지하세요. 문제는 이 몇 초면 crontab을 변경하고 메커니즘을 잠그는 데 충분하다는 것입니다.
따라서 나는 누구도 어떤 방식으로든 컴퓨터에 접근할 수 없도록 23시부터 07시까지의 시간 동안 로그인 프로세스를 완전히 (루트를 포함하여!) 차단하는 것을 고려했습니다. 이 동작을 비활성화하려면 사전에 비활성화해야 합니다.
그렇다면 몇 시간 동안 아무도 로그인할 수 없도록 Linux 상자를 어떻게 구성합니까? PAM을 사용해야 하나요? 그렇다면 어떻게?
참고: GDM 및 셸을 사용한 로그인을 방지하고 싶습니다.
답변1
나는 두 가지 공격을 권장합니다:
- 2300시간에 컴퓨터를 종료(일시 중지)하도록 스크립트(루트의 crontab을 통해)를 설정하십시오. 첫 번째 작업이 취소되는 경우를 대비해 2300시부터 2315시까지 1분마다 실행되도록 설정하세요. 이것은 잠자리에 들기 전에 당신을 쫓아 낼 것입니다.
- 시간이 2300시에서 0700시 사이이면 시스템을 중지하도록 루트 에서
~/.bashrc
명령을 설정하십시오 . 이렇게 하면 이 시간 동안 로그인이 방지됩니다.
하지만, 제가 댓글에서 언급했듯이,아무것도 없다무결점으로 설정할 수 있습니다. 귀하는 귀하의 상자에 대한 루트 액세스 권한을 가지고 있습니다.
이것은 인간 문제에 대한 기술적 해결책을 찾는 전형적인 예입니다. 23시에서 07시 사이에 잠을 자고 싶다면 이를 다른 방법으로 처리하기 위한 자기 훈련이 필요합니다. 루트는 당신을 위해 이 일을 할 수 없습니다. 왜냐하면 당신은예뿌리. 그것~ 할 것이다개인적인 책임을 집니다.
나는 이것에 대해 매우 실행 가능한 정보를 많이 가지고 있지만 주제에서 벗어날 수 있기 때문에 그것에는 그대로 두겠습니다. :)
답변2
또 다른 방법은 마우스와 키보드를 비활성화하는 것입니다(시스템에 USB 입력 장치가 있다고 가정).
00 23 * * * rmmod usbhid
00 7 * * * modprobe usbhid
이렇게 하면 시스템을 껐다가 다시 켜는 것이 방지되지 않고 키보드와 마우스가 다시 활성화됩니다... 이를 방지하려면 모듈을 블랙리스트에 추가할 수 있지만 매번 부팅하려면 시스템을 다시 구축해야 할 수도 있습니다. initramfs( usbhid
시스템이 부팅되지 않는 경우 문제를 해결하려면 작동하는 키보드가 필요하므로 부팅 프로세스 초기에 로드해야 함).
usbhid
시스템 커널에 내장된 경우 (예를 들어Fedora), 모든 HID 장치를 바인딩 해제하면 여전히 동일한 효과를 얻을 수 있습니다. 어려운 부분은 오전 7시에 장치를 다시 바인딩하는 것입니다. 바인딩 해제된 드라이버를 어딘가에 저장해야 합니다(다시 바인딩할 수 있는 방법이 없는 한). 모든 장치 바인딩을 해제합니다.
for device in /sys/bus/hid/devices/*; do
echo ${device##*/} > ${device}/driver/unbind
done
(물론 적절한 오류 검사를 통해). 다시 바인딩하려면 ${device}/driver
가리키는 드라이버와 echo
드라이버 디렉터리의 장치 식별자를 기억해야 합니다 .bind
답변3
이 시간에는 gdm과 getty를 중지하세요.
답변4
예를 들어 서비스를 생성할 수 있습니다 self_discipline
. 서비스 생성은 시스템마다 다릅니다.하지만 온라인 가이드가 너무 많아요.
서비스를 시작할 수 있는 샘플 스크립트는 다음과 같습니다.
#!/bin/bash
while [ true ]
do
HOUR="$(date +%H)"
if [ "$HOUR" -gt 23 ] || [ "$HOUR" -lt 07 ]
then
shutdown -h now
fi
sleep 60
done
그런 다음 이 서비스가 시작 시 실행되도록 설정하면 단순히 다시 시작해도 서비스가 비활성화되지 않습니다. 일찍 닫고 싶으시면service self_discipline stop