forked from widdix/aws-ec2-ssh
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathimport_users.sh
executable file
·33 lines (30 loc) · 1.43 KB
/
import_users.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/bin/bash
# Specify an IAM group for users who should be given sudo privileges, or leave
# empty to not change sudo access, or give it the value '##ALL##' to have all
# users be given sudo rights.
SudoersGroup=""
[[ -z "${SudoersGroup}" ]] || [[ "${SudoersGroup}" == "##ALL##" ]] || Sudoers=$(
aws iam get-group --group-name "${SudoersGroup}" --query "Users[].[UserName]" --output text
);
aws iam list-users --query "Users[].[UserName]" --output text | while read User; do
SaveUserName="$User"
SaveUserName=${SaveUserName//"+"/".plus."}
SaveUserName=${SaveUserName//"="/".equal."}
SaveUserName=${SaveUserName//","/".comma."}
SaveUserName=${SaveUserName//"@"/".at."}
if ! grep "^$SaveUserName:" /etc/passwd > /dev/null; then
/usr/sbin/useradd --create-home --shell /bin/bash "$SaveUserName"
fi
if [[ ! -z "${SudoersGroup}" ]]; then
# sudo will read each file in /etc/sudoers.d, skipping file names that end
# in ‘~’ or contain a ‘.’ character to avoid causing problems with package
# manager or editor temporary/backup files.
SaveUserFileName=$(echo "$SaveUserName" | tr "." " ")
SaveUserSudoFilePath="/etc/sudoers.d/$SaveUserFileName"
if [[ "${SudoersGroup}" == "##ALL##" ]] || echo "$Sudoers" | grep "^$User\$" > /dev/null; then
echo "$SaveUserName ALL=(ALL) NOPASSWD:ALL" > "$SaveUserSudoFilePath"
else
[[ ! -f "$SaveUserSudoFilePath" ]] || rm "$SaveUserSudoFilePath"
fi
fi
done