Em ls, como posso remover bg color para sticky bit

4

Como posso remover a cor de fundo do bit adesivo? LSCOLORS se parece com esta exportação LSCOLORS="Gxfxcxdxbxegedabagacad"

Usando o oh-my-zsh

Editar : como sugerido, testei LSCOLORS="" ls , mas as cores ainda estão lá.

    
por grm 19.04.2011 / 12:14

1 resposta

2

Seu exemplo não mostra o bit adesivo , mostra setgid (pegajoso é chmod +t , você tem chmod g+s .)

Tem certeza de que precisa disso? Parece errado para mim.

Setgid em um diretório significa que os arquivos criados nesse diretório terão o grupo do diretório, não o grupo primário do usuário , isso é bastante útil.

Mas o setgid em um arquivo normal e não executável não faz nada útil.

Sugiro remover o setgid de todos os arquivos (mas deixá-lo nos diretórios) assim:

find . -type f -exec chmod g-s {} \;

Ou você pode forçar um conjunto de permissões conhecidas em arquivos e diretórios usando:

find . \( -type d -exec chmod g=rwsx {} \; \) -o \( -type f -exec chmod g=rw {} \; \)

Da próxima vez, em vez de usar chmod -R g+s ou find -exec chmod g+s {} \; , faça o seguinte:

find . -type d -exec chmod g+s {} \;

para que isso afete apenas os diretórios.

Antecedentes

ls colore os arquivos setgid porque, se o arquivo também for executável, ele será executado com permissões extras.

Acho que a ideia é que o realce amarelo e preto seja feito para que você olhe cuidadosamente para eles, para garantir que eles sejam os esperados, e não para um novo arquivo que foi instalado por um usuário mal-intencionado ou um rootkit ou algo.

Executar

find /usr -perm -2000

para ver alguns exemplos de programas que usam essas permissões.

No meu sistema, ele lista

/usr/bin/wall
/usr/bin/chage
/usr/bin/expiry
...

Por exemplo, o r-s on /usr/bin/wall

$ ls -l /usr/bin/wall
-rwxr-sr-x 1 root tty 9888 2008-04-29 11:57 /usr/bin/wall

significa que o programa wall pode gravar a saída no tty de qualquer usuário, mesmo que não esteja sendo executado como root.

Se depois de tudo isso, você realmente quiser mudar as cores, tente algo assim:

LS_COLORS=${LS_COLORS/sg=30;43:/sg=00:}

Onde você coloca depende da sua configuração, mas no final de ~ / .zshrc deve fazê-lo.

Por algum motivo, a remoção da entrada sg (setgid) faz com que ela use as cores padrão, em vez de nenhuma cor especial.

    
por 21.04.2011 / 00:38