1752608 Members
4236 Online
108788 Solutions
New Discussion юеВ

Re: Shell Scripts

 
SOLVED
Go to solution
Grayh
Trusted Contributor

Re: Shell Scripts

yes old school... you are correct..

I have setup this user for myself.. so that I can play with scripts
Grayh
Trusted Contributor

Re: Shell Scripts

$ chsh testsh /usr/bin/csh
$ echo $SHELL
/usr/bin/ksh
$ chsh testsh /usr/bin/sh
$ echo $SHELL
/usr/bin/ksh
$ chsh testsh /usr/bin/rsh
$ echo $SHELL
/usr/bin/ksh


what ever I change the shell to but when I give the command to see the shell I always see ksh only... Am I giving the incorrect command
James R. Ferguson
Acclaimed Contributor

Re: Shell Scripts

Hi:

I would suggest you look at the 'rsh' manpages:

http://docs.hp.com/en/B3921-60631/sh-posix.1.html

In particular, see the section "rsh Restrictions".

and for:

> $ /usr/local/bin/sudo su-
sudo: /usr/local/etc/sudoers is mode 0666, should be 0440

...this is telling you that the permissions of '/usr/local/etc/sudoers' allows *anyone* to write to the file --- a hugh security hole! Only the owner and the group should have read permission (0440).

Regards!

...JRF...


Regards!

...JRF...
James R. Ferguson
Acclaimed Contributor

Re: Shell Scripts

Hi (again):

I might suggest that instead of first setting up a restricted shell for yourself, use a standard one ('/usr/bin/sh') for your account.

I also strongly urge you to reference the manpages every chance you get. There is a wealth of knowledge therein.

Regards!

...JRF...
OldSchool
Honored Contributor

Re: Shell Scripts

"When I do the following I have an error.. what does it mean

$ exit
/usr/bin/rsh: /home/vamsi/.logout: The operation is not allowed in a restricted
shell.
$"

you have set yourself up in a "restricted" shell, "rsh". man "rsh" for more info.
(see the section on "rsh Restrictions")

"$ chsh testsh /usr/bin/csh
$ echo $SHELL
/usr/bin/ksh
$ chsh testsh /usr/bin/sh
$ echo $SHELL
/usr/bin/ksh
$ chsh testsh /usr/bin/rsh
$ echo $SHELL
/usr/bin/ksh"

Well....that's how you wound up with a restricted shell.... the commands above *don't* change the current shell, only the one you get upon a login. you should see the last field of password entry for testsh changing with each execution of the command noted.
Dennis Handly
Acclaimed Contributor

Re: Shell Scripts

$ exit
/usr/bin/rsh: /home/vamsi/.logout: The operation is not allowed in a restricted

As mentioned, why use the restricted shell?
Also, do you have a trap command on exit, "trap 0" or "trap EXIT"? I suppose you could have an alias?

$ chsh testsh /usr/bin/csh
$ echo $SHELL
/usr/bin/ksh
>but when I give the command to see the shell I always see ksh only.

Why would you expect this to work, as OldSchool says?
As documented $SHELL is only set by login(1). If you actually invoke another shell, it still won't work:
$ csh # scummy C shell
% echo $SHELL
/bin/ksh
% exit
% $
$ sh # posix shell
$ echo $SHELL
/bin/ksh
Nitin Kumar Gupta
Trusted Contributor

Re: Shell Scripts

Hi,

I am giving some best practices I ever using.

- Create you shell script using vi

- Write first line the shell

#!
#exec 1>/tmp/`basename $0.log 2>&1; date; set -x
Write your code here
exit 0 #very important for successful termination

- Save and exit from the code

- Make the file chmod o+rwx, others to be executable.

- Do not use root user to play with scripts.

IMP: exec 1>/tmp/`basename $0`.log 2>&1; date; set -x
This line will create a log file /tmp/scriptname.log if you uncomment the line. Also you can write set -x to enable o/p trace and set +x to disable o/p trace.

For any further assistance feel free to ask.

Rgds
-NKG-
Dennis Handly
Acclaimed Contributor

Re: Shell Scripts

>Nitin: Make the file chmod o+rwx, others to be executable.

As I mentioned above, you do NOT want to do this. It lets Others write to your script. Perhaps you meant "chmod u+rwx" for User (owner)?

>exec 1>/tmp/`basename $0`.log 2>&1; ...

You should replace `` by $().
And for basename you could use only the shell:
/tmp/${0##*/}.log
Nitin Kumar Gupta
Trusted Contributor

Re: Shell Scripts

Yes,

The mode must be

644 For readable files
755 for executables.

i.e.
chmod 644
chmod 755

-NKG-
Grayh
Trusted Contributor

Re: Shell Scripts

thanks everyone