ValveSoftware / steam-for-linux

Issue tracking for the Steam for Linux beta client
4.25k stars 175 forks source link

new steam library folder must be on a filesystem mounted with execute permissions #3679

Closed LorenzoLolli closed 3 years ago

LorenzoLolli commented 9 years ago

Greetings,

I'm a steam user and I use mostly steam on windows. Now I'm trying to configure my linux box with latest ubuntu with steam. The client does work fine, until I try to add a steamlibrary to my linux client. When I try to add the library, I get the error "new steam library folder must be on a filesystem mounted with execute permissions". I've checked both the folder and the mount options, the exec option/permission is present.

Please note:

The issue was posted originally here https://support.steampowered.com/view.php?ticketref=2070-ZCVB-3483 and as suggested I've tryed to reset my steam linux installation without solving the issue.

Any help would be appreciated.

bjones2094 commented 9 years ago

It doesn't look like you've given the directory execution permissions from the mount options you've shown. It should have the 'exec' option in order to execute off the file system. I think the default_permissions are supposed to include it, but you might want to add it explicitly just in case.

LorenzoLolli commented 9 years ago

Hello Jones,

the fstab lacks the mountpoint information of the disk with the steam library, cause it is a USB external drive. But you can find them in my original post. For your convenience I report them here:

The exec option, is not listed, but it is implicit. I've tryed to remount my disk with the remount,exec option and still I get the same result:

utente@muletto:~$ sudo mount -o remount,exec /media/utente/Backup4TB utente@muletto:~$ mount |grep Backup /dev/sdc1 on /media/utente/Backup4TB type fuseblk (rw,nosuid,nodev,allow_other,allow_other,default_permissions,blksize=4096)

as you can see, the exec option does not show up, since it is a default option.

On 19/01/2015 19.52, Brian Jones wrote:

It doesn't look like you've given the directory execution permissions from the mount options you've shown. It should have the 'exec' option in order to execute off the file system.

— Reply to this email directly or view it on GitHub https://github.com/ValveSoftware/steam-for-linux/issues/3679#issuecomment-70542164.

Xaseron commented 9 years ago

Im encountering the same bug now. i have a second Steam library on an encrypted btrfs raid10 and it worked fine. But now i can not add my Steam library anymore. I get the same error message :-/ exec settings are set: /dev/mapper/crypt1 on /media/misc type btrfs (rw,noatime,compress=lzo,space_cache,autodefrag)

I still can lauch my games directly, like /media/misc/Steam/SteamApps/common/FEZ/FEZ

i'm running latest Arch Linux on my system

Peter200lx commented 9 years ago

I had this issue as well, however it was related to #3649 and not actually the mount exec at all.

peter@linux /mnt/tb_1.5/Games/SteamLinux$ mount |grep tb_1.5
/dev/sdb6 on /mnt/tb_1.5 type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other,blksize=4096)
peter@linux /mnt/tb_1.5/Games/SteamLinux$ mv SteamApps/ s
peter@linux /mnt/tb_1.5/Games/SteamLinux$ mv s steamapps

And now it allows me to re-add /mnt/tb_1.5/Games/SteamLinux as a steam library folder

Xaseron commented 9 years ago

But it is not related to me. I'm not using ntfs.

Xaseron commented 9 years ago

I found a workaround/ I created a new folder in my home directory and add it as a new steam library. mkdir Steam2 After that i use a bind mount to my other library to trick the check. mount -o bind /media/misc/Steam Steam2

pdf commented 9 years ago

This is definitely a Steam client bug, possibly multiple bugs. One workaround from the forums for importing an existing Steam library path, that resolved the problem for me on a POSIX filesystem, is to create a lowercase steamapps symlink to the SteamApps directory.

amedranogil commented 9 years ago

I have the same issue, but cannot solve it. The filesystem does mount with exec rights (fs is ext3). In fact I have tried adding a SteamLibrary on root (which must be executable or else Linux would not be working) and the same error message appears.

I've also tried creating a symbolic link and moving the SteamApps folder (like suggested the #3649) with no success in either case.

while trying to create a brand new SteamLibrary, The client seemed to almost accept it, as it creates the "seamapps" subfolder, Yet the same error appears.

I have even removed the client completely, i.e: removed my steam user files (from ~/.steam and ~/.local/share/Steam) and the steam-launcher from the system (removing it from ubuntu software center). When reinstalling everything, and loging in again, the same issue persists.

hoehermann commented 9 years ago

Since today, I experience the same problem. My steam library resides on a NTFS partition. That was no problem for the past years. Moving the library to another partition formatted with ext3 did not help. Strangely, if I launch steam with strace -ff -e trace=file steam in order to observe file access, it works flawlessly again. For me, this illustrates a heisenbug, which is peculiar, but not helpful in any way. I suppose, the implementation of GetMountVolume within the steam runtime is faulty. With the steam runtime disabled Assertion Failed: CApplicationManager::GetMountVolume: invalid index is printed and steam crashes. System is Ubuntu 14.04 64bit.

Tele42 commented 9 years ago

@hoehermann sounds like you are encountering #3936, please take a look at it and see if it matches what you are seeing better than this.

amedranogil commented 9 years ago

@Tele42 It was my case too. Rebooted with kernel 3.13.0-58 and it worked. Hope next kernel release fixes this issue.

hoehermann commented 9 years ago

@Tele42 Yes, you are absolutely right. Google only returned this issue. I should have asked the github seach. My bad. I confirm: Using kernel -58 solves the problem. And wine is working again, too.

richoux commented 9 years ago

Same problem here, and thanks for the kernel 58 trick: it works and I would certainly won't think about that by myself! Does someone has sent a bug report?

jerobarraco commented 9 years ago

Everything was working fine. updated steam and suddenly this problem appears. So its not a problem in my config but in the steam client. i got to repair it by setting some flags, but still, this bug sucks. i have 3 disks, 1 sdd, 1 ext4 and 1 btrfs-compress=zlib, so i really like to take advantage of my layout. The exact same description as @hoehermann applies to me, including the os version and steam error.

amedranogil commented 9 years ago

latest update kernel -61 works fine.

dionysius commented 9 years ago

I can confirm the latest kernel (-61) works fine!

I was suprised I even didn't need to use a fstab entry. The normal mounting using my filemanager works now like a charm (ext4).

My OS: ElementaryOS Luna (based on Ubuntu 12.04) My current kernel:

$ uname -a
Linux nb-dionysius 3.13.0-61-generic #100~precise1-Ubuntu SMP Wed Jul 29 12:06:40 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

My permissions on that partition (myself owner and 770 on all files)

$ ls -lah /media/ElementsL/
total 16K
drwxrwx--- 4 dionysius dionysius 4.0K Aug  3 10:52 .
drwxr-xr-x 6 root      root      4.0K Aug  3 11:47 ..
drwxrwx--- 3 dionysius dionysius 4.0K Mai 24 20:49 Laptop_Extern
drwxrwx--- 3 dionysius dionysius 4.0K Aug  3 12:04 SteamLibrary

Since it works now on my ext4 partition, I wont try it on my ntfs partition and will be removed soon maybe.

Debug notes: I was trying that last week and I had the same error as OP wrote, but I discovered something special: When you go to Steam -> Settings -> Downloads -> Steam Library Folders. The list was completely empty. The the error above might also affect the default library location (.local/share/steam) not showing up. I just saw that and wanted to note that.

jerobarraco commented 9 years ago

I confirm dionysius' post. i removed my exec from fstab and still works

$ uname -a
Linux nande-desk 3.13.0-61-generic #100-Ubuntu SMP Wed Jul 29 11:21:34 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

#sdd disk (that's why i have so many links)
UUID=2ed24ecb-6ac0-445d-9cc6-8a26f3cd9b0d /               ext4    relatime,discard,commit=900,errors=remount-ro 0       1
UUID=2fe24200-43c6-4cb4-a2ca-50f98c73c608 none            swap    sw              0       0
#disco normal
/dev/sdb1       /mnt/hdd        ext4    relatime,auto,rw,errors=remount-ro      0 2
#compressed btrfs disk, the other reason i have many links
/dev/sdb3       /mnt/hddb       btrfs   defaults,auto,rw,compress=zlib  0 1
urban48 commented 9 years ago

what fixed it for me was this: https://github.com/ValveSoftware/steam-for-linux/issues/730 it was the "user" option in my fstab, after removing it and remounting everything worked

mnori commented 9 years ago

@Peter200lx's solution worked like a charm for me. Seems that they changed something and that SteamApps should now be steamapps.

ghost commented 9 years ago

@urban48 thanks a lot, you saved my time. I was trying to mount old library via NFS volume. Removing user option worked for me too.

air commented 8 years ago

Thank you @Peter200lx for the simple fix for me.

mr-gosh commented 7 years ago

OK this really is a missleading error message! removing the "user" & "users" option from the mountpoints resolved it for me too... So thanks for the hint and too sad its still present...

I am on an internal HDD but its LUKS encrypted...

tomaszg7 commented 7 years ago

I also have the problem with NFS mount and even without "user" option I can't get it to work. My mount options are:

(rw,relatime,vers=3,rsize=524288,wsize=524288,namlen=255,soft,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.2.17,mountvers=3,mountport=45737,mountproto=udp,local_lock=none,addr=192.168.2.17)

and fstab options: "vers=3,defaults,auto,nofail,soft,exec"

LinuxFrusty commented 5 years ago

I fail to understand how this same problem is happening to me in the very end of 2018. Wtf. Linux Leap 15.0

LinuxFrusty commented 5 years ago

In the end, what did it for me (and I have no linux knowledge), was, I rightclicked the partition once I had opened it in the filemanager, by now it was aptly named FU, then chose "properties" and subsequently "Permissions". In "advanced" i followed my hunch and added " Root" and my username as "Named users" with write and read permissions. Edit: It forced me to empty everything first on that partition! Even the little file with LostandFound that you can only delete as superuser.

Don't ask me why this shit worked. Before that I spent more than a day looking for a solution, none was begotten. I reformatted till I was blue in the face and I filled my already full to the brink " I fucking hate Linux" bag to the point of spilling. Need a Linux course I guess. I mean, Fuck Windows, but wtf is this commandline shit that all the elitists expect you to know before helping.

jagdtigger commented 5 years ago

Same thing going on on my minipc too, mount shows exec flag: [code]//::/Internal_HDD_2 on /mnt/smb/steam_library type cifs (rw,relatime,vers=3.0,cache=strict,username=x,domain=y,uid=1000,forceuid,gid=1000,forcegid,addr=::,file_mode=0777,dir_mode=0777,soft,nounix,serverino,mapposix,rsize=1048576,wsize=1048576,echo_interval=60,actimeo=1)[/code]

Steam complains about missing exec flag, even though its there... :S

subins2000 commented 5 years ago

I fixed it by repairing the filesystem :

sudo ntfsfix /dev/sdb5
Dexy2811 commented 3 years ago

@subins2000 that worked for me too. Thanks!

ThisNekoGuy commented 3 years ago

@gdrewb-valve I have this issue with a BTRFS partition and btrfsck claims there's no problem with the partition :/ Steam just doesn't want to start a library on it for some reason I don't understand

The file permissions are: image

With the partition group set to Users and my FSTAB entry for it as:

# /dev/sdb3 extraStorage
UUID=9d14e17d-66d4-41e7-95a4-8125f75b4d2b   /mnt/extraStorage   btrfs   rw,relatime,users,nodev,nofail,x-gvfs-show                                                          0 2

With this set up, there's no reason why Steam should be having trouble creating a library

Distro: Arch Linux Kernel: Linux 5.10.61-195-tkg-upds CPU: Ryzen 3700X

Plagman commented 3 years ago

If you exit Steam and re-run it from a terminal, do you see anything in the console output when you try to add the library and it reports a failure? Also, what's the exact error displayed by the Steam UI?

ThisNekoGuy commented 3 years ago

terminal-output.log image

These lines occur when attempting to add the library and it throws the error:

src/tier1/fileio.cpp (5015) : Assertion Failed: BIsOpen()
src/tier1/fileio.cpp (5015) : Assertion Failed: BIsOpen()
...
/tmp/dumps/crash_20211005154711_113.dmp
src/clientdll/shadercachemanager/shadercacheimplfossilize.cpp (240) : Assertion Failed: IO error trying to write disk cache!
src/clientdll/shadercachemanager/shadercacheimplfossilize.cpp (240) : Assertion Failed: IO error trying to write disk cache!
...
crash_20211005154711_113.dmp[3932583]: Finished uploading minidump (out-of-process): success = yes
crash_20211005154711_113.dmp[3932583]: response: CrashID=bp-021a7752-afc6-40ff-aa61-72e0e2211005
crash_20211005154711_113.dmp[3932583]: file ''/tmp/dumps/crash_20211005154711_113.dmp'', upload yes: ''CrashID=bp-021a7752-afc6-40ff-aa61-72e0e2211005''
TTimo commented 3 years ago

That assert isn't likely related to your problem. Your log ends with sh: line 1: /mnt/extraStorage/Gaming/SteamLibrary/.steam_exec_test.sh: Permission denied though ..

TTimo commented 3 years ago

Ok yes, problem identified, thank you for the log! I will update this thread once we have a fix.

TTimo commented 3 years ago

So, despite some bugs in the Steam client's flow when it comes to verifying whether it's able to set executable permissions on files (which we'll fix), I suspect your mounted filesystem is indeed effectively noexec:

From the mount man page for the users option: Allow any user to mount and to unmount the filesystem, even when some other ordinary user mounted it. This option implies the options noexec, nosuid, and nodev (unless overridden by subsequent options, as in the option line users,exec,dev,suid).

Since you are not specifying exec explicitly, I think this means there are no execution permissions and Steam is correctly bailing out?

ThisNekoGuy commented 3 years ago

Since you are not specifying exec explicitly, I think this means there are no execution permissions and Steam is correctly bailing out?

It seems this way, apparently; it hadn't occurred to me at all that I had to give that partition exec in the fstab file if users was used, thanks