Вы забыли разыменовать указатель:
cout << *(printpart1 + i) << endl;
^
Кроме того, вы объявляете параметр как массив указателей , вы должны удалить часть массива:
[ 111]... и измените вызов функции на
printpart1(ARRAY_SIZE, part1PTR);
^
Возможно, достаточно установить бит закрепления для каталогов. Пользователи смогут удалять любые файлы, которыми они владеют, но не файлы других пользователей. Этого может быть достаточно для вашего случая использования. В большинстве систем / tmp настроен таким образом (/ tmp установлен как 1777)
chmod 1775 / control
Однако, если вам нужен больший контроль, вам необходимо включить ACL в рассматриваемой файловой системе.
] В / etc / fstab добавьте acl к флагам:
/dev/root / ext3 defaults,acl 1 1
Затем вы можете использовать setfacl / getfacl для управления и просмотра разрешений на уровне acl.
Пример: (Создавайте файлы, после записи, они доступны только для чтения, но МОЖЕТ может быть удален владельцем, но не другими.)
setfacl --set u::rwxs,g::rwx /controlled
setfacl -d --set u::r-x,g::r-x,o::- /controlled
Вы можете установить список acl по умолчанию для каталога, который будет использоваться всеми файлами, созданными в нем.
Как отмечали другие, будьте осторожны, чтобы указать именно то, что вы хотите. Вы говорите "пишите" - но могут ли пользователи перезаписывать свои файлы? Могут ли они изменить существующий контент или просто добавить? После записи он доступен только для чтения? Возможно, вы можете указать более подробную информацию в комментариях.
Наконец, selinux и grsecurity обеспечивают еще больший контроль, но это совсем другая баня червей. Это может быть довольно сложно настроить.
Ну, это будет rx для этого каталога.
И файлы в у него будет rw -.
Это связано с тем, что файл может быть записан, если его разрешения разрешают запись, но он может быть удален только в том случае, если права его каталога разрешают запись.
Возможно или нет, убедитесь, что перезапись 0-байтовым файлом не эквивалентна удалению файла в вашем конкретном контексте.