#include #include #include #include #include #include int main(int argc, char **argv) { char fn[PATH_MAX]; struct stat buf; int rc; snprintf(fn, PATH_MAX, "/var/teammail/%s", argv[1]); /* Zugriffsrecht pruefen */ rc = stat(fn, &buf); if (rc != 0 && rc != ENOENT) { fprintf(stderr, "Fehler\n"); return 1; } if (rc == 0 && buf.st_gid != getgid()) { fprintf(stderr, "Zugriff verweigert\n"); return 1; } /* Datei erzeugen oder abschneiden */ if (fopen(fn, "w+") == NULL) return 1; /* Eigentuemer und Rechte setzen */ if (chown(fn, buf.st_uid, getgid()) != 0) { remove(fn); return 1; } if (chmod(fn, 0066) != 0) { remove(fn); return 1; } return 0; }