PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : unistd.h - chown



Socma
15-12-2001, 10:33
Wenn in unistd.h "_POSIX_CHOWN_RESTRICTED " angegeben ist, dann kann doch nur root das Kommando chown anwenden, um Zugehörigkeit... zu ändern, oder ? (bin mir eigentlich sicher, nur so um sicher zu gehen).
Dient das jetzt nur als Info für den User das es so ist, oder kann ich es umstellen.
Ich hab zwar obige Zeile in meiner unistd.h gefunden, aber kein #def..., also würde ein #undef sicher auch nichts bringen.

GUckt euch am besten mal diese Site an:

http://linux.palmen.homeip.net/viewtopic.php?topic=3&forum=16&5

Dort ging die Diskussion schon etwas weiter...

anda_skoa
15-12-2001, 13:58
Der Kommatar dazu sagt:


If any of these symbols is defined as -1, the corresponding option is not
true for any file. If any is defined as other than -1, the corresponding
option is true for all files. If a symbol is not defined at all, the value
for a specific file can be obtained from `pathconf' and `fpathconf'.


So wie ich das interpretiere, heißt das nicht, dass es definert sein muß.

Allerdings hat es IMHO keine Sinn das umzudefinerten oder die Definition aufzuheben.
Mal abgesehen davon, dass es einziemlicher Aufwand wäre, alle Progrs und libs neu zu kompilieren, die unistd includen.

Ciao,
_

Socma
15-12-2001, 14:17
Also erstmal danke für die Antwort.
Es dreht sich jetzt auch nicht um den Aufwand, der damit verbunden wäre, ich will es einfach nur wissen.

Pathconf... können ja auch "abfragen" ob es definiert ist (also mit _PC_CHOWN_RESTRICTED), ich nehme mal nicht an das es einfach nur nachschaut ob irgendwo in unistd.h eine solche Zeile existiert (wobei diese noch in einem Kommentar steht).

Verstehst du was ich damit meine ?
trotzdem noch mal danke.

anda_skoa
16-12-2001, 14:30
Naja, die werden halt einen #ifdef block benutzen um zu Compileziet das verahalten festzuglegen:



#ifdef _POSIX_CHOWN_RESTRICTED
int chown_root_only(char* path)
{
if (_POSIX_CHOWN_RESTICTED == -1)
return 0;
else
return 1;
}
#else
int chown_root_only(char* path)
{
return pathconf(path, _PC_CHOWN_RESTRICTED);
}
#endif


Das selbe für das fpathconf.

Ciao,
_