2

My Debian 11 VPS is running now for about 2 weeks- and today I just wanted to analyse, why my traffic is ~70GiB (counted by bashtop). So somewhere in the net I read about nethogs, that this could help. So I installed it with my non-root, but sudo-grouped user.

sudo apt install nethogs

I couldn't run it.

So I switched to the root user with

su

It still didn't worked. So I just wanted to check the most important thing, the ufw.

ufw status

Output: command not found


So ...

  1. ufw is installed
  2. but it works if I execute it from the full path with

/usr/sbin/ufw status

But I want to know also, if the incoming traffic is really blocked by default until now:

/usr/sbin/ufw status verbose

Output: ERROR: problem running sysctl

Something is really fcked up ... I don't know why? The last thing I did 2 weeks ago was installing kuma-uptime with the kuma_install.sh After that I didn't tried ufw. So. my $PATH seems to be not working correct- even as the root user.

I'm not an expert, but this is how my bashrc file looks like (from the root user):

# ~/.bashrc: executed by bash(1) for non-login shells.

# Note: PS1 and umask are already set in /etc/profile. You should not
# need this unless you want different defaults for root.
# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
# umask 022

# You may uncomment the following lines if you want `ls' to be colorized:
# export LS_OPTIONS='--color=auto'
# eval "`dircolors`"
# alias ls='ls $LS_OPTIONS'
# alias ll='ls $LS_OPTIONS -l'
# alias l='ls $LS_OPTIONS -lA'
#
# Some more alias to avoid making mistakes:
# alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'

and the .profile file:

# ~/.profile: executed by Bourne-compatible login shells.

if [ "$BASH" ]; then
  if [ -f ~/.bashrc ]; then
    . ~/.bashrc
  fi
fi

mesg n 2> /dev/null || true

and this is the path to ufw:

ufw: /usr/sbin/ufw /etc/ufw /lib/ufw /usr/share/ufw /usr/share/man/man8/ufw.8.gz

and that is my echo $PATH:

/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin

Hope this is enought and someone could help me please, you're my last hope. Otherwise I have to switch to ubuntu, maybe ubuntu behaves better. I hope, I can solve the problem with your help. It would be great, if someone could tell more or less what I have exactly to do now.

1 Answer 1

7

This is an expected behavior in Debian.

nethogs full path is /usr/sbin/nethogs.

Non-root user in Debian does not have /usr/sbin in its default $PATH.

With command su you become a root, but the environment variables do not get expanded. Use either:

  1. su - and then nethogs
  2. sudo su and then nethogs
  3. sudo nethogs.

More information here Can't access some commands when logged in with non-root user (even after "su root").

Edit: You mention switching to Ubuntu. Ubuntu non-root user does have /usr/sbin in its default $PATH, so here it might be less confusing. However, you need a root access to flawlessly run nethogs anyway.

5
  • what the heck ..!? using "su -" worked! Thank you so much <3 now I'll switch with su - to the root user. Thank you so much for the quick answer; you helped me (and maybe some other people in the future) a lot! Jun 26 at 21:56
  • 2
    Might want to mention that this resulted from a change in July 2018, from the su in the old shadow source package to the su in the util-linux suite. This bug records the history of that change.. Also, similar questions have been answered here before: this is just the first one I found.
    – telcoM
    Jun 26 at 22:10
  • For this reason I have alias su = su - in my bashrc.
    – stanri
    Jun 27 at 13:11
  • Use sudo -i instead of sudo su.
    – hobbs
    Jun 27 at 14:24
  • Why sudo -i instead of sudo su? Without explaining, it is just a shout from nowhere. Thanks.
    – ethcz
    Jun 27 at 15:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.