sudo su command not working in OEL 7 - linux

I want to install glibc-2.17-105.el7.i686
But I'm not able to do sudo yum install.
sudo yum install glibc-2.17-105.el7.i686 , gives error
-bash: /usr/local/bin/sudo: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

bash: /usr/local/bin/sudo: /lib/ld-linux.so.2: bad ELF interpreter
This means:
You have a 32-bit /usr/local/bin/sudo binary and
You do not have 32-bit runtime libraries installed.
If you are lucky, you have a 64-bit /usr/bin/sudo (/usr/local/bin is not the default location for sudo). If so, you should be able to do this:
/usr/bin/sudo rm /usr/local/bin/sudo
after which "normal" 64-bit sudo (which would now be /usr/bin/sudo) will just work.
If you are unlucky, but your system allows root login (and you know root password), then simply login as root, and:
# should make 32-bit /usr/local/bin/sudo work
root#host# yum install glibc-2.17-105.el7.i686
If you have no root password, and no working sudo, not all is lost: with physical access to the system, you could boot off the recovery disk, mount your root filesystem, and fix root password. You may as well copy a working sudo to /usr/bin at the same time.

From my experience you are in a bad situation. It's very bad that you have lib errors, I believe because of this error you will have problems running most of your executables on your system and that makes debugging and fixing much harder.
It's most likely a filesystem corruption but I'm not sure if it can be fixed.
I would try to go to single user mode, remount / as read only, then do a fsck on it(depending on your filesystem it may be e2fsck or other).
If it doesn't work, another path would be to boot from a rescue disk and do fsck or try other methods of fixing.
You may have to backup any data and reinstall. Please backup ASAP!
Good luck!

Related

CMake: Fail to install symlink on ssh-mounted filesystem

I am cross-compiling a project on my desktop, and installing it on a device which is mounted via ssh, using sshfs, like so:
sudo sshfs -o allow_other -o follow_symlinks user#192.168.12.100:/ /mnt/remote
The build is successful, but when I try to "sudo make install", I receive the following message:
-- Installing: /mnt/remote/usr/lib/libprop.so.5.1.5
-- Installing: /mnt/remote/usr/lib/libprop.so.5
CMake Error: failed to create symbolic link '/mnt/remote/usr/lib/libprop.so.5': i/o error
CMake Error at cmake_install.cmake:176 (file):file INSTALL cannot duplicate symlink
"/home/ubuntu/libprop/build/lib/libprop.so.5" at
"/mnt/remote/usr/lib/libprop.so.5".
The library and the symlink are copied and created. That is, it seems that the installation actually succeeds, but CMake thinks otherwise.
The filesystem is not ro, as can be seen in mount output:
user#192.168.12.100:/ on /mnt/remote type fuse.sshfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other)
And I can see the entry under /mnt/ (I chown'd and chmod'd it for user access, thinking it might solve the problem):
drwxrwxr-x 1 ubuntu ubuntu 4096 Mar 11 13:43 remote
and I can access it event without root permissions, copying and deleting files without a problem.
This process has been working for me. I have no idea what was changed that it stopped. Could be something in my environment or maybe in the destination platform.
I would be grateful for any assistance.
OK, I have found the problem... I shouldn't be using -o follow_symlinks. I guess this can cause other problems (I used it for a reason), but for the purpose of compiling and installing, it works.

Sudo is broken on linux mint 17.3

When I execute
sudo apt-get install composer
Following error occurred:
sudo: error in /etc/sudo.conf, line 0 while loading plugin `sudoers_policy'
sudo: /usr/lib/sudo/sudoers.so must be only be writable by owner
sudo: fatal error, unable to load plugins
and don't know the root password. Please suggest me a solution
Your system is broken. Unless you changed the permission specifically on that file, there's a good chance other files are also affected by the same issue.
If it's just this file for some reason, you can boot from a live CD, mount your root filesystem, and run chmod 0600 /path/to/usr/lib/sudo/sudoers.so.
Otherwise, either you or something you used ran chmod 0777 on your /usr or other directory when it should never happen. Realistically, your best option in this case if to backup your data, reinstall the system and restore. You could attempt recovery, but since you posted this question, it's probably too advanced.

How to set LD_PRELOAD for su or sudo?

I am working on CentOS 6.5. The version of my glibc is 2.14, and I accidentally link /lib64/libc.so.6 to a previous glibc(libc-2.12.so).
Then I run export LD_PRELOAD=/lib64/libc-2.14.so, most commands can be executed except su and sudo. When run su, it gives "Segmentation fault". When run sudo, it gives "su: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /lib64/libcrypt.so.1)".
How to set LD_PRELOAD for su and sudo, or what can I do to recover the glibc?
There is no way, by design. Setting LD_PRELOAD allows arbitrary code to be executed within the executable. It would be rather unwise to allow that while running a sensitive prvileged SUID program.
what can I do to recover the glibc?
This is a sysadmin question, more appropriate for serverfault, but one way to recover is:
Boot from a rescue CD
Mount root partition into /mnt
Fix the symlink
Reboot

Can not install Guest Additions in VirtualBox for CentOS 6 guest

I've just got my guest box running CentOS working perfectly, except for one problem. I'm trying to mount a shared folder. I've followed the instructions for getting the shared folder "Mountable" by using this code:
VBoxManage sharedfolder add "TEST - 250" --name "github" --hostpath "C:\filepath\github"
Where "TEST - 250" is the name of the VM, "github" is the name of the folder as I'd like to call it in my VM, and "C:\filepath\github" is the directory path on the Windows host where I can find the contents I would like to share.
All seems well, and as instructed by Oracle, I am to use this command in the VM:
sudo mount -t vboxsf shared ~/host
I've made a directory off of the root called "host". The problem here is that I'm getting the following message:
mount: unknown filesystem type 'vobxsf'
Looking at this further, I'm told that in the /sbin/ folder, there should be a file called mount.vboxsf, where there is not.
I then read chapter 4 here: http://www.virtualbox.org/manual/ch04.html ... more specifically section 4.2.2.1.6 for Oracle Linux, Red Hat Enterprise Linux and CentOS. I follow ALL commands they ask for:
yum install dkms
yum update
yum install gcc
yum install kernel-devel
And just in case...
yum install kernel-uek-devel
All seem to work fine. I reboot the system to activate the updates. Once I login to the rebooted system, I type:
ls /sbin/mount*
... and I do NOT see the mount.vboxsf file. What am I doing wrong?
Also, is there a way to just get this file, and place it there? If I had that, I could perform my drive mounting, and be done with what I need to do. Any suggestions?
You need to install guest editions.
"The VirtualBox Guest Additions for all supported guest operating systems are provided as a single CD-ROM image file which is called VBoxGuestAdditions.iso. This image file is located in the installation directory of VirtualBox."
create mount directory
sudo mkdir -p /media/VirtualBoxGuestAdditions
mount guest additions iso
sudo mount -t iso9660 -o loop /installation/directory/of/VirtualBox/VBoxGuestAdditions.iso /media/VirtualBoxGuestAdditions/
Install guest additions
sudo /media/VirtualBoxGuestAdditions/VBoxLinuxAdditions.run
Then mount.vboxsf file should be in sbin and you can mount with
sudo mount -t vboxsf shared ~/host
See https://www.virtualbox.org/manual/ch04.html
After following the steps described by the given answer and experiencing a kernel header issue i came across this link which has a command that does simplify things.
/etc/init.d/vboxadd setup
Hope it helps future explorers on this question. :)
I got the same error.
When I tried to install VBoxGuestAdditions (Devices -> Insert Guest Additions CD Image) on Ubuntu 16.04 x86, it throws error message "Unable to insert the virtual optical disk ..."
SOLUTION:
1. Open a terminal and enter: sudo apt-get install virtualbox-guest-utils
Reboot and enjoy.
sudo ./whateverTheArchitectureTypeYouHaveIs.sh worked for me. By default, VBOXAddition folder is in /media/..

Accidentally deleted symlink libc.so.6 in CentOS 6.4. How to get sudo privilege to re-create it?

I accidentally deleted the symbol link /lib64/libc.so.6 -> /lib64/libc-2.12.so with
$ sudo rm libc.so.6
Then I can not use anything including ls command. The error appears for any command I type
ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
I've tried
$ export LD_PRELOAD=/lib64/libc-2.12.so
After this I can use ls and ln ..., but still can not use sudo ln ... or sudo -E ln .... I always get this err
sudo: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
It's a remote server so I can not use a live CD. I now have a ssh bash session alive but can not establish new ones. I have sudo privilege, but don't have root password.
So currently my problem is I need to run sudo sln -s libc-2.12.so libc.so.6 to re-create the symlink libc.so.6, but I can not run sudo without libc.so.6.
How can I fix it? Thanks~
I resolved the issue by using a statically linked version of "ln" that was already in the server's /sbin.
E.g., this restored it for my configuration:
/sbin/sln /lib64/libc-2.5.so /lib64/libc.so.6
A bit embarrassing :) but it happened to me as well on Ubuntu 12.04.3 (which is not CentOS 6.4 but I thought this could still help maybe).
Because my Ubuntu wouldn't start I used a liveUSB to boot up and then mounted my hard drive and created the symlink (I did have the file itself libc-2.15.so) and that did it.
Just a few specific details:
I asked a good friend to use his computer for half an hour
I Downloaded my exact Ubuntu iso (12.04.3, if you're on;y missing the symlink, it could be any version so much that it can mount drives) from here: link
I made sure his Ubuntu has usb-creator-gtk ($ sudo apt-get install usb-gtk-creator, I'm sure Windows has an equivalent usb boot creator)
Created the liveUSB using usb-creator-gtk
Booted my computer with it (you'll probably need to change your BIOS settings to allow external USB to be booted first)
Once I booted from the live USB I figured where my hard drive partition by running the Ubuntu partition tool (the live USB has one) - mine was of type ext4 and in /dev/sdb1
I mounted it by doing $ mkdir /home/ubuntu/mnt and then $ sudo mount-t ext4 /dev/sdb1 /home/ubuntu/mnt
I then proceeded to that folder $ cd /home/ubuntu/mnt
From that location I then created the symlink by $ sudo ln -s lib/x86_64-linux-gnu/libc-2.15.so lib/x86_64-linux-gnu/libc.so.6
After a reboot I was good.
Hope it helps you (or someone..)
I would add some thing more to #wilfo answer as same also happened with me [accidentally deleting lib.so.6 and was getting /sbin/init missing libc.so.6 on boot up] .
After creating liveUSB in windows (using UNetbootin etc [http://unetbootin.sourceforge.net/]) or in ubuntu as #wilfo suggested.
Booting from liveUSB, I selected "experience ubuntu without installing it" and was happy applying wilfo's method until step 6 and then i couldn't find my hard drive partition of type ext3/4. All were nftf/fat/extended stuff.
So i recovered previous ubuntu (the one with missing libc.so...) by following this link
https://help.ubuntu.com/community/Boot-Repair
make sure to follow all necessary steps and take a backup of your ubuntu partition.
you can see your previous ubuntu files inside /mnt/boot-sav/wubi1/home
take a backup from here to your windows partations /mnt/boot-sav/sda...
and follow remaining procedure here https://help.ubuntu.com/community/Boot-Repair

Resources