@@ -1319,7 +1319,7 @@ public static Path setReadOnly(final Path path, final boolean readOnly, final Li
13191319 if (readOnly ) {
13201320 // RO
13211321 // File, then parent dir (if any).
1322- final boolean set = setPosixReadOnly (path , readOnly , linkOptions );
1322+ final boolean set = setPosixReadOnlyFile (path , readOnly , linkOptions );
13231323 setPosixDeletePermissions (path .getParent (), false , linkOptions );
13241324 if (set ) {
13251325 return path ;
@@ -1335,17 +1335,17 @@ public static Path setReadOnly(final Path path, final boolean readOnly, final Li
13351335 throw new IOException (String .format ("No DosFileAttributeView or PosixFileAttributeView for '%s' (linkOptions=%s)" , path , Arrays .toString (linkOptions )));
13361336 }
13371337
1338- private static boolean setPosixReadOnly (final Path path , final boolean readOnly , final LinkOption ... linkOptions ) throws IOException {
1338+ private static boolean setPosixReadOnlyFile (final Path path , final boolean readOnly , final LinkOption ... linkOptions ) throws IOException {
13391339 final PosixFileAttributeView posixFileAttributeView = getPosixFileAttributeView (path , linkOptions );
13401340 if (posixFileAttributeView != null ) {
13411341 // Not Windows 10
13421342 final PosixFileAttributes readAttributes = posixFileAttributeView .readAttributes ();
13431343 final Set <PosixFilePermission > permissions = readAttributes .permissions ();
13441344 // @formatter:off
1345- final List <PosixFilePermission > executePermissions = Arrays .asList (
1346- PosixFilePermission .OWNER_EXECUTE
1347- //PosixFilePermission.GROUP_EXECUTE ,
1348- //PosixFilePermission.OTHERS_EXECUTE
1345+ final List <PosixFilePermission > readPermissions = Arrays .asList (
1346+ PosixFilePermission .OWNER_READ
1347+ //PosixFilePermission.GROUP_READ ,
1348+ //PosixFilePermission.OTHERS_READ
13491349 );
13501350 final List <PosixFilePermission > writePermissions = Arrays .asList (
13511351 PosixFilePermission .OWNER_WRITE
@@ -1354,10 +1354,12 @@ private static boolean setPosixReadOnly(final Path path, final boolean readOnly,
13541354 );
13551355 // @formatter:on
13561356 if (readOnly ) {
1357- permissions .removeAll (executePermissions );
1357+ // RO: We can read, we cannot write.
1358+ permissions .addAll (readPermissions );
13581359 permissions .removeAll (writePermissions );
13591360 } else {
1360- permissions .addAll (executePermissions );
1361+ // Not RO: We can read, we can write.
1362+ permissions .addAll (readPermissions );
13611363 permissions .addAll (writePermissions );
13621364 }
13631365 Files .setPosixFilePermissions (path , permissions );
@@ -1416,13 +1418,13 @@ private static boolean setPosixPermissions(final Path path, final boolean addPer
14161418 if (path != null ) {
14171419 final PosixFileAttributeView posixFileAttributeView = getPosixFileAttributeView (path , linkOptions );
14181420 if (posixFileAttributeView != null ) {
1419- final Set <PosixFilePermission > currentPermissions = posixFileAttributeView .readAttributes ().permissions ();
1421+ final Set <PosixFilePermission > permissions = posixFileAttributeView .readAttributes ().permissions ();
14201422 if (addPermissions ) {
1421- currentPermissions .addAll (updatePermissions );
1423+ permissions .addAll (updatePermissions );
14221424 } else {
1423- currentPermissions .removeAll (updatePermissions );
1425+ permissions .removeAll (updatePermissions );
14241426 }
1425- Files .setPosixFilePermissions (path , currentPermissions );
1427+ Files .setPosixFilePermissions (path , permissions );
14261428 return true ;
14271429 }
14281430 }
0 commit comments