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


За новостями русскоязычного сообщества и Ubuntu в целом можно следить на нашей страничке в Google+

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

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.06 секунд. Запросов: 25.