Parapin permission

Başlatan utdmr, 07 Nisan 2009 - 18:43:02

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

utdmr

Arkadaşlar, Jaunty'de paralel port kullanmak için Parapin'i kullanıyorum. Ancak root yetkileriyle çalıştırmam gerekiyor programı, yoksa "can't get IO permissions!: Operation not permitted" çıktısı veriyor. /dev/port 'a erişim hakkı verdim(sudo chmod 777 /dev/port , sanırım böyle olması gerek), ama yine aynı şey oldu, programımda ekstra bir şey kullanmıyorum, başka hangi dosyalara hak vermem gerekiyor?
Kişisel Blogum: Çoğunlukla Zararsız - cogunluklazararsiz.org
--
Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -and a lot of courage- to move in the opposite direction.

agritux

sudo chown kullanıcıadı -R /istediğin/dizin

şeklinde dener misin

utdmr

#2
utdmr@utdmr-desktop:~$ sudo chown utdmr -R /dev/port
[sudo] password for utdmr:
utdmr@utdmr-desktop:~$ ./yak
can't get IO permissions!: Operation not permitted
utdmr@utdmr-desktop:~$ ls /dev/port -l
crw-r----- 1 utdmr kmem 1, 4 2009-04-07 17:18 /dev/port


Sonuç yine aynı. Şu chmod işinden pek anlamıyorum ya,  şu anda bütün izinlerin verili olması gerekmiyor mu?

Edit:
Bir daha "sudo chmod 777 /dev/port komutunda şöyle oldu:"
utdmr@utdmr-desktop:~$ sudo chmod 777 /dev/port
[sudo] password for utdmr:
utdmr@utdmr-desktop:~$ ls -l /dev/port
crwxrwxrwx 1 utdmr kmem 1, 4 2009-04-07 17:18 /dev/port
utdmr@utdmr-desktop:~$ ./yak
can't get IO permissions!: Operation not permitted
Kişisel Blogum: Çoğunlukla Zararsız - cogunluklazararsiz.org
--
Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -and a lot of courage- to move in the opposite direction.

agritux

./yak bir komut ise başına sudo koymayı dener misin

utdmr

Alıntı yapılan: chataluck - 07 Nisan 2009 - 19:04:39
./yak bir komut ise başına sudo koymayı dener misin

Sudo ile çalışıyor zaten. Sorunum onsuz çalışabilmesi. Amacım internetten kontrolü sağlamak için PHP komutu ile o programı çalıştırmak, buna yönelik bir çözüm de olabilir. ("./yak" derlediğim bir C++ programı.)
Kişisel Blogum: Çoğunlukla Zararsız - cogunluklazararsiz.org
--
Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -and a lot of courage- to move in the opposite direction.

agritux

Kullaniciya gecici olarak su yetkisi verebilirsin isini gorur ise. Forumda mevcut. Bunun disinda yardimci olamayacagim.

bytan

O programla yaptırdığın işlerin listesini ve program aracılığıyla sisteme uygulattığın komutları buraya aktarırsan, konu hakkında belki fikir yürütebiliriz.
Umut en büyük kötülüktür; işkenceyi uzatır. - F.N.


Bir şey ne ise odur, bu kadar. Öyleyse, iki şey arasında bağdaşıklık varsa, bu aralarında iletişim kuruyorlar demek değildir.
"... kavrayışını bilgi ile derinleştir ..."
PF @ ST

utdmr

#include <iostream>
#include <cstdlib>
#include <unistd.h>

#include <parapin.h>

int main(int argc, char *argv[])
{
  int pin_sequence[] = { 1, 2, 3, 4, 5, 6, 7, 8, 17, 14, 16, 9, -1};
//                       0  1  2  3  4  5  6  7  8   9    10  11  12

  int prev = 0;
  char buf[240];

  if (pin_init_user(LPT1) < 0)
    exit(0);

  pin_output_mode(LP_DATA_PINS | LP_SWITCHABLE_PINS);

int i=9;

for(unsigned int s=1;s<=5000;s++)
clear_pin(LP_PIN[pin_sequence[i]] | prev);

}

Programın kodları bunlar. Sadece port'u açıyorum, başka hiç bir şey yok. Bu programı herkes tarafından çalıştırılabilir yapmak eğer mümkün değilse, sorum PHP ile bir komutu nasıl root olarak verebiliriz?
Kişisel Blogum: Çoğunlukla Zararsız - cogunluklazararsiz.org
--
Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -and a lot of courage- to move in the opposite direction.

bytan

Buradan benim anlayacağım bir şey çıkmadı. Peki aşağıdaki ile nereyi okuyup yazmaya çalışıyor, neyi kullanmaya çalışıyor ve hata verdiriyor görebiliyor musun?

strace ./yak
Umut en büyük kötülüktür; işkenceyi uzatır. - F.N.


Bir şey ne ise odur, bu kadar. Öyleyse, iki şey arasında bağdaşıklık varsa, bu aralarında iletişim kuruyorlar demek değildir.
"... kavrayışını bilgi ile derinleştir ..."
PF @ ST

utdmr

User yetkileri ile çalıştırılınca:
utdmr@utdmr-desktop:~$ strace ./yak
execve("./yak", ["./yak"], [/* 37 vars */]) = 0
brk(0)                                  = 0x9540000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb80d5000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=84160, ...}) = 0
mmap2(NULL, 84160, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb80c0000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/libstdc++.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000B\4\0004\0\0\0\350"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=950424, ...}) = 0
mmap2(NULL, 977132, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7fd1000
mmap2(0xb80b5000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe3) = 0xb80b5000
mmap2(0xb80ba000, 22764, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb80ba000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/tls/i686/cmov/libm.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@4\0\0004\0\0\0P"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=149328, ...}) = 0
mmap2(NULL, 151680, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7fab000
mmap2(0xb7fcf000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x23) = 0xb7fcf000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260\34\0\0004\0\0\0\234"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=54740, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7faa000
mmap2(NULL, 57864, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7f9b000
mmap2(0xb7fa8000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc) = 0xb7fa8000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320h\1\0004\0\0\0\344"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1442180, ...}) = 0
mmap2(NULL, 1451632, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7e38000
mprotect(0xb7f94000, 4096, PROT_NONE)   = 0
mmap2(0xb7f95000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15c) = 0xb7f95000
mmap2(0xb7f98000, 9840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7f98000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7e37000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7e376d0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
open("/dev/urandom", O_RDONLY)          = 3
read(3, "i\25\300c"..., 4)              = 4
close(3)                                = 0
mprotect(0xb7f95000, 8192, PROT_READ)   = 0
mprotect(0xb7fa8000, 4096, PROT_READ)   = 0
mprotect(0xb7fcf000, 4096, PROT_READ)   = 0
mprotect(0xb80b5000, 16384, PROT_READ)  = 0
mprotect(0xb80f4000, 4096, PROT_READ)   = 0
munmap(0xb80c0000, 84160)               = 0
ioperm(0x378, 0x3, 0x1)                 = -1 EPERM (Operation not permitted)
dup(2)                                  = 3
fcntl64(3, F_GETFL)                     = 0x2 (flags O_RDWR)
brk(0)                                  = 0x9540000
brk(0x9561000)                          = 0x9561000
fstat64(3, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb80d4000
_llseek(3, 0, 0xbf8f2b44, SEEK_CUR)     = -1 ESPIPE (Illegal seek)
write(3, "can't get IO permissions!: Operat"..., 51can't get IO permissions!: Operation not permitted
) = 51
close(3)                                = 0
munmap(0xb80d4000, 4096)                = 0
exit_group(0)                           = ?

Root yetkileri ile çalıştırılınca:
utdmr@utdmr-desktop:~$ sudo strace ./yak
[sudo] password for utdmr:
execve("./yak", ["./yak"], [/* 16 vars */]) = 0
brk(0)                                  = 0x8971000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fee000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=84160, ...}) = 0
mmap2(NULL, 84160, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7fd9000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/libstdc++.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000B\4\0004\0\0\0\350"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=950424, ...}) = 0
mmap2(NULL, 977132, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7eea000
mmap2(0xb7fce000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe3) = 0xb7fce000
mmap2(0xb7fd3000, 22764, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7fd3000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/tls/i686/cmov/libm.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@4\0\0004\0\0\0P"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=149328, ...}) = 0
mmap2(NULL, 151680, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7ec4000
mmap2(0xb7ee8000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x23) = 0xb7ee8000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/libgcc_s.so.1", O_RDONLY)    = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260\34\0\0004\0\0\0\234"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=54740, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7ec3000
mmap2(NULL, 57864, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7eb4000
mmap2(0xb7ec1000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc) = 0xb7ec1000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320h\1\0004\0\0\0\344"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1442180, ...}) = 0
mmap2(NULL, 1451632, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7d51000
mprotect(0xb7ead000, 4096, PROT_NONE)   = 0
mmap2(0xb7eae000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15c) = 0xb7eae000
mmap2(0xb7eb1000, 9840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7eb1000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7d50000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7d506d0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
open("/dev/urandom", O_RDONLY)          = 3
read(3, "\362\322s\271"..., 4)          = 4
close(3)                                = 0
mprotect(0xb7eae000, 8192, PROT_READ)   = 0
mprotect(0xb7ec1000, 4096, PROT_READ)   = 0
mprotect(0xb7ee8000, 4096, PROT_READ)   = 0
mprotect(0xb7fce000, 16384, PROT_READ)  = 0
mprotect(0xb800d000, 4096, PROT_READ)   = 0
munmap(0xb7fd9000, 84160)               = 0
ioperm(0x378, 0x3, 0x1)                 = 0
exit_group(0)                           = ?

Bu da pek benim anlayacağım bir şey çıkmadı :)
Kişisel Blogum: Çoğunlukla Zararsız - cogunluklazararsiz.org
--
Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -and a lot of courage- to move in the opposite direction.

bytan

İki çıktıyı da diff ile karşılaştırdım. Kırmızı olan kısımlar farklarımız:

Alıntı Yap
...
> mprotect(0xb7f95000, 8192, PROT_READ)   = 0
> mprotect(0xb7fa8000, 4096, PROT_READ)   = 0
> mprotect(0xb7fcf000, 4096, PROT_READ)   = 0
> mprotect(0xb80b5000, 16384, PROT_READ)  = 0
> mprotect(0xb80f4000, 4096, PROT_READ)   = 0
> munmap(0xb80c0000, 84160)               = 0
> ioperm(0x378, 0x3, 0x1)                 = -1 EPERM (Operation not permitted)
> dup(2)                                  = 3
> fcntl64(3, F_GETFL)                     = 0x2 (flags O_RDWR)
> brk(0)                                  = 0x9540000
> brk(0x9561000)                          = 0x9561000
> fstat64(3, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
> mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb80d4000
> _llseek(3, 0, 0xbf8f2b44, SEEK_CUR)     = -1 ESPIPE (Illegal seek)
> write(3, "can't get IO permissions!: Operat"..., 51can't get IO permissions!: Operation not permitted

Nasıl çözüleceği hakkında ise hiç bir fikrim yok. Mutlaka daha basit bir yolu vardır.. Örneğin, kullanıcı ayarlarından, o donanımı kullanabilme yetkisi alabiliyor musun?
Umut en büyük kötülüktür; işkenceyi uzatır. - F.N.


Bir şey ne ise odur, bu kadar. Öyleyse, iki şey arasında bağdaşıklık varsa, bu aralarında iletişim kuruyorlar demek değildir.
"... kavrayışını bilgi ile derinleştir ..."
PF @ ST

utdmr

Ayarlarda ona dair bir bilgi yok. Ama tahminim kullandığım küyüphane sadece kullandığım dosyalara erişim yerine ioperm() fonksiyonunu kullanarak tüm root haklarını istemiş. Bu yüzden de çalışmıyor, çünkü bir yerlerde ioperm'in bütün yetkileri istemekte kullanıldığını okumuştum sanırım. Arkadaşlar peki, PHP'den nasıl çalıştırabilirim root olarak?
Kişisel Blogum: Çoğunlukla Zararsız - cogunluklazararsiz.org
--
Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -and a lot of courage- to move in the opposite direction.

bytan

Bende ilave bir bilgi vereyim. Az önce google karıştırırken, senin söylediklerine benzer cümleler okudum. Root yetkilerini edinmen gerekiyormuş.

Umut en büyük kötülüktür; işkenceyi uzatır. - F.N.


Bir şey ne ise odur, bu kadar. Öyleyse, iki şey arasında bağdaşıklık varsa, bu aralarında iletişim kuruyorlar demek değildir.
"... kavrayışını bilgi ile derinleştir ..."
PF @ ST