On Tue, Jun 4, 2024 at 5:03 PM Joey Dodson <jdodsoneleme...@gmail.com> wrote:
>
> Hello list!
>
>
>
> Thanks in advance for any help or thoughts!
>
>
>
> Background:
>
>
>
> I have a system where many ‘/etc/systemd/system’ symlink paths got replaced 
> by files. Therefore, ‘systemctl enable’ no longer works for a majority of 
> services. Though somehow there are some services that appear to not have been 
> affected. This happened for everything in  
> ‘/etc/systemd/system/multi-user.target.wants’ and it seems all/many of the 
> ‘*.target.wants’ directories.
>
>
>
> If I delete the hard files, then I can use ‘systemctl enable’ for that 
> service, but it’s not so simple. Many services have dependencies and aliases 
> and it will throw the following error message:
>
>
>
> ‘Failed to execute operation: Invalid argument’
>
>
>
> And it may create the symlink for the main unit file, but the dependencies 
> and aliases have still failed. Therefore it’s going to leave the system in a 
> broken state unless I can get everything.
>
>
>
> Further context:
>
>
> Last time the server was rebooted, it was unable to boot into any kernel, 
> including our rescue kernel. Only emergency mode was possible through editing 
> the grub boot options. Somehow the default target was no longer set to 
> ‘multi-user.target’, but we have no logical explanation for how that could 
> have happened.
>
>
>
>
>
> Questions:
>
> Has anyone seen something like this before? How could this have happened? We 
> suspected rsync/scp from another machine, but since there are some symlinks 
> unaffected I think that’s less likely. Is there any mechanism of systemd that 
> could have caused it?
> Systemd has commands to list where the original unit files are located, but I 
> need the opposite. Is it possible to list the paths where symlinks will go 
> when using ‘systemctl enable’? The error message above is not descriptive and 
> according to search results, it could indicate that a service is masked, a 
> unit file has extra spaces, symlinks can’t be created or any number of 
> things. Without knowing the path for symlinks, I don't know which files to 
> delete to get it working again.
> I saw there is a ‘-force’ option for ‘systemctl enable’, but it seems that it 
> will only overwrite symlinks, not hard files. Is there another way to 
> overwrite files in the intended symlink path?
> Is there anything I’m missing here? I’ve never seen this before today and am 
> pretty stuck with how this could have happened and how to resolve it in a 
> thorough/holistic way.
>


Well..the symlinks where restored from an archive that did not support
symlinks?   assuming you want all those services enabled again you
could write a shell script that replaces hard files to symlinks..
It will happen again if you do not determine where that came from
though. whatever did that needs a blowtorch.

Reply via email to