LINUX.ORG.RU

очереди сообщений ipcs premission denied


0

0

Программа должна принимать ipcs сообщения.
Ниже представлен участок кода, отвечающий
за создание новой очереди с пом. msgget
и принятие сообщения с пом. msgrcv


#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>

#include <errno.h>


struct msgform
{
long mtype;
char mtext[10];


}msg,msg2;



int msgid;
int main()
{



int i,pid,*pint;







key_t key=ftok("./msg_server.c",1);
msgid=msgget(key,IPC_CREAT );
//printf(strerror(errno));
printf("msgid= %d\n",msgid);




{

int rcv_id=msgrcv(msgid,&msg,sizeof(msg.mtext),1,0);
printf(strerror(errno));
printf("\nrcv_id=%d\n",rcv_id);




char cmd[50];




strcpy(cmd,"echo");

strcat(cmd," ");

strcat(cmd,msg.mtext);
system(cmd);









}





return 0;
}


}

Когда прога выполняется под root, все работает так как надо.
Когда же я выполняю прогу под дкугим пользователем (lamer),
прога выдает результат.

msgid= 98307
Permission denied
rcv_id=-1


Т.е. как я понял создает очередь, но не читает из нее.
Комманда ipcs выполненная под root выдает:

----- Message Queues --------
key msqid owner perms used-bytes messages
0x0105cd28 0 root 644 0 0
0x0105cd17 32769 root 0 0 0
0x0105cd33 65538 lamer 0 0 0
0x0105cd29 98307 lamer 0 0 0

А если выполнить ipcs под lamer:

key msqid owner perms used-bytes messages
0x0105cd28 0 root 644 0 0

В общем, как я понял на очереди сообщения налагаются определенные права доступа. Но ведь lamer создал сообщение ! Он его владелец !
Почему он не может получать елементы очереди ? Что нужно сделать, чтобы lamer мог получать их ?
Объяаните мне люди умные, плиз.






Re: очереди сообщений ipcs premission denied

msgid = msgget (key, IPC_CREAT | 0666);

ananas ★★★★★ ()
Ответ на: Re: очереди сообщений ipcs premission denied от ananas

Re: очереди сообщений ipcs premission denied

Еще раз снимаю шляпу перед ANANAS-ом ! Заработало. Считаю, что администрация занижает его проффесионализм наличием только лишь двух звездочек.

constant_arapov ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.