Puncte:0

acordați acces la fișierul proprietarului programului, precum și acces la fișierul utilizatorului

drapel us

Am un executabil (creat din codul python) de care am nevoie pentru a accesa un fișier creat de mine, precum și un fișier creat de persoana care rulează executabilul. eu sunt nu este permis să schimbi permisiunile a dosarelor.

Iată un exemplu:
user1 este proprietarul executabilului și user1_file
user2 este proprietarul user2_file user2 este de așteptat să ruleze executabilul

>>> ls -al
drwxr-xr-x 12 utilizator1 grup1 4096 2 ianuarie 13:48 executabil
-rw------- 1 utilizator1 grup1 272 14 februarie 14:32 utilizator1_file
-rw------- 1 user2 group2 272 14 februarie 14:32 user2_file

Iată ce am încercat

  1. rulează direct ca user2:
    eșuează deoarece nu are permisiuni de citire pentru user1_file
  2. setați suid pentru executabil și apoi rulați ca user2:
    a citit cu succes user1_file, dar nu poate citi user2_file
  3. actualizarea codului python pentru a se executa os.system('chmod u-s executabil') înainte de a accesa user2_file:
    această operațiune nu este permisă.Chiar dacă este permis, voi fi îngrijorat de cum să re-adăugați suid în timp ce programul rulează acum cu permisiunile user2.

Poate exista vreo metodă care să permită atât permisiunile user1 cât și user2 pentru executabil? sau poate o modalitate de a opri temporar permisiunile user1?

pLumo avatar
drapel in
Trebuie să remediați acest lucru: „*Nu am **permisiunile** pentru fișiere.*”.Nu puteți „da un program” acces la fișier, le oferiți acces utilizatorilor.
raj avatar
drapel cn
raj
Cine a spus că „nu ai voie să schimbi permisiunile fișierelor”? Ești tu sau o altă persoană? Oricum, această persoană habar n-are cum funcționează permisiunile și gândirea ei merge complet invers. Dacă ambele fișiere aparțin unor utilizatori diferiți și au permisiuni setate numai pentru proprietar (ca și în cazul dvs.), nu este posibil ca niciun utilizator (cu excepția root) să poată accesa ambele fișiere. Perioadă. **trebuie** să modificați permisiunile fișierelor, altfel trebuie să rulați aplicația ca root.
drapel us
Sunt user1. deci, din punct de vedere tehnic, pot schimba permisiunile numai pentru user1_file. Cu toate acestea, user1_file conține informații pe care nu vreau să le partajez cu nimeni
Puncte:0
drapel us

Pași care mi-au rezolvat problema

  1. adăugați următoarea linie la codul python os.seteuid(os.getuid()) înainte de a citi user2_file
  2. regenerează executabilul
  3. set suid pentru executabil executabil chmod u+s

Mai multe detalii
Ideea principală este de a schimba uid-ul efectiv al procesului în uid-ul real

Aflați despre procesul linux uid/gid afectiv, real și salvat: acesta legătură m-a ajutat
schimbați uid-ul/ghidul efectiv după cum este necesar. Acest întrebare poate fi de ajutor

raj avatar
drapel cn
raj
De ce să fie atât de complicat, dacă modalitatea corectă este doar să setați corect permisiunile fișierelor?
drapel us
Răspuns într-un comentariu la întrebarea în sine

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.