Автоматически создавать папку в домашнем каталоге новых пользователей
Мне нужно автоматически назначать каждому новому пользователю, который создается определенную папку 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"
мы гарантируем, что папка будет создана, даже заново создана при следующем входе в систему, если пользователь может удалить ее вручную. В то же время, если папка существует, команда не будет выполнена, поэтому существующие папки не будут перезаписаны.