diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,4 +1,9 @@
+## 0.3.2.1 - 2023-06-25
+
+* `unix-2.8` compatibility [#32](https://github.com/snoyberg/tar-conduit/pull/32)
+
 ## 0.3.2 - 2019-01-14
+
 * Create a prefix directory whenever a directory type entry is missing from the tarball itself. Fixes [#26](https://github.com/snoyberg/tar-conduit/issues/26).
 
 ## 0.3.1 - 2018-11-19
diff --git a/src/Data/Conduit/Tar/Unix.hs b/src/Data/Conduit/Tar/Unix.hs
--- a/src/Data/Conduit/Tar/Unix.hs
+++ b/src/Data/Conduit/Tar/Unix.hs
@@ -19,6 +19,9 @@
 import qualified System.Posix.Files            as Posix
 import qualified System.Posix.User             as Posix
 import qualified System.FilePath.Posix         as Posix
+#if MIN_VERSION_unix(2,8,0)
+import qualified System.Posix.User.ByteString as UBS
+#endif
 
 getFileInfo :: FilePath -> IO FileInfo
 getFileInfo fpStr = do
@@ -29,8 +32,19 @@
     -- Allow for username/group retrieval failure, especially useful for non-tty environment.
     -- Workaround for: https://ghc.haskell.org/trac/ghc/ticket/1487
     -- Moreover, names are non-critical as they are not used during unarchival process
+#if MIN_VERSION_unix(2,8,0)
+    euEntry :: Either IOException UBS.UserEntry <- try $ Posix.getUserEntryForID uid
+    egEntry :: Either IOException UBS.GroupEntry <- try $ Posix.getGroupEntryForID gid
+    let
+      fileUserName = either (const "") UBS.userName euEntry
+      fileGroupName = either (const "") UBS.groupName egEntry
+#else
     euEntry :: Either IOException Posix.UserEntry <- try $ Posix.getUserEntryForID uid
     egEntry :: Either IOException Posix.GroupEntry <- try $ Posix.getGroupEntryForID gid
+    let
+      fileUserName = either (const "") (S8.pack . Posix.userName) euEntry
+      fileGroupName = either (const "") (S8.pack . Posix.groupName) egEntry
+#endif
     (fType, fSize) <-
         case () of
             () | Posix.isRegularFile fs     -> return (FTNormal, Posix.fileSize fs)
@@ -45,9 +59,9 @@
     return $! FileInfo
         { filePath      = fp
         , fileUserId    = uid
-        , fileUserName  = either (const "") (S8.pack . Posix.userName) euEntry
+        , fileUserName  = fileUserName
         , fileGroupId   = gid
-        , fileGroupName = either (const "") (S8.pack . Posix.groupName) egEntry
+        , fileGroupName = fileGroupName
         , fileMode      = Posix.fileMode fs .&. 0o7777
         , fileSize      = fSize
         , fileType      = fType
diff --git a/tar-conduit.cabal b/tar-conduit.cabal
--- a/tar-conduit.cabal
+++ b/tar-conduit.cabal
@@ -1,5 +1,5 @@
 name:                tar-conduit
-version:             0.3.2
+version:             0.3.2.1
 synopsis:            Extract and create tar files using conduit for streaming
 description:         Please see README.md. This is just filler to avoid warnings.
 homepage:            https://github.com/snoyberg/tar-conduit#readme
@@ -9,7 +9,10 @@
 maintainer:          michael@snoyman.com, bartavelle@gmail.com, alexey@kuleshevi.ch
 category:            Data Conduit
 build-type:          Simple
-extra-source-files:  README.md ChangeLog.md tests/files/libpq-0.3.tar.gz tests/files/subdir.tar
+extra-source-files:  README.md
+                     ChangeLog.md
+                     tests/files/libpq-0.3.tar.gz
+                     tests/files/subdir.tar
 cabal-version:       1.24
 
 library
diff --git a/tests/Spec.hs b/tests/Spec.hs
--- a/tests/Spec.hs
+++ b/tests/Spec.hs
@@ -40,7 +40,7 @@
     let testPaths =
             ["src", "./tests", "README.md", "ChangeLog.md", "LICENSE"] ++
             if isStack
-                then [".stack-work", "./sample"]
+                then [".stack-work"]
                 else []
     hspec $ do
         describe "tar/untar" $ do
