Создание домашней папки для нескольких пользовательских скриптов
Мне нужно было бы создать сценарий, который ежедневно проверяет, есть ли у пользователей домашняя папка home/testuser, а если нет, то создайте ее. Дело в том, что я хотел бы исключить из этого примера встроенные учетные записи: Администратор, гость, самба и другие. Проблема возникает, когда пользователи создаются с помощью aduc, а не zentyal.
Я бы использовал cron для ежедневной проверки, но не знаю, как исключить встроенных пользователей.
Заранее спасибо!
1 ответ
Как уже было сказано, мы обычно не отвечаем здесь на вопросы по программированию, но это звучало как веселое пятиминутное упражнение.
Это предлагается вам без каких-либо указаний на то, что это работает так, как вы ожидаете, потому что моя система всегда создает дома пользователей, и нет, я не собираюсь начинать играть и портить файл passwd, чтобы проверить это для вас. Итак, сначала запустите это в текстовом поле или закомментируйте биты, которые что-то делают (mkdir и chown), и добавьте несколько команд echo.
Применяются все обычные предостережения: поддержка не предлагается и не подразумевается; чеки на почте; и мой фаворит - исправление в следующем релизе.
#!/bin/bash
# Check if users home directory exists
while read -r LINE; do
userID=`echo $LINE | awk -F: '{print $3}' `
if [ "$userID" -ge "1000" -a "$userID" -lt "65534" ] ; then
userName=`echo $LINE | awk -F: '{print $1}' `
userHome=`echo $LINE | awk -F: '{print $6}' `
userGroup=`echo $LINE | awk -F: '{print $4}' `
if [ ! -d "$userHome" ]; then
echo found user $userID $userName is missing home: $userHome
mkdir $userHome
chown $userName:$userGroup $userHome
fi
fi
done < /etc/passwd
# Check if users home directory exists
while read -r LINE; do
userID=`echo $LINE | awk -F: '{print $3}' `
if [ "$userID" -ge "1000" -a "$userID" -lt "65534" ] ; then
userName=`echo $LINE | awk -F: '{print $1}' `
userHome=`echo $LINE | awk -F: '{print $6}' `
userGroup=`echo $LINE | awk -F: '{print $4}' `
if [ ! -d "$userHome" ]; then
echo found user $userID $userName is missing home: $userHome
mkdir $userHome
chown $userName:$userGroup $userHome
fi
fi
done < /etc/passwd
Будьте осторожны — вы можете нанести большой ущерб своей системе, запуская любой файл от имени пользователя root (что для этого потребуется). ТЕСТ ТЕСТ И ЕЩЕ РАЗ ТЕСТ.