For the past week, I've been trying to switch my /home partition from my 500GB nvme to my 1TB sata ssd. I've been asking and receiving help from people in my previous post, but I keep hitting wall after wall in making it work and I seem to be missing a step.
Big thank you to @pixelscript@lemmy.ml, @NateSwift@beehaw.org, for replying to my comments and helping me along.
Previous post:
I finally installed Linux, but I'm having a mixed experience
Context:
OS: Fedora Linux 39 (KDE Plasma) x86_64
Kernel: 6.5.6-300.fc39.x86_64
DE: Plasma 5.27.8
WM: Kwin
CPU: AMD Ryzen 5 5600X
GPU: Nvidia Geforce GTX 1660
I have a 500GB nvme which I want to have my entire / stored within. And I have a 1TB sata ssd which I want to have my /home to be stored in. I've tried many of the steps some helpful people here on lemmy have detailed, and though it's gotten me closer to getting it right, but I still can't seem to login when I switch my fstab.
Allow me to go through every step I've done so far.
I reinstalled fedora, hoping I could separate my /home in the installer. No such luck, anytime I switched my /home partition into the 1TB drive my entire root directory would follow it. I decided to do the auto install on my nvme and do it manually when it's fully installed.
So just to be clear I am starting from a clean install nothing except neofetch and vim installed.
I created two new directories directly in /. They were /new_home and /old_home.
I formatted my 1TB disk, partitioned it, and then formatted the partition into an ext4, 931.5 G partition.
I mounted it to /new_home
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sda
└─sda1 ext4 1.0 f56df020-2420-4b0c-af4d-2c4c6a56a0b0 718.4G 16% /new_home
From here I ran the command
sudo rsync -a /home/adelie/new_home
. this is why the current available space is 718.4G. I also added a new file to /new_home called confirm.txt in order to tell which was which at a glance.
I check the permissions and ownership of both /home and /new_home with ls -la
they were identical.
adelie@localhost-live:/new_home$ ls -la /new_home
total 8
drwxr-xr-x. 3 root root 4096 Feb 27 11:06 .
dr-xr-xr-x. 1 root root 204 Feb 25 21:13 ..
drwx------. 15 adelie adelie 4096 Feb 27 11:11 adelie
adelie@localhost-live:/new_home$ ls -la /home
total 0
drwxr-xr-x. 1 root root 12 Feb 25 21:01 .
dr-xr-xr-x. 1 root root 204 Feb 25 21:13 ..
drwx------. 1 adelie adelie 348 Feb 27 11:25 adelie
adelie@localhost-live:/new_home$
The story is the same inside the $USER files, the files and directories are identical and so are there permissions and ownership.
I added /dev/sda1 to fstab to auto boot both drives.
UUID=d5877671-6a39-4d96-9a2a-514b6007a59b / btrfs subvol=root,compress=zstd:1 0 0
UUID=ed92de40-2403-4365-9b5c-eb10d519757c /boot ext4 defaults 1 2
UUID=02E9-123A /boot/efi vfat umask=0077,shortname=winnt 0 2
UUID=d5877671-6a39-4d96-9a2a-514b6007a59b /home btrfs subvol=home,compress=zstd:1 0 0
UUID=f56df020-2420-4b0c-af4d-2c4c6a56a0b0 /new_home ext4 defaults 1 2
At this point I haven't changed the boot path for /home yet. When I rebooted, everything worked as expected. When I entered the KDE login screen it let me go into my desktop when I inputted my password correctly.
After this I decided to swap them.
UUID=d5877671-6a39-4d96-9a2a-514b6007a59b / btrfs subvol=root,compress=zstd:1 0 0
UUID=ed92de40-2403-4365-9b5c-eb10d519757c /boot ext4 defaults 1 2
UUID=02E9-123A /boot/efi vfat umask=0077,shortname=winnt 0 2
UUID=d5877671-6a39-4d96-9a2a-514b6007a59b /old_home btrfs subvol=home,compress=zstd:1 0 0
UUID=f56df020-2420-4b0c-af4d-2c4c6a56a0b0 /home ext4 defaults 1 2
When I entered into the KDE login screen, anytime I inputted my password correctly it would kick me back to the login screen within the second. At this point I assumed it was a KDE issue and that I was missing a step in order to login correctly.
I read a comment explaining TTY, and that I should try logging in from there to confirm if it was a KDE issue or not. When I tried it I ended up with this.
Fedora Linux 39 (KDE Plasma)
Kernel 6.5.6-300.fc39.x86_64 on an x86_64 (tty3)
Localhost-live login: adelie
Password:
Last login: Tue Feb 27 xx:xx:xx on tty3
-- adelie: /home/adelie: change directory failed: Permission denied
Logging in with home = "/".
From my root account I checked /home and /old_home, and /home contained confirm.txt, meaning that everything mounted properly, I then changed the fstab back to what is was originally.
This is where I'm at now.
I'm totally lost on what step I missed. I'd like to get this working in order to actually be able to use my computer, as I am committed to changing my /home directory before making any major changes or installs. If anybody has any idea on what I missed please feel free to pitch in.
*Update: The issue was SELinux. My SELinux contexts were bad and were denying me access to my own data. I reset the context with this command,
restorecon -Rv /home/
I'd like to give a big thanks to,
/u/shininghero@kbin.social; for pointing out SELinux as a possible issue.
/u/burrito@sh.itjust.works; for providing the command to fix this issue.
/u/kbal@fedia.io; for being so patient with me, and helping me go through the list of possible issues.
Can you confirm that confirm.txt is not in old home?
I've done this several times and yes I can confirm everything mounted properly. The only issue as far as I can tell is that I can't login. I made an edit on the post to clarify this.
so if you do 'ls -la /home/adelie | wc -l' and 'ls -la /home_new/adelie | wc -l' you get results that differ by exactly 1? idk, just a thing to check.
yes /home is 23, and /new_home is 24, what does this mean?
The number of files in each. So all the right files are there I guess. Moving /home really shouldn't cause any problems so it was just a way to check for the unlikely case of that being somehow a problem.
Means you don't have permission to cd to that dir for some reason. So when it happens do:
I'd also
chmod a+x /home
. If only root can traverse the new/home
, the permissions on/home/adelie
are irrelevant as there's no way to get there without traversing/home
.If you wouldn't mind, could you please explain what these command will do.
Also I'm back in the fixed state should I change my fstab back to the broken state before I run this?
chmod 700 [file] sets permissions so that only its owner can do anything to that file or directory, and that owner can do whatever they like to it.
chown -R [user]:[group] [dir] makes everything in that directory owned by that user and group.
chmod a+x /home like /u/Max_P and I both got to within a few seconds of each other and will probably fix your problem, allows every user to change directories into /home which is a prerequisite for anyone getting to /home/adelie.
The "700" and "755" are values in octal where the first digit represents what permissions the owner has, the next two digits what everyone else has. I tend to use those but probably "a+x" is a more sensible way to do the same thing.
So I ran all three commands including the one /u/Max_P gave. I then changed the fstab and rebooted. I still couldn't login after that.
I then tried to login with TTY. it gave me the same error as in the post. I ran the three commands again and rebooted. still nothing
I logged in with my root account and ran the three commands again, rebooted and still couldn't login. I then fixed the fstab and now I'm back here again.
just to be clear i ran chmod 700 not 755.
Anything I should run in order to check my system? I must've done something wrong. Maybe it has to do with btrfs?
Sorry to pile on with even more advice, but yeah if you log in as root with the new home mounted it should look like:
The important things to look for being that there are 3 "x"s in the first one, and a "drwx" in the second one.
It's unlikely to be anything else like groups or your uid being wrong, since the error message you got is telling you to look specifically at this.
Yeah, logging in as root (good to know things are configured so you can do that) when it's giving that error, and then running those commands should have done the trick I'd have thought.
Well that's fine so long as you also did "chmod a+x /home". If for some reason you did "chmod 700 /home" as root that is no good.
The error message you got strongly suggests that it should've worked. If you mount that new home again so you get the same error, then log in as root and show us the results of
That would perhaps clear things up.
The home directory of the user is defined in /etc/passwd
Make sure it is the same as the one you have.
% sudo grpck
will check your group shadow gshadow passwd files for conflicts, it will tell you what you need to fix or if it is simple it will fix it for you.
If you get no output everything is OK
@kbal @pixelscript @NateSwift @Doctor_Rex
It's all ok then.
Heres what I got
Okay well it's pretty weird I guess. I do have one more idea... instead of swapping the entries in fstab, try removing the old one and not mounting old home at all. To do that, put a "#" in front of the line that would mount old_home.
I don't know how btrfs works so maybe it really is that somehow. Maybe its "subvol=home" is somehow causing a problem.
So I did that and nothing different happened. I'm sorry to keep taking your time like this do you know of any place, like a Discord server or something, that I can talk with somebody about this in real time.
I'm probably going to give this issue one more day to resolve before I give up and switch to Windows 11.
Edit: Never mind, it's probably SELinux or something like that.
I dunno, it's just really weird that the
ls -ld
output was saying everything was fine and yet at the same time (it was at the same time right?) the user login was saying you don't have permission to that same home directory. You could try again, log in as root (after confirming you still get the same permission denied error) and then do:That would show the numeric uid and gid instead of your name in the ls output, check that it matches what's in /etc/passwd (you didn't edit /etc/passwd though, it should be fine), and then see if you can 'cd' after boot but not on login somehow.
Anyway I think your best bet would be to find someone nearby who could try and figure it out in person, if at all possible. Maybe ask around at the local computer shop, if there is one? Eh well, sorry I couldn't be of more help.
I'll do that but just to be clear this is my partition table
So I did that and nothing different happened. I'm sorry to keep taking your time like this do you know of any place like a Discord, server or something, that I can talk with somebody about this in real time.
I'm probably going to give this issue one more day to resolve before I give up and switch to Windows 11.
First one sets it so that only the owner can read, (4), write (2), execute (1). That's why it equals 7. The group and all others (the next two numbers) can do nothing (0 meaning they can't read, write, or execute anything in there).
The second sets ownership (ie. That adelie account will be both the user and group in the above scenario.)
I'm coming in late in this but i don't know why you'd really do the first. The second simply changes things so your user has permission to their own home directory.
Lastly, names are meaningless in general. Things work on ids. You can run
id
to get a quick look at who you are. Same withecho $UID
or $GID.Really long but useful article to wrap your head around permissions- https://www.redhat.com/sysadmin/linux-file-permissions-explained
chmod : change mode
chown : change owner
-R : recursive. So all subfolders and files will change ownership.
700 : this is a code for files permission for those 3 groups in linux :
user (you) : 7
group : 0
other : 0
What do those number mean ? A file can be read, written, executed. Those 3 permissions are associated with number :
If a file can be read and written its number will be 4+2 = 6
oh... to add to my other suggestion:
I bet that's it.
I'd like to know what this command will do before I run it.
That is the numeric representation of rwxr-xr-x permissions. It's 3 bits wide, and 4 = r, 2 = w, and 1 = x. So you add them together. 7=rwx, 5=r-x. If you wanted just read only, you would use 4. And of course 0 mean no permissons. And the bits are ordered by Owner, Group, and Everyone. 755 mean owner has full permissions, group and everyone can read and see the directory since it has x.
To further explain all the things everyone is leaping to explain, the 'x' for 'execute' permission is the same bit you need set to have permission to "cd" into a directory, as well as execute a file.
And the default permissions when you did "mkdir" are controlled by something called "umask" which is probably set not to allow anyone else to cd into directories you create as root until you chmod them.
It doesn't seem appropriate to reply to someone that has been very helpful to you like this. Don't know if it was intentional or not.
chmod is one of the most used commands to change file permissions which means there are plenty of well maintained documentation that offer a good explanation of what it does.
It's a valid query. They could look into it? Yes, sure. But they have their hands full now.
I just think the wording could be better, maybe I am too sensitive. :p