21 votes

Les jeux Steam sont-ils protégés par un bac à sable ?

Maintenant que Steam est officiellement disponible sous Linux, je m'y intéresse de près !

Cependant, je me demande quel est le système de sécurité de Steam ?

Lorsque je télécharge un jeu sur Steam, le jeu s'exécute-t-il en tant qu'application native ayant un accès complet aux données de l'utilisateur ou dans un environnement de type "bac à sable" avec des autorisations déclarées (comme sur Android) ?

11voto

jviotti Points 135

Steam n'utilise pas de bacs à sable. Par exemple, sous Windows, les jeux Steam enregistrent généralement leurs données dans Mes documents, Appdata, leur propre dossier d'installation ou le dossier Steam Cloud de Steam (qui se synchronise avec le service de stockage en ligne pour vos sauvegardes, configurations et autres données utilisateur). Certains installent même d'autres programmes, comme la bibliothèque d'un composant multijoueur (par exemple : Games for Windows - LIVE).

Valve a toutefois mis en place certaines restrictions afin d'éviter les comportements indésirables, comme l'installation par un jeu de la place de marché de jeux d'un éditeur sans en avoir fait la demande. La seule chose qui s'en rapproche le plus est uPlay d'Ubisoft, qu'Ubisoft voulait utiliser pour mettre à jour ses jeux. Ainsi, au lieu de livrer le client complet, chaque jeu est livré avec une mini-version dépourvue de place de marché et qui ne peut être démarrée que lorsque vous lancez le jeu qui lui est associé.

Les jeux sur Steam sont pour la plupart les mêmes que leurs équivalents au détail, légèrement modifiés pour utiliser le DRM d'authentification de Steam et être téléchargés via les serveurs de Steam.

Steam offre en contrepartie des services supplémentaires, tels que des mises à jour automatiques, la synchronisation dans le nuage des données des utilisateurs de jeux, des réalisations, des classements et d'autres données personnalisées (par exemple, les statistiques d'un utilisateur de Team Fortress 2), et bien d'autres choses encore.

3voto

AMAN77 Points 101

Steam ne protège pas votre système contre les jeux non fiables, ni contre lui-même.

Vous pourriez être intéressé par le document de Stéphane Graber article sur l'utilisation de LXC pour ce faire et le projet steam-lxc qu'il a créée à cet effet.

Mise à jour de septembre 2014 :

J'ai finalement réussi à le mettre en place moi-même. Les liens ci-dessus sont un peu obsolètes, mais Stéphane a posté une série d'articles plus récents sur LXC 1.0 qui ont été très utiles. Grâce à cela et à un peu d'expérimentation, j'ai réussi à faire fonctionner Steam dans un conteneur non privilégié, et cela fonctionne plutôt bien.

Avertissement : Même si vous exécutez Steam (et ses jeux) dans un conteneur, il sera normalement toujours en mesure d'accéder à votre écran, à votre souris et à votre clavier. via le protocole X . Il existe des extensions X pour atténuer ce problème, mais je n'ai pas encore essayé de faire fonctionner Steam en tant que client X non fiable. Un moyen simple de limiter cette exposition consiste à créer un compte utilisateur linux distinct pour votre conteneur Steam, à utiliser la fonction "changer d'utilisateur" de votre environnement de bureau pour vous connecter en tant qu'utilisateur pour jouer, et à basculer entre cette session de bureau et votre session de bureau normale en fonction des besoins. Comme cette approche utilise une session de serveur X séparée pour Steam, le reniflage du protocole X ne devrait pas être possible, bien que le GPU et ses pilotes puissent toujours être exploitables à travers les serveurs X.

Ma ligne de commande pour créer le conteneur :

lxc-create -n steambox -t download -- -d ubuntu -r trusty -a amd64

J'ai modifié mon fichier de configuration du conteneur pour qu'il ressemble à ceci :

# Distribution configuration
lxc.include = /usr/share/lxc/config/ubuntu.common.conf
lxc.include = /usr/share/lxc/config/ubuntu.userns.conf
lxc.arch = x86_64

# Container specific configuration
lxc.id_map = u 0 100000 1000
lxc.id_map = g 0 100000 1000
lxc.id_map = u 1000 1000 1
lxc.id_map = g 1000 1000 1
lxc.id_map = u 1001 101001 64535
lxc.id_map = g 1001 101001 64535
lxc.rootfs = /home/myusername/.local/share/lxc/steambox/rootfs
lxc.utsname = steambox

# Network
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = lxcbr0
lxc.network.hwaddr = 00:16:3e:77:88:99

# Video
lxc.mount.entry = /tmp/.X11-unix tmp/.X11-unix none bind,optional,create=dir
lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry = /dev/nvidia0 dev/nvidia0 none bind,optional,create=file
lxc.mount.entry = /dev/nvidiactl dev/nvidiactl none bind,optional,create=file
#lxc.cgroup.devices.allow = c 195:* rwm
# video0 doesn't exist on my system.
#lxc.mount.entry = /dev/video0 dev/video0 none bind,optional,create=file

# Sound
lxc.mount.entry = /dev/snd dev/snd none bind,optional,create=dir

# Game Controllers
# Steam uses SDL for controller support; SDL uses udev and /dev/input/*
lxc.mount.entry = /dev/input dev/input none bind,optional,create=dir
#lxc.cgroup.devices.allow = c 13:* r
# uinput might be needed for gamepad support with streaming
#lxc.mount.entry = /dev/uinput dev/uinput none bind,optional,create=file
#lxc.cgroup.devices.allow = c 10:223 rwm

# for debugging
#lxc.aa_profile = unconfined

# EOF

Il ne s'agit que d'un point de départ. Vous devrez toujours configurer votre système hôte comme décrit dans les articles, et probablement le redémarrer, avant qu'il ne fonctionne. Ne me demandez pas de dépanner votre système.

Je fonctionne sous Ubuntu avec une carte nVidia. Des distributions et des cartes vidéo différentes nécessiteront probablement des chemins d'accès, des noms de fichiers de périphériques et des numéros de périphériques différents.

Notez que je n'ai pas mis lxc.cgroup.devices.deny = a le conteneur n'est donc pas aussi verrouillé qu'il pourrait l'être. (Je changerai cela une fois que j'aurai fini d'expérimenter).

J'ai dû installer le même paquet de pilotes nVidia dans le conteneur que celui que j'ai sur l'hôte. (Même une différence mineure de numéro de version provoquait des erreurs lorsque Steam essayait d'utiliser le pilote).

J'ai délibérément utilisé l'architecture amd64 et la version Ubuntu Trusty pour mon conteneur, malgré le fait que Valve ne supporte que i386 et Precise. J'ai fait cela parce que je veux que le logiciel espion de Valve me compte parmi ceux qui utilisent un système d'exploitation moderne, dans l'espoir qu'ils commencent à le supporter plus tôt.

Une fois que steam a fonctionné dans le conteneur, j'ai mis en place un script de lancement sur mon système hôte. Il s'appelle steam et vit dans mon PATH Les lignes de commande de Steam fonctionnent donc à peu près comme si Steam était installé normalement. Voici le script :

#!/bin/sh

CONTAINER=steambox
RUNASUSER=ubuntu
STEAMCOMMAND=/usr/games/steam

# Execute a command in the container, with X display support
run_in_container() {
  lxc-attach --clear-env -n $CONTAINER -- sudo -u $RUNASUSER -i \
    env DISPLAY="$DISPLAY" "$@"
}

# Find joystick devices so we can tell Steam's old SDL library to use them
# https://github.com/ValveSoftware/steam-for-linux/issues/1894#issuecomment-25295972
enum_joysticks() {
  local joyprop=ID_INPUT_JOYSTICK=1
  for f in /dev/input/*; do
    if [ ! -c "$f" ]; then
      continue
    elif udevadm info --query=property --name="$f" | grep --quiet $joyprop; then
      echo "$f"
    fi
  done
}

# Use the first arg as a separator to join the remaining args
join() {
  local IFS="$1"
  shift
  echo "$*"
}

# Use an environment variable to help Steam's old SDL version find gamepads
run_steam_with_joysticks() {
  run_in_container SDL_JOYSTICK_DEVICE="$(join : $(enum_joysticks))" \
    $STEAMCOMMAND "$@"
}

STARTED=false
if ! lxc-wait -n $CONTAINER -s RUNNING -t 0; then
    lxc-start -n $CONTAINER -d
    lxc-wait -n $CONTAINER -s RUNNING
    STARTED=true
fi

run_in_container xauth add $(xauth list | sed 's/^.*\///')
run_steam_with_joysticks "$@"

if [ "$STARTED" = "true" ]; then
    lxc-stop -n $CONTAINER -t 10
fi

Le enum_joysticks , join et SDL_JOYSTICK_DEVICE= Les pièces ne sont là que pour contourner une Bogue de vapeur qui empêche Big Picture Mode de détecter les manettes de jeu sur un système Ubuntu Trusty. Vous pouvez probablement supprimer ces parties du script si votre conteneur fonctionne sous Ubuntu Precise ou si vous n'utilisez pas Big Picture Mode.

Une fois ce script installé dans mon PATH Je peux copier le fichier .desktop de chaque jeu de mon conteneur vers mon système hôte pour que le jeu apparaisse dans mon menu d'applications. (En général, je copie également l'icône ou j'édite le fichier .desktop pour nommer une icône installée sur mon système hôte).

cp /home/myusername/.local/share/lxc/steambox/rootfs/home/ubuntu/.local/share/applications/thegame.dekstop /home/myusername/.local/share/applications/

Bonne chance !

2voto

Nathan Points 515

Flatpak peut être utilisé pour exécuter des applications Linux dans un conteneur. Flathub qui héberge et distribue des applications conteneurisées pour flatpak, dispose de l'application Application Steam . Une fois que vous avez installé l'application Steam flatpak, vous pouvez l'exécuter via flatpak run -v com.valvesoftware.Steam/x86_64/stable

-3voto

rodarmor Points 1927

Vous pouvez utiliser une partition avec Steam Os pour exécuter tous les jeux Steam dans un endroit sûr, séparé de vos fichiers. Tous les fichiers auxquels les jeux accèdent sont ceux de la partition, et le pire qu'un virus puisse faire est d'effacer ou d'altérer les fichiers utilisateur dans ce bac à sable.

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X