Безопасна ли команда w для пользователей?

Безопасна ли команда w для пользователей?

Некоторые приложения позволяют передавать пароль в качестве аргумента. Например:

mysql --user=user_name --password=your_password db_name

Безопасно ли это? Помимо того, что введенный пароль будет сохранен в истории bash, кто-то может ввести wкоманду в подходящий момент и увидеть полную командную строку процесса (включая пароль).

Для меня довольно удивительно, что каждый пользователь может видеть, какую команду я в данный момент выполняю.

решение1

Аргументы командной строки каждого процесса в системе считаются «публичными». Не только команда w, но psи topмногие другие команды получают доступ к этой информации как к чему-то само собой разумеющемуся. Действительно, для получения этой информации не требуется никаких специальных привилегий. В Linux вы можете прочитать командную строку другого процесса, даже процесса, принадлежащего другому пользователю, прочитав /proc/<pid>/cmdline.

Это не является недостатком или небезопасным поведением со стороны wили topили ps(или cat). Скорее, бремя лежит на стороне не передавать конфиденциальную информацию в командных строках в многопользовательских системах, никогда.

Большинство утилит, которые могут принимать пароли в командной строке, документируют, что делать это не рекомендуется. Например, из mysqlman-страницы:

Указание пароля в командной строке следует считать небезопасным. См. раздел 5.3.2.2, «Руководство конечного пользователя по безопасности паролей». Вы можете использовать файл параметров, чтобы избежать указания пароля в командной строке.

Кстати, передача паролей или конфиденциальных данных в переменных среды не так явно небезопасна, но все же небезопасна в большинстве систем.

решение2

Нет, передавать пароли программам в командной строке небезопасно. Лучше использовать:

mohsen@debian:~$ mysql -uuser -p
Enter password: 

решение3

Хотя это и небезопасно, помните, что Linux в наши дни находится на пороге двадцатилетия — как и в случае с другими вещами в сфере ИТ, проблемы безопасности либо не были тогда столь очевидны, либо были устранены позднее.

Поэтому, как упоминалось в других ответах, не используйте пароль в командной строке.

Вы можете (и, вероятно, должны) также ограничить информацию, предоставляемую либо procfs with theопцией mountring hidepid`, либо с помощьюgrsecurityукрепленное ядро. Обратите внимание, что это может сломать некоторые вещи (возможно, cgroups и все, что от них зависит - например, systemd), по крайней мере на момент написания этого.

Связанный контент