Как предоставить разрешение на запись файла в Linux?

Как я могу (программно) предоставить разрешение на запись в файл конкретному пользователю в Linux? Как, например, его владелец? У каждого есть доступ для чтения к этому файлу.

Ответ 1

В оболочке или оболочке script просто используйте:

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.

Ответ 2

В восьмеричном режиме 644 будут предоставлены владельцам права на чтение и запись, а также только разрешения на чтение для остальной группы, а также для других пользователей.

read     = 4
write    = 2
execute  = 1
owner    = read | write = 6
group    = read         = 4
other    = read         = 4

Основной синтаксис команды для установки режима -

chmod 644 [file name]

В C это будет

#include <sys/stat.h>

chmod("[file name]", 0644);

Ответ 3

chmod 644 FILENAME

6 читается и записывается, 4 читается только. Предполагая, что владельцем файла является пользователь, которому вы хотите предоставить доступ на запись.

Ответ 4

Вы можете сделать это с помощью chmod, на ubuntu вы можете попробовать $ sudo chmod 666 Это дало бы разрешения на чтение/запись для всех... проверьте это для получения дополнительной информации: http://catcode.com/teachmod/