로컬 파일 쓰기를 비활성화하는 방법은 무엇입니까?

로컬 파일 쓰기를 비활성화하는 방법은 무엇입니까?

나는 공유된 공용 컴퓨터를 관리하고 있습니다. 각 사용자는 자신만의 디렉토리를 갖고 있습니다 /home. 새로운 사용자가 로그인하는 데 시간이 오래 걸리기 때문에 네트워크 마운트를 수행하는 것을 좋아하지 않지만 사용자가 자신의 디렉터리 /home에 쓸 수 없도록 설정하고 싶습니다 . /home우리는 사용자가 네트워크 스토리지를 사용할 수 있도록 하고 사용자가 이를 사용해야 하지만 강제로 사용하도록 할 수는 없습니다.

이상적으로는 그들이 로컬 컴퓨터에 데이터를 쓰는 것을 완전히 방지하고 대신 스토리지 서버에 쓰도록 지시하고 싶습니다. 이것이 가능하지 않다면 최소한 로컬 컴퓨터의 디스크 할당량을 제한하여 모든 공간을 소비하지 않도록 하고 싶습니다. 어떻게 해야 하나요?

답변1

파일 시스템 이미지 파일 을 /home./home

파일 시스템 이미지 파일은 다음과 같이 작동합니다.

  1. 고정 크기(예: 100MB)의 빈 파일을 만듭니다.

    dd if=/dev/zero of=/var/home/bob.img bs=1024 count=100000
    

    이를 사용할 필요는 없습니다 /var/home. 이는 다른 경우에는 존재하지 않는 디렉토리입니다. 이 파일은 루트에 속해야 하며 모드 600을 설정해야 합니다.다른 사람들이 읽을 수 없도록 말이죠. 분명히 사용자당 100MB 파일을 생성할 수 있는 충분한 공간이 있는지 확인하십시오. 그러나 /home동시에 모든 것을 제거하고 해당 공간을 확보 할 수 있다는 점을 명심하십시오 .

  2. 이미지에 파일 시스템을 만듭니다.

    mke2fs -m 0 /var/home/bob.img
    

    경고 메시지가 표시됩니다 bob.img is not a block special device. 어쨌든 진행하세요.

    이 작업을 처음 수행하는 경우 사용자의 기존 홈 디렉터리에 복사하려고 하므로 임시로 설치해야 합니다.

    mount /var/home/bob.img /mnt/tmp
    mv /home/bob/* /mnt/tmp
    mv /home/bob/.* /mnt/tmp
    

.마지막 항목에서는 및 을 재정의할지 묻습니다 ... 아니요. 최상위 수준의 "숨겨진" 포인트 파일을 이동하면 첫 번째 파일이 mv남게 됩니다. 파일 브라우저나 다른 방법을 사용하여 이동을 수행할 수도 있습니다. /home/bob이제 비어 있어야 하며 탑재된 이미지를 그곳으로 이동할 수 있습니다.

    umount /mnt/tmp
    mount /var/home/bob.img /home/bob

봐, 모든 것~인 것 같다이전 방식으로 돌아가서 지금 /home/bob은 별도의 파일 시스템이므로 사용자는 bob100MB보다 큰 파일을 넣을 수 없습니다. 또한 기존 이미지 파일이므로 이 공간은 bob용으로 예약되어 다른 어떤 것도 차지하지 않습니다.

부팅 시 이 모든 것을 설치하려면 초기화 서비스가 필요합니다. 다음과 같이 간단할 수 있습니다.

#!/bin/bash

for img in /var/home/*.img; do
    name=$(basename $img .img)
    mount $img "/home/$name"
done

시스템이 종료되면 자동으로 제거되어야 합니다. 데이터는 다른 어느 곳보다 안전합니다.

관련 정보