O exemplo na sua pergunta parece com a saída ls -l
, não com a saída lsattr
. Na saída ls -l
, o primeiro campo é o modo , que é o tipo (regular, diretório, link simbólico ...) e permissões.
O S
bit nessa posição significa setuid
, mas sem permissão de execução para o usuário. Aqui, dado que nenhum usuário / grupo / outro tem permissões de execução, isso faz pouco sentido. O l
significa que o bit setgid está definido mas não é executado. Para um arquivo normal, isso significa um arquivo com bloqueio obrigatório ativado.
Mais provável aqui, o arquivo foi criado com permissões erradas, como chmod 6000
em vez de chmod 600
.
Agora, o bit "sync" S
ao qual você está se referindo é para a saída de lsattr
.
Se você usar chattr +S file
no Linux, a saída lsattr file
será semelhante a:
--S----------e-- file
Para encontrar os arquivos com esse sinalizador:
Se os nomes dos arquivos não contiverem caracteres de nova linha, você poderá fazer:
find . ! -type l -exec lsattr -d {} + | sed -n 's/^[^ ]*S[^ ]* //p'
Observe que a posição de S
na linha ou o comprimento da parte -------
não têm garantia de ser a mesma de uma versão de e2fsprogs
para a próxima.
Se você não pode garantir que os nomes de arquivo não contenham caracteres de nova linha, você poderá fazê-lo:
(find .//. ! -type l -exec lsattr -d {} +; echo //) |
sed -ne '/\/\//!{H;d;}' -e 'x; s|^[^ ]*S[^ ]* .//.|./|p'
(o início de cada nome de arquivo será identificado por .//
).