1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-cloudmacs

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
asEnvUser 1.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Dima Gerasimov Отправлено 14.09.2019 11:05 4992040
#!/bin/bash
set -eux
# borrowed from https://github.com/JAremko/docker-emacs
## Create(if needed) this user and run command as the user:
# ENV UNAME="emacser" \
# GNAME="emacs" \
# UHOME="/home/emacs" \
# UID="1000" \
# GID="1000" \
# WORKSPACE="/mnt/workspace" \
# SHELL="/bin/bash"
## NOTE: ^^^^ Those are default values only in docker-emacs
## NOTE: The user will have "no password" sudo privilege
## Create user if it doesn't exists
if ! id "${UNAME}" >/dev/null 2>&1; then
## Prepend the user to /etc/passwd to ensure that it will
## override already existing users with the same IDs
echo -e "${UNAME}:x:${EMACS_UID}:${EMACS_GID}:${UNAME},,,:${UHOME}:${SHELL}\\n$(cat /etc/passwd)" > /etc/passwd
echo "${UNAME}::17032:0:99999:7:::" >> /etc/shadow
fi
## Make sure that user is sudoer (if sudo is present)
if [[ -d "/etc/sudoers.d" ]] && [[ ! -f "/etc/sudoers.d/${UNAME}" ]]; then
echo "${UNAME} ALL=(ALL) NOPASSWD: ALL" > "/etc/sudoers.d/${UNAME}"
chmod 0440 "/etc/sudoers.d/${UNAME}"
fi
## Create user's group if it doesn't exists
set +e
u_group=$(grep -E -i "^${GNAME}" /etc/group)
if [ $? -ne 0 ]; then
echo "${GNAME}:x:${EMACS_GID}:${UNAME}" >> /etc/group
elif [[ ${u_group} != *"${UNAME}"* ]]; then
sed -i -e "s/${u_group}/${u_group},${UNAME}/g" /etc/group
fi
set -e
# no harm in doing it every time? should be idempotent and shouldn't mess permissions because it's special emacs home dir
mkdir -p "${UHOME}"
chown "${EMACS_UID}":"${EMACS_GID}" "${UHOME}"
function check_permissions {
find "$UHOME" -not -user "$EMACS_UID" -or -not -group "$EMACS_GID"
}
count=$(check_permissions | wc -l)
if [ "$count" -ne 0 ]; then
echo "WARNING: some files have wrong permissions"
check_permissions
fi
mkdir -p "${WORKSPACE}"
chown "${EMACS_UID}":"${EMACS_GID}" "${WORKSPACE}"
cd "${WORKSPACE}"
su-exec "${UNAME}" "$@"

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-cloudmacs.git
git@api.gitlife.ru:oschina-mirror/mirrors-cloudmacs.git
oschina-mirror
mirrors-cloudmacs
mirrors-cloudmacs
master