Variables d'environnement Linux (Ubuntu), shells et security

Je tente de comprendre certains concepts entourant les variables de security et d'environnement pour une application Web exécutée sous Apache sur Ubuntu 10.04 Server.

J'ai quelques applications que j'aimerais utiliser en tant qu'user qui n'a pas de shell ou de mot de passe (je comprends que c'est une bonne idée, mais je ne suis pas un expert). L'une des applications est une application Web qui démarre via un script d'init du système; les autres sont des utilitaires démarrés sur une base ad hoc à partir de la command line via sudo avec le commutateur -u .

Chaque application a besoin d'accéder au même set de variables d'environnement. Je peux modifier le script qui démarre chaque application et définir les variables d'environnement là-bas, mais je préférerais que les variables d'environnement soient définies pour l'user sous lequel l'application est exécutée.

Mes questions sont les suivantes:

Est-il possible de définir des variables d'environnement «par user» pour un user qui n'a pas de shell? J'ai lu " Définir des variables d'environnement pour un service sans shell de connection sur Debian ", mais la solution donnée est essentiellement la même que la modification de chacun de mes scripts d'application.

Si je ne peux pas définir les variables d'environnement par user, quels sont les risques de security associés à donner à l'user un shell?

Quelles sont, le cas échéant, les alternatives ou les recommandations pour cette situation vraisemblablement commune?

2 Solutions collect form web for “Variables d'environnement Linux (Ubuntu), shells et security”

L'utilisation d'un file de configuration, et l'ajout des variables via le script de démarrage de l'application est vraiment la bonne façon de gérer cela. Si vous devez fournir certaines variables d'environnement à des scripts ou des files binarys non-shell (comme perl, python ou java), vous pouvez les appeler avec un wrapper shell, fournir les variables nécessaires, puis exec le script réel.

Si vos applications sont lancées par une sorte de script, il faut commencer par appeler un shell (le shebang en haut du file), même si l'user n'a pas de shell de connection. Vous pouvez donc modifier les variables d'environnement à l'aide des files rc du shell, tout comme vous le feriez pour les users réguliers. Je crois que vous devriez toujours insert la variable BASH_ENV pour que les files rc se triggersnt, car vous appelez le script de manière non interactive.

Je vous recommand fortement d'utiliser la méthode précédente et de créer une sorte de configuration pour les applications. Il sera beaucoup plus facile de gérer à long terme.

Les variables d'environnement sont un aspect du shell. Je suis donc certain que pas de shell == pas de variables d'environnement.

En règle générale, je ne donnerais pas de privilèges de connection aux counts de service. La réponse courte est que c'est juste autre chose à craindre. C'est juste un autre point d'intrusion potentiel.

Personnellement, c'est là que j'utiliserais un file de configuration (/etc/myapp.conf). Vous pouvez simplement avoir le script d'init qui démarre l'application Web, générer le file et afficher vos autres applications dans un location par défaut ou prendre des arguments sur la command line.

  • Donnez l'accès d'écriture d'Apache à mon répertoire personnel
  • Impossible de configurer le server de notification push de juggernaut sur ubuntu
  • Les drivers du controller RAID PERC 5 / i sont-ils disponibles et sont-ils facilement installés sur Ubuntu 9.04?
  • Enregistrez les mails avec DomainKey sur exim4 et Ubuntu
  • Comment configurer des hôtes virtuels sur Apache 2 sur Ubuntu? J'ai des erreurs
  • Qu'est-ce que c'est dans mon syslog et devrais-je être concerné?
  • L'exécution de la mise à jour / mise à jour apt-get nécessite un redémarrage nginx?
  • Enregistrez tout sur la ligne de commande centos / fedora / ubuntu
  • Comment installer / activer GMP (fonctions mathématiques) pour PHP sur Ubuntu?
  • Les searchs DNS échouent
  • Réinitialiser le mot de passe MySQL
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.