» »

Delo za datotekami in zbirkami v zbirniku...

Delo za datotekami in zbirkami v zbirniku...

andraz2112 ::

LP,
pišem program v zbirniku, ki mi ustvari mapo(spotmp), potem se po kazalu pomaknem na to mapo in znotraj nje ustvarim novo zbirko(spozbirka) in ji nastavim pravice. Problem mi povzroča samo premik v mapo. Sem strace-al program pa piše, da nimam pravic. Ve kdo kaj bi lahko bila napaka?

Prosim za pomoč.

Še koda:

bits 32

section .data
spotmp	db	"spotmp",0   ;ime datoteke
spozbirka	db	"spozbirka",0   ;ime zbirke

section .text
global _start

_start:

; Ustavarjanje zbirke
mov eax, 39        ; 39 - ker je 39 za ustvarjanje datoteke
mov ebx, spotmp    ; ime datoteke
mov ecx, 777
int 0x80           ; proži

mov eax, 12        ; 12 - ker je 12 za pomik v datoteko
mov ebx, spotmp    ; ime datoteke
int 0x80

mov eax, 8        ; 8 - ker je 8 za ustvarjanje zbirke
mov ebx, spozbirka    ; ime datoteke
mov ecx, 777
int 0x80

mov eax, 15        ; 15 - ker je 15 za dodeljevanje pravic
mov ebx, spozbirka    ; ime datoteke
mov ecx, 640
int 0x80


;izhod iz programa
mov eax, 1        ; v eax damo 1, ker je 1 koda za izhod
mov ebx, 0        ; izhod z 0 (return 0;)
int 0x80          ; proži


// Polepšal prikaz kode -- moderator
  • spremenil: Mavrik ()

KernelPanic ::

V katerem OS pises? Predvidevam, da je to x86 koda, vsaj na prvi pogled.

Brane2 ::

Verjetno za Winse.

gas ima AFAIK po defaultu obrnjeno sintakso ( ukaz, izvor, ponor), pa tudi operande označuje drugače...


Zajeb: Verjetno za Linux, ker kliče int80h.

Samo da je assmebler kaj v stilu NASM ali kaj podobnega...
On the journey of life, I chose the psycho path.

Zgodovina sprememb…

  • spremenil: Brane2 ()

andraz2112 ::

Pišem za okolje linux :D

Največji problem je ker je sintaksa OK. Samo s pravicam se nekaj čudnega dogaja, enostavno mi napiše, da nimam pravice za premik v kazalo spotmp in potem mi zbirko ustvari izven mape in napiše da je corrupted. Kr tk neki. :D

Zgodovina sprememb…

Brane2 ::

Linux pozna več identitet.

Imaš efektivno, izvorno pa še kaj.

Mogoče bi prej moral spremeniti identiteto...:|

BTW: A ni v novejših kernelih preferiran način klica syscall namesto in80h, ker je na modernih strojih bistveno hitrejši ?
On the journey of life, I chose the psycho path.

Zgodovina sprememb…

  • spremenil: Brane2 ()

andraz2112 ::

Bom poskusil še to, pa sporočim, hvala za enkrat Brane :D

Brane2 ::

Probi dodat vmes klice, da ti sprinta vse identitete, da vidiš kaj se dogaja...
On the journey of life, I chose the psycho path.

Zgodovina sprememb…

  • spremenil: Brane2 ()

andraz2112 ::

mkdir("spotmp", 01411) = 0
chdir("spotmp") = -1 EACCES (Permission denied)
creat("spozbirka", 01411) = 3
chmod("spozbirka", 01200) = 0
_exit(0) = ?

tole mi dela, samo v change directory je problem :S Tut pravice imajo neka čudna števila, mogoče bi moral probrati s šestnajstiškim zapisom namesto osmiškega.

Brane2 ::

tista prva cifra je za posebne atribute. Ne spomnim se točno več kaj je za kaj.

Dve sta sticky- da ti pri vpisu v mapo avtomatsko ponastavi userja ali grup na tistega v mapi- tretja pa za to, da vsak user v mapi lahko dostopa samo datotekam, katerih lastnik je sam. Mogoče je še kakšna.

Videti je, da nimaš dovoljenj. Ti ustvariš mapo, ki jo ti lahko samo bereš, vstopajo pa lahko vanjo vsi iz tvoje grupe oziroma vsi.

Ne vem na pamet, kaj se tu upošteva, to da ti osebno nimaš pravice vstopa, ali se potem preveri, če lahko na podlagi pravic grupe in ostalih še vedno vstopiš. Vsekakor bi moral po kreaciji nastavit dovoljenja mape na recimo 700 ali kaj podobnega...
On the journey of life, I chose the psycho path.

logout ::

V linux-u rabiš x atribut, če želiš vstopiti v direktorij, razen če si root user. V zgoraj navedenem primeru se zaradi nepopolne kode pravice na direktoriju in datoteki ne ustvarijo z željenimi vrednostmi 777 oz. 640, ampak kar nekaj čudnega. Z ozirom na tale primer sem kodo predelal tako, da je za vsakim "mov ecx, 777" še znak "q". Meni potem normalno deluje, kot si je avtor zamislil.

Poleg tega mislim, da je tisti "mov eax, 15" brezveze, ker se pravice na datoteki naredijo že v prejšnjem koraku pri "mov eax, 8"

L.p., Kloko

andraz2112 ::

Hvala za vašo pomoč, problem je bil v tem da zbirnik po default-u jemle samo desetiške vrednosti pri dodeljevanju pravic, ko sem pretvoril iz osmiškega zapisa v desetiški je vse steklo normalno.

Še enkrat hvala vsem za pomoč!

LP,

Andraž

Brane2 ::

Služimo narodu.
On the journey of life, I chose the psycho path.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[ASM] Pomoč, ne najdem napake

Oddelek: Programiranje
5795 (671) c0dehunter
»

[nasm] scanf

Oddelek: Programiranje
272424 (2151) Brane2
»

[C++ & asm] najhitrejša inicializacija 2D matrike

Oddelek: Programiranje
311511 (1151) Fury
»

problem v zbirniku

Oddelek: Programiranje
6753 (651) BigWhale
»

Programiranje (strani: 1 2 )

Oddelek: Programiranje
844983 (3581) Thomas

Več podobnih tem