utworzyć plik za pomocą poniższego kodu:otwarte uprawnienia do pliku() nie ustawienie prawidłowo
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <errno.h>
#include <fcntl.h>
#include <unistd.h>
int main()
{
const char* filename = "./test.out";
int fd;
if(-1 == (fd = open(filename, O_CREAT|O_RDWR, 0666)))
{
perror("Error");
errno = 0;
}
else
puts("File opened");
if(-1 == (close(fd)))
{
perror("Error");
errno = 0;
}
else
puts("File closed");
return 0;
}
mogę określić mode
argumentu jako 0666
, która powinna przyznawać prawa odczytu, zapisu dostępu do wszystkich. Jednak ls -l
pokazuje
-rw-r--r-- 1 kmehta users 0 2012-01-29 16:29 test.out
Jak widać, pisać uprawnienia są przyznawane tylko dla właściciela pliku. Nie wiem, dlaczego wszyscy inni nie mają praw poprawnie. chmod a+w test.out
ustawia jednak poprawnie uprawnienia.
kod zestawione jako gcc -Wall test.c
Specyfikacja: gcc v 4.5.0 na openSuSe 11,3 64 bitów
sprawdzić umask. sprawdź umask. – wildplasser
Czy próbowałeś używać stałych dla flag, np. S_IRUSR, S_IRGRP itd.? – dasblinkenlight
@ dasblinkenlight Używanie stałych nie pomogło. To był problem z umaską, przy użyciu fchmod po pliku teraz otwórz, jak pokazano w odpowiedzi – jitihsk