The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"locks"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Информационная безопасность (Разное / Solaris)
Изначальное сообщение [ Отслеживать ]

"locks"  +/
Сообщение от Анатолий email(??) on 09-Июн-14, 13:02 
Всем привет.
Не могли бы вы помочь разобраться с одним вопросом, а именно: что будет если заблочить файл fcntl'ем, а на другом терминале cat'ом попытаться его читать?
Ответить | Правка | Cообщить модератору

Оглавление

  • locks, Andrey Mitrofanov, 13:14 , 09-Июн-14, (1)  
    • locks, Анатолий, 14:18 , 09-Июн-14, (2)  
      • locks, Andrey Mitrofanov, 14:24 , 09-Июн-14, (3)  
        • locks, Анатолий, 14:49 , 09-Июн-14, (4)  
          • locks, Andrey Mitrofanov, 15:10 , 09-Июн-14, (5)  
            • locks, Анатолий, 17:38 , 09-Июн-14, (6)  
              • locks, PavelR, 23:10 , 09-Июн-14, (7)  

Сообщения по теме [Сортировка по времени | RSS]


1. "locks"  +/
Сообщение от Andrey Mitrofanov on 09-Июн-14, 13:14 
>что будет если

Хорошая задача!! Предлагаю Научный Метод Тыка.
Обязательно проверь _все флаги fcntl() и все их сочетания.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "locks"  +/
Сообщение от Анатолий email(??) on 09-Июн-14, 14:18 
>>что будет если
> Хорошая задача!! Предлагаю Научный Метод Тыка.
> Обязательно проверь _все флаги fcntl() и все их сочетания.

Попробовал различные флаги, попробовал установить sgid бит на права доступа к файлу для mandatory блокировки, все равно читается.

вот код:

#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char **argv)
{
    struct flock *lock;
    int fd;
    lock->l_type=F_WRLCK;
    if ((fd = open("path", NULL)) == -1)
        perror("open error");
    fcntl(fd, F_SETLKW, lock);
    return EXIT_SUCCESS;
}

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "locks"  +/
Сообщение от Andrey Mitrofanov on 09-Июн-14, 14:24 
> int main(int argc, char **argv)
> {
>  struct flock *lock;
>  int fd;
>  lock->l_type=F_WRLCK;
>  if ((fd = open("path", NULL)) == -1)
>   perror("open error");
>  fcntl(fd, F_SETLKW, lock);

puts("Посмотри, чего там с котом в другой консоли, потом нажми Enter.");
gets();

>  return EXIT_SUCCESS;
> }

http://www.opennet.ru/openforum/vsluhforumID3/96238.html#46

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "locks"  +/
Сообщение от Анатолий email(??) on 09-Июн-14, 14:49 
>[оверквотинг удален]
>>  int fd;
>>  lock->l_type=F_WRLCK;
>>  if ((fd = open("path", NULL)) == -1)
>>   perror("open error");
>>  fcntl(fd, F_SETLKW, lock);
> puts("Посмотри, чего там с котом в другой консоли, потом нажми Enter.");
> gets();
>>  return EXIT_SUCCESS;
>> }
> http://www.opennet.ru/openforum/vsluhforumID3/96238.html#46

Там все так же читается.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "locks"  +/
Сообщение от Andrey Mitrofanov on 09-Июн-14, 15:10 
> Там все так же читается.

Прекрасно! Задача решена. Неси преподу.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "locks"  +/
Сообщение от Анатолий email(??) on 09-Июн-14, 17:38 
>> Там все так же читается.
> Прекрасно! Задача решена. Неси преподу.

Так а почему именно так происходит?

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "locks"  +/
Сообщение от PavelR (ok) on 09-Июн-14, 23:10 
>>> Там все так же читается.
>> Прекрасно! Задача решена. Неси преподу.
> Так а почему именно так происходит?

Потому что эти  блокировки носят уведомительный характер.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема


  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor