test -w aka [ -w não verifica o modo de arquivo. Ele verifica se é gravável. Para raiz, é.
$ help test | grep '\-w'
-w FILE True if the file is writable by you.
A maneira que eu testaria seria fazer uma comparação bitwise com a saída de stat(1) (" %a Direitos de acesso em octal").
(( 0$(stat -c %a somefile) & 0200 )) && echo rw || echo ro
Observe que o subshell $(...) precisa de um 0 prefixado para que a saída de stat seja interpretada como octal por (( ... )) .