adduser
คำสั่งสามารถเรียกใช้สคริปต์เว็บไซต์ที่เฉพาะเจาะจงที่จะทำตั้งค่าใด ๆ เช่นการลบไฟล์ ตราบใดที่ยอมรับได้ว่าเริ่มต้นด้วยการทำสำเนาเต็มรูปแบบแล้วจึงลบบางไฟล์หลังจากนั้นวิธีการนี้จะได้ผลสำหรับคุณ
จากหน้า man adduser (8) :
หากมีไฟล์/usr/local/sbin/adduser.local
อยู่ไฟล์นั้นจะถูกเรียกใช้หลังจากที่บัญชีผู้ใช้ถูกตั้งค่าเพื่อทำการตั้งค่าในเครื่อง อาร์กิวเมนต์ที่ส่งผ่านไปยัง
adduser.local
คือ:
ชื่อผู้ใช้ uid gid home-directory
ดังนั้นสิ่งที่คุณต้องทำคือเขียนสคริปต์ที่ใช้พารามิเตอร์สี่ตัวและใช้มันลบไฟล์ใด ๆ ที่คุณต้องการ บันทึกเป็น/usr/local/sbin/adduser.local
และตรวจสอบให้แน่ใจว่ามีการทำเครื่องหมายไฟล์เรียกทำงาน ( chmod a+x
)
นี่คือสิ่งที่จะช่วยให้คุณเริ่มต้นได้:
#!/bin/bash
## Site-specific setup for newly-created users.
## adduser(8) will call this script after setting up a new user.
set -euo pipefail
if [[ "$#" != 4 ]]; then
echo "usage: $0 username uid gid home" > /dev/stderr
fi
NEW_USERNAME="${1:?}"
NEW_UID="${2:?}"
NEW_GID="${3:?}"
NEW_HOME="${4:?}"
# The groups command outputs a space-separated list of group names
IFS=' '
for group in $(groups "${NEW_USERNAME}"); do
case "${group}" in
a)
[[ "${VERBOSE}" > 0 ]] && echo Removing file for a
rm "${NEW_HOME}/not_for_a.txt"
;;
b)
[[ "${VERBOSE}" > 0 ]] && echo Removing dir for b
rm -r "${NEW_HOME}/not_for_b/"
;;
*)
[[ "${VERBOSE}" > 1 ]] && echo No special setup required for $group
;;
esac
done
ส่วนที่น่าสนใจที่คุณต้องการแก้ไขคือบรรทัดที่มีลักษณะดังนี้:
a)
[[ "${VERBOSE}" > 0 ]] && echo Removing file for a
rm "${NEW_HOME}/not_for_a.txt"
;;
คุณสามารถกรอกชื่อกลุ่มที่เกิดขึ้นจริงและพฤติกรรมที่คุณต้องการที่จะเห็นแทนและa)
rm not_for_a.txt
useradd
มีกำลังใจสำหรับระบบที่ใช้เดเบียนในหน้า man ในระบบ 16.04 ของฉัน หากเหตุผลสำหรับความระมัดระวังนี้เปลี่ยนไปคุณสามารถเพิ่มคำตอบของคุณได้ นอกจากนี้ใน 16.04useradd
และadduser
เป็นโปรแกรมที่แตกต่างกับตัวเลือกที่แตกต่างกันบางทีคุณอาจแก้ไขคำตอบของคุณเพื่อความชัดเจน