Проблема: при организации сетевой связности между системами и сетевым элементами сетевики постоянно требуют пинги/трейсы по портам для анализа проблем.
Решение: создать для них учетную запись Linux, которая будет ограничена в правах и функционале — пусть сами всё проверяют.
Исходные данные: Ubuntu 20.04, нужен доступ к ping и traceroute.
В Ubuntu 20.04 утилита rbash уже есть. Но, если в системе её нет, то можно создать её копированием:
Создание пользователя:
useradd -s /bin/rbash username
Создадим для него домашнюю директорию c поддиректорией utils:
mkdir -p /home/username/utils
Пользователь может запускать только то, что будет найдено в директориях, указанных в переменной окружения PATH, которая прописана в /home/username/.bash_profile
Создадим и отредактируем этот файл:
# cat /home/username/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$HOME/utils
export PATH
Теперь, когда пользователь будет пытаться запускать команды — они будут запускаться не из /bin/
, /usr/local/bin/
или /home/usename/bin/
, а из /home/username/utils/
Создадим ссылки на утилиты:
ln -s /bin/ping /home/username/utils/
ln -s /usr/sbin/traceroute /home/username/utils/
В директории /home/username/utils/ появились ссылки на утилиты:
> ls -l /home/username/utils/
lrwxrwxrwx 1 root root 9 янв 16 17:19 ping -> /bin/ping
lrwxrwxrwx 1 root root 20 янв 16 17:22 traceroute -> /usr/sbin/traceroute
Проверяем работоспособность:
username@notebook:~$ top
-rbash: /usr/lib/command-not-found: ограниченный режим: в названиях команд нельзя использовать косую черту «/»
username@notebook:~$ ping ya.ru
PING ya.ru (87.250.250.242) 56(84) bytes of data.
64 bytes from ya.ru (87.250.250.242): icmp_seq=1 ttl=55 time=24.0 ms
64 bytes from ya.ru (87.250.250.242): icmp_seq=2 ttl=55 time=24.9 ms
...
username@notebook:~$ traceroute ya.ru
traceroute to ya.ru (87.250.250.242), 30 hops max, 60 byte packets
1 _gateway (192.168.0.1) 1.360 ms 1.418 ms 1.506 ms
2 95.55.64.1 (95.55.64.1) 8.333 ms 8.362 ms 8.407 ms
...
Готово!
Для защиты файла от перезаписи (сделать его immutable) и изменения переменной PATH — рекомендуется использовать chattr:
chattr +i /home/username/.bash_profile
Таким образом ни root, ни username не смогут его изменить, пока сам root не сделает этот файл снова изменяемым.
Убирается этот атрибут командой:
chattr -i /home/username/.bash_profile
Посмотреть атрибуты файла можно командой:
> lsattr /home/username/.bash_profile
----i---------e----- /home/localuser/.bash_profile
Подробнее про chattr и его атрибуты читаем тут: https://losst.ru/neizmenyaemye-fajly-v-linux