Linux - GeneralThis Linux forum is for general Linux questions and discussion.
If it is Linux Related and doesn't seem to fit in any other forum then this is the place.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
I have a problem with a server. I have access to 2 different root accounts, and they appear to be stuck doing something with sh. I also could not get to the machine with ssh as I usually do; I had to use rlogin.
Here is what happens when I try to su to a root acount:
-bash-3.00$ su testroot
Password:
sh: *** No targets specified and no makefile found. Stop.
And it goes back to the shell of the normal user. I cannot rlogin as root because remote login by root is disabled, and I cannot edit the /etc/default/login file to allow remote login by root because I cannot edit the file without root access. Therefore, I appear to be stuck unless if someone knows how to get sh to stop doing whatever it is doing. I also do not want to reboot the machine.
Additionally, I cannot execute any commands as root with su, which would have helped a lot.
For example: -bash-3.00$ su testroot -c "vi login"
Password:
sh: invalid option -- c
Usage: sh [options] [target] ...
Options:
-b, -m Ignored for compatibility.
-B, --always-make Unconditionally make all targets.
-C DIRECTORY, --directory=DIRECTORY
Change to DIRECTORY before doing anything.
-d Print lots of debugging information.
--debug[=FLAGS] Print various types of debugging information.
-e, --environment-overrides
Environment variables override makefiles.
-f FILE, --file=FILE, --makefile=FILE
Read FILE as a makefile.
-h, --help Print this message and exit.
-i, --ignore-errors Ignore errors from commands.
-I DIRECTORY, --include-dir=DIRECTORY
Search DIRECTORY for included makefiles.
-j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no arg.
-k, --keep-going Keep going when some targets can't be made.
-l [N], --load-average[=N], --max-load[=N]
Don't start multiple jobs unless load is below N.
-n, --just-print, --dry-run, --recon
Don't actually run any commands; just print them.
-o FILE, --old-file=FILE, --assume-old=FILE
Consider FILE to be very old and don't remake it.
-p, --print-data-base Print make's internal database.
-q, --question Run no commands; exit status says if up to date.
-r, --no-builtin-rules Disable the built-in implicit rules.
-R, --no-builtin-variables Disable the built-in variable settings.
-s, --silent, --quiet Don't echo commands.
-S, --no-keep-going, --stop
Turns off -k.
-t, --touch Touch targets instead of remaking them.
-v, --version Print the version number of make and exit.
-w, --print-directory Print the current directory.
--no-print-directory Turn off -w, even if it was turned on implicitly.
-W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE
Consider FILE to be infinitely new.
--warn-undefined-variables Warn when an undefined variable is referenced.
This program built for i386-pc-solaris2.10
Report bugs to <bug-make@gnu.org>
If you need anymore information I will give it to you ASAP. Thank you for your time.
My first question would be, why do you have two root users on one server?
Secondly, the command your running with the -c option apparently isn't a valid option, hence why it's not working. Did you actually read the output of the usage it provided? su built for Solaris works differently than Linux, if you hadn't noticed the output at the bottom that says:
Originally posted by trickykid My first question would be, why do you have two root users on one server?
Originally there was another administrator and we each had our own root account.
Quote:
Secondly, the command your running with the -c option apparently isn't a valid option, hence why it's not working. Did you actually read the output of the usage it provided? su built for Solaris works differently than Linux, if you hadn't noticed the output at the bottom that says:
This program built for i386-pc-solaris2.10?
I have tried several different commands with the -c option that used to work fine, but no longer do. For example, bash-3.00$ su testroot -c "ls". I also cannot simply su to a root account without the -c option as I used to be able to either. I probably should also mention that I am using Solaris. I just noticed the Solaris forum, feel free to move this topic there. If you read the output, what is happening is the sh command automatically is trying to do something as soon as su is used on a root account, I don't have/know of another way I can login as a root account given my current situation. EX:
-bash-3.00$ su testroot -v
Password:
GNU Make 3.80
Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Notice that I used -v in the su command, and I got the version of make as a result.
Hmmm...
...excuse me for being a bit stubborn here...
is perhaps 'sh' an alias?
You see, that message
Code:
sh: *** No targets specified and no makefile found. Stop.
can't really be generated by /sbin/sh?
It is what you get trying to compile a program without enough specifikations (or something - I have seen it a few times trying to execute 'make'). So it could be an alias or a link to some compiler?
You could try
# whereis sh
#alias (this will output all your aliases)
(edit)
I'm reading your first post again:
the messages you get are definitely from a compiler - like:
Code:
-B, --always-make Unconditionally make all targets.
-C DIRECTORY, --directory=DIRECTORY
.......
Read FILE as a makefile.
.....
Search DIRECTORY for included makefiles.
Read through that message, and try to remember what you (or someone) did just before the problem started!
You are right pingu, good call. The sh file has been replaced by make.
Code:
-bash-3.00$ ls -l /sbin/sh
-r-xr-xr-x 1 root root 812188 Oct 16 21:24 /sbin/sh
-bash-3.00$ ls -l /usr/local/bin/make
-rwxr-xr-x 1 mrodey mrodey 812188 Sep 23 16:19 /usr/local/bin/make
The files are exactly the same size. Now that we know this is the problem, is there any way to resolve it remotely when all of the root accounts are set to use sh?
I was able to fix the problem by passing a MakeFile into su, and within the MakeFile (which was being executed with root privileges) I replaced /sbin/sh (which was actually make) with a real sh file. The system now works pefectly once again. Thank you for all those who tried to help.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.