Автоматически создавать папку в домашнем каталоге новых пользователей

Мне нужно автоматически назначать каждому новому пользователю, который создается определенную папку Sales в их домашнем каталоге. (например, когда вы добавляете пользователя tim, tim автоматически получает папку с именем Sales в своем домашнем каталоге)

Как я могу это сделать?

2 ответа

Домашние каталоги всех новых пользователей являются копиями /etc/skel когда пользователь создается с помощью любого метода, который автоматически создает домашний каталог.

Если вы уверены, что вам нужно Sales папку в домашнем каталоге каждой новой учетной записи пользователя, вы можете просто создать папку в /etc/skel,


Убедитесь, что владелец и разрешение на все, что вы создаете или изменяете, является правильным.

Установите необходимые разрешения, они будут скопированы в домашний каталог нового пользователя, как они есть. Обычно вы берете 644 (восьмеричное представление) или rw-r--r-- (строковое представление). Вы можете изменить это с помощью одной из команд ниже. Убедитесь, что все доступно для чтения владельцу и все каталоги являются исполняемыми владельцем (в противном случае владелец не может перечислить или получить доступ к своему контенту).

  • sudo chmod 644 /etc/skel/FILE_OR_DIRECTORY установить разрешения для одного файла или каталога, используя восьмеричное представление.
  • sudo chmod u=rw,g=r,o=r /etc/skel/FILE_OR_DIRECTORY установить разрешения для отдельного файла или каталога, используя синтаксис, подобный строковому представлению.
  • sudo chmod -R 644 /etc/skel рекурсивно устанавливать разрешения для всех файлов и каталогов, используя восьмеричное представление.
  • sudo chmod -R u=rw,g=r,o=r /etc/skel рекурсивно устанавливать разрешения для всех файлов и каталогов, используя синтаксис, похожий на строковое представление.

Владелец должен быть root, Вы изменяете это рекурсивно для всех файлов и папок в /etc/skel с помощью команды ниже:

sudo chown -R root: /etc/skel

Относительно простой альтернативой было бы создать стартер в /etc/xdg/autostart, это создаст папку в (любом) домашнем каталоге пользователя при входе в систему, только если папка еще не существует.

  • Создайте файл со следующими строками:

    [Desktop Entry]
    Name=Create Sales
    Exec=/bin/bash -c "mkdir ~/Sales"
    Type=Application
    
  • Сохранить как sales.desktop (расширение необходимо)

  • Запустите команду:

    sudo cp /path/to/sales.desktop /etc/xdg/autostart
    

Это создаст папку ~/Sales в домашнем каталоге любого пользователя, когда он или она входит в систему (только если он не существует).

объяснение

Чтобы запустить команду при запуске (войти в систему) локально,только для одного или нескольких пользователей, мы можем поставить .desktop файл в ~/.config/autostart

Если мы делаем то же самое, но сохраняем .desktop файл в /etc/xdg/autostart, команда также выполняется локально, но аналогично для любого пользователя при входе в систему.

Если мы сделаем .desktop файл запускаем команду:

/bin/bash -c "mkdir ~/Sales"

мы гарантируем, что папка будет создана, даже заново создана при следующем входе в систему, если пользователь может удалить ее вручную. В то же время, если папка существует, команда не будет выполнена, поэтому существующие папки не будут перезаписаны.

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