Создание домашней папки для нескольких пользовательских скриптов

Мне нужно было бы создать сценарий, который ежедневно проверяет, есть ли у пользователей домашняя папка 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 (что для этого потребуется). ТЕСТ ТЕСТ И ЕЩЕ РАЗ ТЕСТ.

Другие вопросы по тегам