Сначала следует добавить пользователя dhaka в группу «it».
#usermod -a -G it dhaka
#chown dhaka.it /home/dhaka
Затем необходимо установить липкую группу для каталога /home/dhaka, чтобы новые файлы/каталоги, созданные в /home/dhaka, имели ту же групповую принадлежность, что и для /home/dhaka.
#chmod g+s /home/dhaka
Затем вам нужно изменить файл.bashrc для домашнего каталога пользователя dhaka для разрешения файла/каталога по умолчанию, созданного пользователем dhaka.
echo "umask 002" >> /home/dhaka/.bashrc
Маска Umask используется для установки прав доступа к файлам/каталогам для любого нового файла, созданного этим пользователем. После завершения вы можете протестировать его с новой оболочкой.
Я хотел сделать то же самое, и вот что я сделал, чтобы это заработало:
Создать/etc/NetworkManager/dispatcher.d/99-user-scripts
:
#!/bin/bash
#
# Run NeworkManager dispatcher scripts from user home directories
# for logged in users
# See: https://developer.gnome.org/NetworkManager/stable/NetworkManager.html
# See: https://unix.stackexchange.com/q/405242
#
for user in $(who | awk '{print $1}' | sort | uniq); do
scripts_dir="/home/${user}/.config/NetworkManager/dispatcher.d"
[ ! -d "$scripts_dir" ] && continue
find $scripts_dir -type f -executable -user $user -perm -u+rwx ! -perm /go+w ! -perm /+s | \
sort | \
xargs -I{} sudo -u $user --set-home --preserve-env -- {} $1 $2
done
Установите правильные права доступа к файлу в соответствии с документацией NetworkManager:
$ chmod u+x,go-w,a-s /etc/NetworkManager/dispatcher.d/99-user-scripts
Затем создайте каталог пользовательских скриптов и создайте пользовательский скрипт:
$ mkdir -p ~/.config/NetworkManager/dispatcher.d
$ touch ~/.config/NetworkManager/dispatcher.d/50-my-script
$ chmod u+x,go-w,a-s ~/.config/NetworkManager/dispatcher.d/50-my-script
Вот образец~/.config/NetworkManager/dispatcher.d/50-my-script
:
#!/bin/bash
prog="$(basename "${BASH_SOURCE[0]}")"
logger -t $prog -p user.notice "Running ${BASH_SOURCE[0]} $@"
printenv | logger -t $prog -p user.notice # verify environment variables are inherited
Вы можете убедиться, что пример сценария выполняется, проверив системный журнал после того, как произошло сетевое событие.
/root
или не -стандартными путями к домашним каталогам пользователей (легко исправить)/etc/NetworkManager/dispatcher.d
скриптов. В документах указано алфавитное, поэтому я использовал sort
для найденных файлов. Вероятно, не огромная проблема, но к вашему сведению.