for user in /home/* #поиск домашнего каталога
а с чего вы взяли что домашний каталог пользователя обязательно должен находится в /home ?
$ man useradd
...
-b, --base-dir BASE_DIR
The default base directory for the system if -d HOME_DIR is not specified. BASE_DIR is concatenated with the account name to define the home directory. If the -m option is not used, BASE_DIR must exist.
If this option is not specified, useradd will use the base directory specified by the HOME variable in /etc/default/useradd, or /home by default.
то есть, при
сотворении пользователя его домашний каталог находится в домашнем БАЗОВОМ каталоге для пользователей который указывается либо через переменную --base-dir либо берётся из /etc/default/useradd (где он по умолчанию /home)
Как получить путь до рабочего стола пользователя Ubuntu?
если нужен путь до рабочего стола текущего пользователя то проще некуда:
systemd-path user-desktop
если для другого(не тока текущего) пользователя то можно так:
su - YOUR_USER -c "systemd-path user-desktop"
или лучше так:
runuser -l YOUR_USER -c "systemd-path user-desktop"
если нужно узнать имена всех несистемных пользователей, то
$ man useradd
...
UID_MAX (number), UID_MIN (number)
Range of user IDs used for the creation of regular users by useradd or newusers.
The default value for UID_MIN (resp. UID_MAX) is 1000 (resp. 60000).
но для верности можно глянуть в /etc/login.defs и оттуда узнать UID_MIN и UID_MAX
eval $(awk '/^UID_/{print $1"="$2}' /etc/login.defs)
ну а затем отфильтровать файл /etc/passwd по этим параметрам
awk -v MIN=$UID_MIN -v MAX=$UID_MAX -F: '$3>MIN && $3<MAX {print $1}' /etc/passwd
в итоге получим список несистемных пользователей на данной системе
Есть sh скрипт который должен создать 2 desktop файла на рабочем столе и разрешить их выполнение, попробовал этот код:
если нужно для текущего пользователя то проще простого:
DESKTOP=$(systemd-path user-desktop)
cp sources/update.desktop $DESKTOP && chmod ugo+rwx $DESKTOP/update.desktop
cp sources/shutdown.desktop $DESKTOP && chmod ugo+rwx $DESKTOP/shutdown.desktop
если для всех пользователей то просто закинуть нужные действия в функцию и запускать её от указанных пользователей в цикле