bozo: Add KeyFileExt and rxkad.keytab to access rights check 29/14329/3
authorMichael Meffie <mmeffie@sinenomine.net>
Fri, 28 Aug 2020 15:23:00 +0000 (11:23 -0400)
committerBenjamin Kaduk <kaduk@mit.edu>
Fri, 23 Oct 2020 16:11:26 +0000 (12:11 -0400)
When the KeyFileExt and rxkad.keytab were added to OpenAFS, they were
not added to the bosserver's access rights check. Add these files to the
bosserver access checks, with the same access rights needed for the
original KeyFile.

Also, add the full path for KeyFileExt to the dirpath package (not just
the filename), which was not done when the KeyFileExt was introduced.
This is needed to perform the access checks.

Change-Id: I8c9028e846fad9f15823baeb7cc15a8f80ed5c1c
Reviewed-on: https://gerrit.openafs.org/14329
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

src/bozo/bosoprocs.c
src/util/dirpath.c
src/util/dirpath.hin
src/util/dirpath_nt.h
src/util/test/dirpath_test.c

index 4a446ca..c823b35 100644 (file)
@@ -1266,8 +1266,10 @@ struct bozo_bosEntryStats bozo_bosEntryStats[] = {
     {NULL, 1, 1, 0700, 07},    /* AFSDIR_SERVER_DB_DIRPATH     */
     {NULL, 1, 1, 0700, 07},    /* AFSDIR_SERVER_LOCAL_DIRPATH  */
     {NULL, 0, 1, 0600, 07},    /* AFSDIR_SERVER_KEY_FILEPATH   */
-    {NULL, 0, 1, 0600, 03}
-};                             /* AFSDIR_SERVER_ULIST_FILEPATH */
+    {NULL, 0, 1, 0600, 03},    /* AFSDIR_SERVER_ULIST_FILEPATH */
+    {NULL, 0, 1, 0600, 07},    /* AFSDIR_SERVER_RXKAD_KEYTAB_FILEPATH   */
+    {NULL, 0, 1, 0600, 07}     /* AFSDIR_SERVER_EXT_KEY_FILEPATH   */
+};
 int bozo_nbosEntryStats =
     sizeof(bozo_bosEntryStats) / sizeof(bozo_bosEntryStats[0]);
 
@@ -1290,6 +1292,8 @@ initBosEntryStats(void)
     bozo_bosEntryStats[6].path = AFSDIR_SERVER_LOCAL_DIRPATH;
     bozo_bosEntryStats[7].path = AFSDIR_SERVER_KEY_FILEPATH;
     bozo_bosEntryStats[8].path = AFSDIR_SERVER_ULIST_FILEPATH;
+    bozo_bosEntryStats[9].path = AFSDIR_SERVER_RXKAD_KEYTAB_FILEPATH;
+    bozo_bosEntryStats[10].path = AFSDIR_SERVER_EXT_KEY_FILEPATH;
 
     return 0;
 }
index 830ac26..269b0ad 100644 (file)
@@ -396,6 +396,9 @@ initDirPathArray(void)
     pathp = dirPathArray[AFSDIR_SERVER_RXKAD_KEYTAB_FILEPATH_ID];
     AFSDIR_SERVER_FILEPATH(pathp, AFSDIR_SERVER_ETC_DIR, AFSDIR_RXKAD_KEYTAB_FILE);
 
+    pathp = dirPathArray[AFSDIR_SERVER_EXT_KEY_FILEPATH_ID];
+    AFSDIR_SERVER_FILEPATH(pathp, AFSDIR_SERVER_ETC_DIR, AFSDIR_EXT_KEY_FILE);
+
     /* client file paths */
 #ifdef AFS_NT40_ENV
     strcpy(dirPathArray[AFSDIR_CLIENT_THISCELL_FILEPATH_ID],
index 7d8c1e7..ee8c39c 100644 (file)
@@ -296,6 +296,7 @@ typedef enum afsdir_id {
       AFSDIR_CLIENT_CONFIG_FILE_FILEPATH_ID,
       AFSDIR_SERVER_CONFIG_FILE_FILEPATH_ID,
       AFSDIR_SERVER_RXKAD_KEYTAB_FILEPATH_ID,
+      AFSDIR_SERVER_EXT_KEY_FILEPATH_ID,
       AFSDIR_PATHSTRING_MAX } afsdir_id_t;
 
 /* afs_getDirPath() returns a pointer to a string from an internal array of path strings 
@@ -371,6 +372,7 @@ const char *afs_getDirPath(afsdir_id_t string_id);
 #define AFSDIR_SERVER_FSSTATE_FILEPATH afs_getDirPath(AFSDIR_SERVER_FSSTATE_FILEPATH_ID)
 #define AFSDIR_SERVER_CONFIG_FILE_FILEPATH afs_getDirPath(AFSDIR_SERVER_CONFIG_FILE_FILEPATH_ID)
 #define AFSDIR_SERVER_RXKAD_KEYTAB_FILEPATH afs_getDirPath(AFSDIR_SERVER_RXKAD_KEYTAB_FILEPATH_ID)
+#define AFSDIR_SERVER_EXT_KEY_FILEPATH afs_getDirPath(AFSDIR_SERVER_EXT_KEY_FILEPATH_ID)
 
 /* client file paths */
 #define AFSDIR_CLIENT_CONFIG_FILE_FILEPATH afs_getDirPath(AFSDIR_CLIENT_CONFIG_FILE_FILEPATH_ID)
index 5a97882..13e649a 100644 (file)
@@ -281,6 +281,7 @@ typedef enum afsdir_id {
     AFSDIR_CLIENT_CONFIG_FILE_FILEPATH_ID,
     AFSDIR_SERVER_CONFIG_FILE_FILEPATH_ID,
     AFSDIR_SERVER_RXKAD_KEYTAB_FILEPATH_ID,
+    AFSDIR_SERVER_EXT_KEY_FILEPATH_ID,
     AFSDIR_PATHSTRING_MAX
 } afsdir_id_t;
 
@@ -358,6 +359,7 @@ const char *getDirPath(afsdir_id_t string_id);
 #define AFSDIR_SERVER_FSSTATE_FILEPATH afs_getDirPath(AFSDIR_SERVER_FSSTATE_FILEPATH_ID)
 #define AFSDIR_SERVER_CONFIG_FILE_FILEPATH afs_getDirPath(AFSDIR_SERVER_CONFIG_FILE_FILEPATH_ID)
 #define AFSDIR_SERVER_RXKAD_KEYTAB_FILEPATH afs_getDirPath(AFSDIR_SERVER_RXKAD_KEYTAB_FILEPATH_ID)
+#define AFSDIR_SERVER_EXT_KEY_FILEPATH afs_getDirPath(AFSDIR_SERVER_EXT_KEY_FILEPATH_ID)
 
 /* client file paths */
 #define AFSDIR_CLIENT_CONFIG_FILE_FILEPATH afs_getDirPath(AFSDIR_CLIENT_CONFIG_FILE_FILEPATH_ID)
index 5813dc1..2799dcc 100644 (file)
@@ -62,8 +62,10 @@ main(int argc, char *argv[])
           AFSDIR_SERVER_THISCELL_FILEPATH);
     printf("AFSDIR_SERVER_CELLSERVDB_FILEPATH  = %s\n",
           AFSDIR_SERVER_CELLSERVDB_FILEPATH);
-    printf("AFSDIR_SERVER_KEY_FILEPATH AFSDIR = %s\n",
+    printf("AFSDIR_SERVER_KEY_FILEPATH = %s\n",
           AFSDIR_SERVER_KEY_FILEPATH);
+    printf("AFSDIR_SERVER_EXT_KEY_FILEPATH = %s\n",
+          AFSDIR_SERVER_EXT_KEY_FILEPATH);
     printf("AFSDIR_SERVER_ULIST_FILEPATH = %s\n",
           AFSDIR_SERVER_ULIST_FILEPATH);
     printf("AFSDIR_SERVER_NOAUTH_FILEPATH = %s\n",