В оболочке или сценарии оболочки просто используйте:
chmod u+w <filename>
Это только изменяет бит записи для пользователя, все остальные флаги остаются нетронутыми.
Если вы хотите сделать это в программе на C, вам нужно использовать:
int chmod(const char *path, mode_t mode);
Сначала запросите существующий режим с помощью
int stat(const char *path, struct stat *buf);
... и просто установите бит записи, выполнив newMode = oldMode | S_IWUSR
. Подробнее см. man 2 chmod
и man 2 stat
.