feat(testbed/cron): support nixos (#69)

Reviewed-on: NASP/registry#69
Co-authored-by: Dict Xiong <me@beardic.cn>
Co-committed-by: Dict Xiong <me@beardic.cn>
This commit is contained in:
Dict Xiong 2024-05-29 22:44:41 +08:00 committed by DictXiong
parent aec64a8d54
commit f7fcc84bdf

View File

@ -1,9 +1,15 @@
#!/bin/bash #!/usr/bin/env bash
set -ex set -ex
THIS_DIR=$( cd "$( dirname "${BASH_SOURCE[0]:-${(%):-%x}}" )" && pwd ) THIS_DIR=$( cd "$( dirname "${BASH_SOURCE[0]:-${(%):-%x}}" )" && pwd )
check_username() {
( echo $1 | grep -qxE "^[a-z][-a-z0-9_]*\$" ) || return 1
return 0
}
touch_user() { touch_user() {
test -n "$1" test -n "$1"
check_username $1 || { echo "Invalid user name $1 !"; exit -1; }
if id -u $1 1>/dev/null 2>&1; then if id -u $1 1>/dev/null 2>&1; then
return return
fi fi
@ -12,16 +18,11 @@ touch_user() {
exit 1 exit 1
fi fi
adduser \ useradd -m --groups nasp $1
--shell /bin/bash \ su - $1 -c "true"
--disabled-password \
--home /home/$1 \
--gecos "nasp member" \
$1
usermod -a -G nasp $1
mkdir -p /home2/$1 mkdir -p /home2/$1
chown $1: /home2/$1 chown $1:nasp /home2/$1
} }
update_key() { update_key() {
@ -36,17 +37,20 @@ update_key() {
if [[ ! -d "$dest_dir" ]]; then if [[ ! -d "$dest_dir" ]]; then
mkdir -p "$dest_dir" mkdir -p "$dest_dir"
chown $1:$1 "$dest_dir" chown $1:nasp "$dest_dir"
chmod 700 "$dest_dir" chmod 700 "$dest_dir"
fi fi
cat "$tmp_path" > "$dest_path" cat "$tmp_path" > "$dest_path"
rm "$tmp_path" rm "$tmp_path"
chown $1:$1 "$dest_path" chown $1:nasp "$dest_path"
chmod 600 "$dest_path" chmod 600 "$dest_path"
} }
main() { main() {
cp "$THIS_DIR/nasp" "/etc/sudoers.d/nasp" if [ -f /etc/os-release ]; then
. /etc/os-release
test "$ID" = "nixos" || cp "$THIS_DIR/nasp" "/etc/sudoers.d/nasp"
fi
for file in "$THIS_DIR"/../authorized_keys/* ; do for file in "$THIS_DIR"/../authorized_keys/* ; do
if [[ ! -d "$file" ]]; then if [[ ! -d "$file" ]]; then
continue continue