PATH environment variable does not contain the path where these files are located. When you use
su -, root's environment variables get loaded into your session. See
-, -l, --login
Start the shell as a login shell with an environment similar
to a real login:
o clears all the environment variables except TERM and
variables specified by --whitelist-environment
o initializes the environment variables HOME, SHELL,
USER, LOGNAME, and PATH
o changes to the target user's home directory
o sets argv of the shell to '-' in order to make
the shell a login shell
To better understand this, let's look at where one of these binaries is, and compare root's PATH with yours:
which service. This will tell you where the
service binary would be loaded from if you were to run the command
echo $PATH. This will show you root's PATH. You will note that the directory where
service can be found is listed here.
exit to become your non-root user again.
echo $PATH. You'll see that the directory you identified in step 2 is not here.
This is a normal default setup in certain environments/distros where certain administrative programs like
fdisk, etc. are kept in a directory such as
/sbin, with such directories kept off of normal users' PATHs.