Скрипты Bash и домашний пользователь из учетной записи root (Linux) - PullRequest
0 голосов
/ 26 февраля 2009

Я пишу скрипт установки в bash для приложения в Linux.

Этот скрипт копирует некоторые файлы в / usr / bin и / usr / share, поэтому его должен выполнять пользователь root, кроме того, он создает скрытый каталог в каталоге $ HOME для файлов конфигурации.

Вот проблема: если обычный пользователь хочет установить программу, он должен быть пользователем root. Но если он root, каталог $ HOME будет / root / вместо /home/username.

Ответы [ 2 ]

10 голосов
/ 26 февраля 2009

... и, кроме того, если UserA устанавливает программное обеспечение, но UserB запускает его, у UserB не будет скрытого каталога под /home/UserB. Кроме того, скрытый каталог в /home/UserA будет принадлежать пользователю root, а не пользователю A.

Итак, вам нужно, чтобы приложение создавало скрытый каталог, а не установщик.

Другой возможный вариант - не устанавливать в системные каталоги; одно возможное альтернативное местоположение - /usr/local. Однако даже для этого могут потребоваться права суперпользователя. Подумайте, может ли он быть установлен в других местах, и как он может найти свои материалы.

Однако требование установки привилегий суперпользователя не является концом света - неприятность для некоторых, но не совсем не в порядке. Но требовать от всех, кто использует права root, выход из строя - и если всем, кто его использует, нужно запустить установщик, это плохо.

Конечная точка (на данный момент): если вы используете sudo, это не изменит значение $ HOME, даже если вы получите привилегии root. Однако требовать от всех, кто использует ваше приложение, прав доступа sudo тоже нехорошо.

0 голосов
/ 26 февраля 2009

Вы должны использовать $HOME? Может быть, вы могли бы запросить имя пользователя и установить вместо него ~$username?

...