commit fabe6a5

default  ·  2023-02-07 08:01:57 +0000 UTC
parent b8b0b96
Tweaked user and group permissions for new files and dirs.
6 files changed,  +21, -14
M data.c
M main.c
M snac.c
M snac.h
M data.c
+2, -2
 1@@ -88,7 +88,7 @@ int srv_open(char *basedir, int auto_upgrade)
 2 
 3     /* create the queue/ subdir, just in case */
 4     xs *qdir = xs_fmt("%s/queue", srv_basedir);
 5-    mkdir(qdir, 0755);
 6+    mkdir(qdir, DIR_PERM);
 7 
 8 #ifdef __OpenBSD__
 9     char *v = xs_dict_get(srv_config, "disable_openbsd_security");
10@@ -434,7 +434,7 @@ d_char *_object_fn_by_md5(const char *md5)
11 {
12     xs *bfn = xs_fmt("%s/object/%c%c", srv_basedir, md5[0], md5[1]);
13 
14-    mkdir(bfn, 0755);
15+    mkdir(bfn, DIR_PERM);
16 
17     return xs_fmt("%s/%s.json", bfn, md5);
18 }
M main.c
+5, -0
 1@@ -8,6 +8,8 @@
 2 
 3 #include "snac.h"
 4 
 5+#include <sys/stat.h>
 6+
 7 int usage(void)
 8 {
 9     printf("snac " VERSION " - A simple, minimalistic ActivityPub instance\n");
10@@ -55,6 +57,9 @@ int main(int argc, char *argv[])
11     int argi = 1;
12     snac snac;
13 
14+    /* ensure group has write access */
15+    umask(0007);
16+
17     if ((cmd = GET_ARGV()) == NULL)
18         return usage();
19 
M snac.c
+1, -1
1@@ -149,7 +149,7 @@ void srv_archive(const char *direction, xs_dict *req,
2     xs *dir  = xs_fmt("%s/archive/%s_%s", srv_basedir, date, direction);
3     FILE *f;
4 
5-    if (mkdir(dir, 0755) != -1) {
6+    if (mkdir(dir, DIR_PERM) != -1) {
7         xs *meta_fn = xs_fmt("%s/_META", dir);
8 
9         if ((f = fopen(meta_fn, "w")) != NULL) {
M snac.h
+2, -0
1@@ -5,6 +5,8 @@
2 
3 #define USER_AGENT "snac/" VERSION
4 
5+#define DIR_PERM 02770
6+
7 extern double disk_layout;
8 extern d_char *srv_basedir;
9 extern d_char *srv_config;
+5, -5
 1@@ -36,7 +36,7 @@ int snac_upgrade(xs_str **error)
 2         else
 3         if (f < 2.1) {
 4             xs *dir = xs_fmt("%s/object", srv_basedir);
 5-            mkdir(dir, 0755);
 6+            mkdir(dir, DIR_PERM);
 7 
 8             nf = 2.1;
 9         }
10@@ -61,7 +61,7 @@ int snac_upgrade(xs_str **error)
11                         xs *dir = xs_fmt("%s/object/%c%c", srv_basedir, b[0], b[1]);
12                         xs *nfn = xs_fmt("%s/%s", dir, b);
13 
14-                        mkdir(dir, 0755);
15+                        mkdir(dir, DIR_PERM);
16                         rename(fn, nfn);
17                     }
18 
19@@ -88,7 +88,7 @@ int snac_upgrade(xs_str **error)
20                     xs *dir = xs_fmt("%s/hidden", snac.basedir);
21 
22                     /* create the hidden directory */
23-                    mkdir(dir, 0755);
24+                    mkdir(dir, DIR_PERM);
25 
26                     /* rename all muted files incorrectly named .json */
27                     xs *spec = xs_fmt("%s/muted/" "*.json", snac.basedir);
28@@ -117,10 +117,10 @@ int snac_upgrade(xs_str **error)
29 
30                 if (user_open(&snac, v)) {
31                     xs *dir = xs_fmt("%s/public", snac.basedir);
32-                    mkdir(dir, 0755);
33+                    mkdir(dir, DIR_PERM);
34 
35                     dir = xs_replace_i(dir, "public", "private");
36-                    mkdir(dir, 0755);
37+                    mkdir(dir, DIR_PERM);
38 
39                     user_free(&snac);
40                 }
+6, -6
 1@@ -143,19 +143,19 @@ int snac_init(const char *basedir)
 2         }
 3     }
 4 
 5-    if (mkdir(srv_basedir, 0755) == -1) {
 6+    if (mkdir(srv_basedir, 0775) == -1) {
 7         printf("ERROR: cannot create directory '%s'\n", srv_basedir);
 8         return 1;
 9     }
10 
11     xs *udir = xs_fmt("%s/user", srv_basedir);
12-    mkdir(udir, 0755);
13+    mkdir(udir, DIR_PERM);
14 
15     xs *odir = xs_fmt("%s/object", srv_basedir);
16-    mkdir(odir, 0755);
17+    mkdir(odir, DIR_PERM);
18 
19     xs *qdir = xs_fmt("%s/queue", srv_basedir);
20-    mkdir(qdir, 0755);
21+    mkdir(qdir, DIR_PERM);
22 
23     xs *gfn = xs_fmt("%s/greeting.html", srv_basedir);
24     if ((f = fopen(gfn, "w")) == NULL) {
25@@ -243,7 +243,7 @@ int adduser(const char *uid)
26 
27     xs *basedir = xs_fmt("%s/user/%s", srv_basedir, uid);
28 
29-    if (mkdir(basedir, 0755) == -1) {
30+    if (mkdir(basedir, DIR_PERM) == -1) {
31         printf("ERROR: cannot create directory '%s'\n", basedir);
32         return 0;
33     }
34@@ -256,7 +256,7 @@ int adduser(const char *uid)
35 
36     for (n = 0; dirs[n]; n++) {
37         xs *d = xs_fmt("%s/%s", basedir, dirs[n]);
38-        mkdir(d, 0755);
39+        mkdir(d, DIR_PERM);
40     }
41 
42     xs *scssfn = xs_fmt("%s/style.css", srv_basedir);