Yes, your question makes good sense. It sounds to me as though your test is still operating at too high a level. With experience, you will write smaller tests, each of which confirms some concrete outcome.
You say your test suite uses basically the same code as in your module to see if the new permissions are acceptable. So separate the checking and the fixing.
Create some files and set their permissions explicitly and test whether your permission checking code, at run time, evaluates the acceptability of each set of permissions in the same way that you, at test writing time, believe it should. Nothing circular about that.