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.

  • XServe G5 vers Ubuntu
  • Ubuntu: ajoute un user SFTP uniquement avec access au directory dans le directory personnel d'un autre user
  • Erreur: KDC n'a aucun support pour le type de encryption
  • Serveur Ubuntu: Apache2 semble attacher .php à URI
  • Ubuntu LDAP auth - mise hors ligne hors connection / vitesse de démarrage du réseau
  • Zombie process bloquant le port lors du redémarrage de Hadoop (Secondary) Namenode
  • StrongSwan + serveur xl2tpd VPN: comment configurer plusieurs fichiers de configuration?
  • Serveur SMTP Postfix sur Ubuntu
  • Comment laisser python / django accéder à postgres db sans nécessiter de sudo -u
  • Comment puis-je get Jenkins pour arrêter d'écouter les connections à distance?
  • Comment Ubuntu surveille-t-il le drapeau "System restart required" dans motd?
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.