Мне нужно выполнить сценарий bash при загрузке.
Для этого я создал файл
/etc/init.d/blah
Я отредактировал его и добавил следующие строки
#! /bin/sh
# /etc/init.d/blah
touch '/var/lock/blah'
username1=$(id -n -u)
username2=$(whoami)
touch '/var/lock/1'${username1}
touch '/var/lock/2'${username2}
exit 0
Скрипт выполняется с привилегиями root (это то, что мне нужно, потому что я должен использовать mount
внутри этого скрипта) ... но проблема в том, что мне также нужно знать имя пользователя пользователя, который только что вошел в систему, потому что моя цель - смонтировать определенную папку в определенную точку монтирования в зависимости от имени пользователя, например
mount -o bind /home/USERNAME/mount-point /media/data/home/USERNAME/to-be-mounted
Возвращаясь к сценарию загрузки, если я это сделаю
sudo update-rc.d blah defaults
а затем перезагрузитесь и войдите в систему с моим именем пользователя (скажем, john
) оба способа получить username
в моем сценарии производят root
на самом деле у меня есть 3 файла
/var/lock/blah
/var/lock/1root
/var/lock/2root
Итак, как я могу получить имя пользователя, который только что вошел в систему? (john
в моем примере)
ОТРЕДАКТИРОВАНО:
Я решил следующим образом:
1. Я создал файл .desktop для каждого пользователя, которого мне нужно выполнить автомонтирование при загрузке, чтобы автоматически запускать скрипт при загрузке (у меня LXDE) и поместить его в /home/{username}/.config/autostart
[Desktop Entry]
Type=Application
Exec=bash "/path/to/mount-bind.sh"
2. Я сохранил по этому пути скрипт bash с именем mount-bind.sh и сделал его исполняемым:
#!/bin/bash
_username=$1
if [[ -z "${_username}" ]]; then
_username="$(id -u -n)"
fi
mkdir -p "/home/${_username}/mount-folder"
sudo mount -o bind "/media/data/home/${_username}/mount-folder" "/home/${_username}/mount-folder"
exit 0
3. Я добавил следующую строку в /etc/sudoers
%nopwd ALL=(ALL) NOPASSWD: /bin/mount
4. Я создал группу nopwd и добавил в нее всех нужных мне пользователей
По его способу после входа в систему я могу смонтировать путь под пользователем home.
Проблема с этим методом заключается в том, что мне приходится создавать файл рабочего стола для каждого нового пользователя и добавлять его/ее в nopwd, но это работает.
Приветствуются любые дальнейшие улучшения! :)