Puncte:0

Unde pot stoca o variabilă de mediu numai pentru utilitare sau scripturi care rulează ca root?

drapel in

Am încercat să folosesc gnome-keyring într-un server fără cap, dar am o eroare, așa că am revenit la variabilele de mediu. https://unix.stackexchange.com/questions/690295/error-secret-tool-cannot-create-an-item-in-a-locked-collection

Am încercat să folosesc .env și .profile, dar acesta din urmă nu este numit de Bash, ci este folosit .bash_profile. Setarea variabilei PATH în /etc/environment vs .profile

Nu sunt sigur că va funcționa pentru scripturi sau utilitare atunci când nu sunt conectat, rulând-le, chiar dacă rulează cu privs root. De exemplu, un script cron.daily care trimite un raport prin e-mail. Vreau să-l transmit $EMAIL și, de asemenea, să trec acea variabilă și alte utilități precum apticron, pentru securitate și ușurință în schimbare.

Acest răspuns sugerează utilizarea unui env var care indică un fișier de configurare, la care presupun că aș putea seta grupul de proprietate și permisiunile. Dar există o metodă mai convențională? https://stackoverflow.com/a/26030125/4240654

EDIT: Tocmai am testat scripturile după ce am setat vars în .bashrc și par să funcționeze. Încă se testează utilități precum Apticron... care se dovedește că nu acceptă o variabilă ca EMAIL=$EMAIL în /etc/apticron/apticron.conf, probabil pentru că nu rulează în rădăcina ENV. Bine, de fapt, ambele funcționează acum după ce au comentat EMAIL="rădăcină" în /usr/lib/apticron/apticron.conf (ceea ce nu trebuie să se întâmple cu utilizarea unui e-mail cu text simplu, deci este inconsecvent și doar pentru Apticron). Folosind un fișier și EMAIL=$(cat .env) totusi nu functioneaza cu Apticron.


Solutii posibile:

Primele două dintre acestea necesită deschiderea unui fișier sau a unui magazin și lăsarea deschisă pe un server VM, ceea ce ar fi la fel cu utilizarea unui fișier cu acces limitat precum .env.

.bashrc este perm 644 în mod implicit, deci poate fi citit de orice alt utilizator, deși directorul /root este 700, deci nu poate fi traversat? Mai important, env vars, chiar și setate doar de rădăcină, sunt accesibile de către toți utilizatorii.. probabil pentru că toate procesele copil moștenesc vars env părinte. Postfix își stochează parola într-un fișier separat cu 600 de perms deținute de root și apoi o stochează pentru a fi utilizată în memorie.

tripleee avatar
drapel nz
Nu este chiar clar ce vrei să realizezi. `/etc/environment` ar fi potrivit pentru setarea unei variabile la nivelul întregului sistem, în timp ce fișierele private de pornire ale `root` ar fi potrivite pentru a seta ceva pentru contul `root` în mod specific. `.profile` va fi citit și de Bash, _cu excepția cazului în care_ aveți un `.bash_profile` (care, în mod convențional, ar trebui să citească și `.profile` oricum, dar aceasta este responsabilitatea dvs.).
alchemy avatar
drapel in
@tripleee.. varul meu .profile env nu funcționează și nu am un .bash_profile... Încerc să fac ca varul să poată fi citit doar de un script de rulare rădăcină sau de un utilitar, așa că /etc/orice cred că este eliminat.Caut fie un fișier .myenv personalizat blocat. Cred că .bash_profile env vars ar fi expus oricărui proces care rulează ca root? (apoi din nou, dacă este, oricum e o bătălie pierdută). Mă uit doar la ce altceva are acces la varsurile env de la root. Sper că asta îmi lămurește amestecul de întrebare.
tripleee avatar
drapel nz
`.bash_profile` este rulat de instanțe _interactive_ sau _login_ ale shell-ului _Bash_. Scripturile pe care le executați din `cron` sau ca un serviciu de sistem nu sunt nici interactive, nici shell-uri de autentificare, nici adesea chiar scripturi Bash.
Puncte:0
drapel jp

Iată ce ar trebui să faci:

  1. deschideți-vă terminalul

  2. a executa sudo -s sau su

  3. a executa cd ~/

  4. a executa nano .bashrc

  5. apoi adăugați variabilele dvs. acolo, de exemplu:

welcome_message="Bine ați venit!";
echo $mesaj de bun venit;
  1. închideți și redeschideți terminalul
alchemy avatar
drapel in
Mulțumesc Nac.. Știu că le pot pune în .bash_profile sau .bashrc, dar speram că există un loc mai sigur pentru a le pune.
NacreousDawn596 avatar
drapel jp
ce intelegi prin "loc sigur"?
alchemy avatar
drapel in
ca criptat într-un sering de chei, sau cel puțin departe de ochii aplicațiilor care au acces la vars env. citiți al treilea link pentru mai multe informații.
Puncte:0
drapel in

Cred că cel mai bine este să folosiți un fișier cu perms stricte deținut de root. Am creat un director numit .env, care era un fișier pentru setarea vars env. Deci am un dosar ~/.env/EMAIL cu care pot suna $(cat ~/.env/EMAIL) în scripturi și lucrează cu Apticron. Are doar o singură valoare: [email protected].

mkdir ~/.env && echo '[email protected]' >> ~/.env/EMAIL && chmod 600 ~/.env/EMAIL

Sau pentru a seta 600 pentru toate fișierele noi din .env/ utilizați: mkdir ~/.env && sed -i 's/defaults\t/defaults,acl\t/' /etc/fstab && mount -o,remount / && setfacl -dm u::rw,g::x,o: :x .env && chmod -x .env && echo '[email protected]' >> ~/.env/EMAIL

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.