Мне нужно выполнить 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/ndomusername‹/.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, но он работает.
Любое дальнейшее улучшение приветствуется! :)