Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: [gcc] Права доступа к директории  (Прочитано 1120 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн miksayer

  • Автор темы
  • Любитель
  • *
  • Сообщений: 59
    • Просмотр профиля
[gcc] Права доступа к директории
« : 27 Марта 2010, 17:15:18 »
Я рекурсивно обхожу все подкатологи данной папки, используя opendir и readdir. Но, как я понимаю, для использования этих функций должны быть установлены какие-то права доступа к папке? Какие это должны быть права? И как их проверять?
« Последнее редактирование: 27 Марта 2010, 18:05:43 от miksayer »

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: [gcc] Права доступа к директории
« Ответ #1 : 27 Марта 2010, 18:33:05 »
Чтоб получать список файлов каталога должен быть установлен бит +x в правах. Проверять можно с помощью fstat(). В системе есть мануал на русском по этому вызову.

Оффлайн miksayer

  • Автор темы
  • Любитель
  • *
  • Сообщений: 59
    • Просмотр профиля
Re: [gcc] Права доступа к директории
« Ответ #2 : 28 Марта 2010, 00:36:54 »
спасибо. Почему-то думал(и мне кажется, что это более логично), что нужны права на чтение :-) буду пробовать

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: [gcc] Права доступа к директории
« Ответ #3 : 29 Марта 2010, 12:15:20 »
Не надо ничего дополнительно проверять, opendir и readdir возвращают ошибку в случае отсутствия прав.

$ man opendir
...
RETURN VALUE
       The opendir() and fdopendir() functions return a pointer to the directory stream.  On error, NULL is returned, and
       errno is set appropriately.

ERRORS
       EACCES Permission denied.
...
$ man readdir
...
RETURN VALUE
       On success, readdir() returns a pointer to a dirent structure.  (This structure may be  statically  allocated;  do
       not  attempt  to  free(3)  it.)   If the end of the directory stream is reached, NULL is returned and errno is not
       changed.  If an error occurs, NULL is returned and errno is set appropriately.
...

А "право на выполнение" (+x) для каталога означает возможность chdir в него. Для того, чтобы получить список файлов внутри каталога, на него должен быть установлен атрибут +r
http://en.wikipedia.org/wiki/Chmod
« Последнее редактирование: 29 Марта 2010, 12:19:06 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

 

Страница сгенерирована за 0.032 секунд. Запросов: 25.