Como evitar que o vinho crie diretórios no meu diretório pessoal?

5

Eu tenho uma instalação de vinho com alguns jogos, a maioria dos quais funciona maravilhosamente. No entanto, o vinho cria diretórios em minha casa para os dados do jogador, salva, etc.

Existe uma maneira de tê-los em ~ / .winesaves ou algo similar? Eu preferiria que o vinho não jogasse lixo no meu diretório pessoal.

(vinho: 1.5.27, jogo em questão era SCII e DE: IW)

edite para esclarecer:

Tudo no ~ / .wine é bom e bom, mas eu não quero que os aplicativos criem ~ / GameSaves ou os gostos.

    
por Michael Schubert 07.04.2013 / 22:35

4 respostas

8

Você pode precisar experimentar com a opção sandbox presente em winetricks , o que pode ajudá-lo, pois todos os% sy_links Wine para $HOME são removidos quando essa configuração é aplicada ao WINEPREFIX padrão com winetricks sandbox .

No entanto, wine ainda tem as permissões do usuário na pasta inicial e, muitas vezes, ao instalar um novo programa, uma ação na instalação pode acionar a remoção do sandbox. Portanto, não é realmente uma verdadeira "sandbox", mas pode ser útil para o seu caso de uso.

Na FAQ oficial do vinho , é de notar que:

Winetricks does have a sandbox verb that does at least a partial job of isolating Wine programs from the rest of your system. It protects against errors rather than malice. It's useful for, e.g., keeping games from saving their settings in random subdirectories of your home directory.

Na página oficial de winetricks , é explicado que

If you want to isolate an app so that it doesn't save anything to your home directory, you can try 'winetricks sandbox'. That will remove the symlinks to your home directory. Do this before saving any data, or you'll have to copy old saved data from your home directory into $WINEPREFIX/drive_c/users/$USERNAME.

Notas importantes

  • A opção sandbox do vinho provavelmente precisará ser usada repetidamente, ou seja, inclua-a em um script de inicialização que execute winetricks sandbox e, em seguida, inicie seu jogo, pois várias ações em wine podem acionar a reconstrução de os links simbólicos.

  • A pasta de salvamentos que você já gerou precisará ser movida para o seu WINEPREFIX, por exemplo, /home/$USER/.wine/drive_c/users/$USER/"My Documents" para que você possa retomar seu jogo. Se wine acabou de criar uma pasta chamada ~/gamesaves , simplesmente mova essa pasta para o local mencionado acima. Caso contrário, observe a estrutura do diretório; Se uma pasta de salvar jogos for ~/Documents/Syberia/save , certifique-se de criar um equivalente em /home/$USER/.wine/drive_c/users/$USER/"My Documents" .

  • Quando você instalar um jogo no futuro, certifique-se de executar winetricks sandbox no início, para que o jogo comece automaticamente a usar seu WINEPREFIX como o local de salvamento, e não uma pasta no seu $HOME .

por user76204 08.04.2013 / 21:13
0

O que funcionou para mim foi criar um wrapper em torno de wine que lançou wine com um% diferente HOME . Por exemplo. você pode criar seu próprio ~/bin/wine (assumindo que ~/bin está no seu PATH ), que define:

#!/bin/sh
export "HOME=$HOME/.wine/home"
exec /usr/bin/wine "$@"

Com um WINEPREFIX ( ~/.wine/ ) vazio, o Wine criará os links simbólicos para seu próprio diretório pessoal em ~/.wine/home/ .

Você pode expandir isso ainda mais para vários wrappers para diferentes prefixos do Wine (por exemplo, para 32 bits versus 64 bits).

    
por Vladimir Panteleev 19.12.2016 / 14:53
0

Se você tiver bubblewrap instalado, poderá usar seus mecanismos para limitar o acesso ao sistema de arquivos.

Example1. Você deseja que o wine tenha acesso a ~/.wine , ~/Downloads , mas nada mais. Você pode usar este comando então:

bwrap --dev-bind / / --tmpfs ~ --bind ~/.wine ~/.wine --bind ~/Downloads ~/Downloads --new-session wine ~/.wine/path-to-your-program

No comando acima, criamos um novo namespace, vinculamos a raiz / , associamos um sistema de arquivos na memória a ~ e vinculamos dois diretórios acima de ~ . Quaisquer mudanças feitas fora desses 2 diretórios irão para o tmpfs e serão perdidas quando o bubblewrap (e seu programa) for encerrado.

Example2. Você não quer hierarquias complexas, você só quer que todas as coisas relacionadas ao vinho vivam em ~/.bubblewrap-wine-container . E em nenhum outro lugar. Neste caso, você pode usar:

bwrap --dev-bind / / --bind ~/.bubblewrap-wine-container ~ --new-session wine path-to-your-program-relative-to-this-directory

Se você quiser proibir o acesso à internet para qualquer um desses exemplos, adicione o argumento --unshare-net . Ou talvez até mesmo --unshare-all para ver se ele será lançado. Consulte a documentação do bubblewrap para mais detalhes.

    
por VasyaNovikov 11.10.2017 / 18:28
-3

O Wine mantém sua estrutura de diretórios em ~ / .wine para emular a estrutura de diretório do Windows, portanto, programas executados sob o wine não podem acessar os níveis superiores da hierarquia por padrão. Depende do aplicativo final (ou jogo), onde armazena seus dados. Você pode criar um link simbólico para colocar o diretório .wine em outro lugar. Algo como:

cd ~; sudo -s
mv .wine /var/cache/wine && ln -s /var/cache/wine ~/.wine

Explicação destes comandos: 1. Vá para o seu diretório pessoal. Torne-se usuário root 2. Mova o diretório .wine para o local desejado (neste exemplo é / var / cache / wine, se o sucesso fizer um link simbólico [sugiro que você leia 'man ln') de / var / cache / wine para you_home_dir /.wine.

    
por Kwinto 07.04.2013 / 23:03

Tags