從系上主機建構成繳交作業環境,我們的資源: - 1 vCPU - 2GB RAM - 2GB Swap - 40 GB ROM 以下是需求 - 磁碟: - 每人 ~100MB,quota 強制限制 - 全部學生共用這台 VM 的 /home 分區 - 安全/資源管理策略: - 用磁碟 quota 避免濫用空間 - 沒有限制 CPU/RAM(大家共用) - 不給 core dump (ulimit -c 0) 避免生成大檔案 - 以 Linux user 帳號做隔離(非一人一 VM) # 建構作業環境步驟 ## 1. 啟用磁碟 Quota ### A. 安裝 quota 工具 ```bash sudo apt update sudo apt install quota ``` ### B. 修改 `/etc/fstab` 找到 `/dev/sda2` 掛載 `/` 的那一行,加上: ``` defaults,usrquota,grpquota ``` ``` UUID=xxxx-xxxx / ext4 errors=remount-ro,usrquota,grpquota 0 1 ``` ### C. 重新掛載並建立 quota ```bash sudo mount -o remount / sudo quotacheck -cugm / sudo quotaon / ``` --- ## 2. 建立 quota 樣板 先建一個「樣板帳號」,給他 quota 100MB(硬限制)。 ```bash sudo useradd -m student sudo edquota -u student ``` 在編輯器裡設定 `/` 分割:  - blocks:目前使用的磁碟空間(KB)。 - soft / hard:使用者能用的上限。soft 是「警告線」,hard 是「強制上限」。 - inodes:檔案數量。soft / hard 同樣是限制數量。 我目前設定: * blocks:`100000 102400`(大約 100MB) * inodes:`9000 10000`(避免塞太多小檔) --- ## 3. 批量建立學生帳號 準備好 `students.txt`,每行一個名字與學號。 建立腳本: ```bash #!/bin/bash INPUT="students.txt" DEFAULT_PW="Temp#2025!" while read -r u; do [[ -z "$u" ]] && continue sudo useradd -m -k /etc/skel -s /bin/bash "$u" echo "${u}:${DEFAULT_PW}" | sudo chpasswd sudo chage -d 0 "$u" # 首次登入強制改密碼 sudo edquota -p student "$u" done < "$INPUT" ``` 存檔為 `create_students.sh`,給執行權限: ```bash chmod +x create_students.sh ./create_students.sh ``` --- ## 4. 關閉 Core Dump 避免學生亂跑程式產生大檔。 ### A. PAM limits 建立 `/etc/security/limits.d/nocore.conf`: ``` * soft core 0 * hard core 0 ``` 新增 `/etc/pam.d/common-session` 有: ``` session required pam_limits.so ``` ### B. systemd-coredump ```bash sudo mkdir -p /etc/systemd/coredump.conf.d echo -e "[Coredump]\nStorage=none\nProcessSizeMax=0" | sudo tee /etc/systemd/coredump.conf.d/disable.conf sudo systemctl daemon-reload ``` --- ## 5. 建立繳交作業資料夾 假設課程代號 **IM101**。 ### A. 建資料夾 ```bash sudo groupadd ta sudo mkdir -p /courses/IM101/submit sudo chgrp ta /courses/IM101 sudo chmod 2755 /courses/IM101 ``` ### B. 設定「繳交區」 ```bash sudo chown root:ta /courses/IM101/submit sudo chmod 1733 /courses/IM101/submit ``` * 學生:只能寫入自己的檔案,看不到別人的 * 助教(群組 ta):可讀所有 --- ## 6. 安全與便利 * **SSH**:限制登入群組(學生、TA) ``` AllowGroups students ta admins ``` * **Logins 預設 umask**:在 `/etc/login.defs` 設定: ``` UMASK 077 ``` → 學生家目錄不互相可讀。 * **公告訊息**:在 `/etc/motd` 寫「quota 100MB、提交方法」 --- ## 7. 維運 * 查看所有人 quota 使用: ```bash sudo repquota -as ``` * 查看單人: ```bash quota -u 學號 ``` * 調整某人額度: ```bash sudo edquota -u 學號 ``` --- # 完成效果 * 每人帳號獨立(不可互訪) * 每人硬限制 100MB * 禁止 core dump * 有「交作業投遞匣」給學生上傳,助教能看
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up