Я запускаю сервер Debian и даю доступ к оболочке нескольким друзьям. Я бы хотел скрыть запущенные процессы от этих обычных пользователей, чтобы, например, top
показывает только их собственные процессы, а не что-либо запущенное кем-то другим. Очевидно, что root должен видеть все процессы.
Как бы я это сделал? Я видел это в действии на многих общих службах хостинга, которые предлагают учетные записи оболочки, но не нашел способа сделать это сам.
Только с линуксом это невозможно. С помощью SeLinux или GrSecurity вы можете «спрятать» (фактически, не дать ему доступа) процессы между пользователями. Это немного сложно, но возможно.
Быстрый и простой способ, но не пуленепробиваемый, - дать им псевдоним в их ~ / .bashrc (или соответствующем файле запуска / псевдонима для конкретной оболочки), который просто запускается сверху, глядя на их собственное имя пользователя:
alias top="top -u $USER"
Это ничего не делает для ps
или, конечно, но кроме помещения пользователей в среду chroot или jail, или selinux, как упоминал Саккс, вы мало что можете сделать, чтобы скрыть от них систему.
Если вас не интересует SELinux, вы можете возможно получить некоторую поддержку в решении этой проблемы, проявив творческий подход с разрешениями на подкаталоги PID в / proc /, но необходимо провести массовое тестирование.
Есть опция командной строки -U
Мониторинг пользователем как: -U кто-то Мониторинг только процессов с UID или именем пользователя, совпадающим с указанным. Это соответствует реальному, действующему, сохраненному UID и идентификаторам файловой системы.
или -u
Наблюдать за пользователем как: -u something Отслеживать только процессы с эффективным UID или именем пользователя, совпадающим с указанным.
Я не знаю, как вы эффективно применяете это к пользователям, имеющим доступ к командной строке. Учитывая, что у пользователей есть доступ к командной строке, они в любом случае могут использовать множество других инструментов, чтобы видеть процессы других людей.