일부 애플리케이션에서는 비밀번호를 매개변수로 전달할 수 있습니다. 예를 들어:
mysql --user=user_name --password=your_password db_name
안전 해요? 입력한 비밀번호가 bash 기록에 저장되는 것 외에도 누군가가 w
적절한 시간에 명령을 입력하고 프로세스의 전체 명령줄(비밀번호 포함)을 볼 수 있습니다.
놀랍게도 모든 사용자는 현재 실행 중인 명령을 볼 수 있습니다.
답변1
시스템의 모든 프로세스에 대한 명령줄 매개변수는 "공개"로 간주됩니다. 물론 w
명령 뿐만 아니라 ps
다른 많은 명령에서도 이 정보에 액세스할 수 있습니다. top
실제로 이 정보를 얻는 데 특별한 권한이 필요하지 않습니다. Linux에서는 /proc/<pid>/cmdline
.
w
top
이는/ 또는 ps
의 결함이나 안전하지 않은 동작 이 아닙니다 cat
. 대신, 다중 사용자 시스템의 명령줄에서 민감한 정보를 절대 전달하지 않는 것이 책임입니다.
명령줄에서 암호를 허용하는 대부분의 유틸리티는 이것이 권장되지 않음을 나타냅니다. 예를 들어 mysql
맨페이지는 다음과 같습니다 .
명령줄에서 비밀번호를 지정하는 것은 안전하지 않은 것으로 간주되어야 합니다. 섹션 5.3.2.2, “비밀번호 보안에 대한 최종 사용자 가이드”를 참조하십시오. 옵션 파일을 사용하면 명령줄에 비밀번호를 입력하지 않아도 됩니다.
그건 그렇고, 환경 변수에 비밀번호나 민감한 데이터를 전달하는 것은 그다지 안전하지 않은 것은 아니지만 실제로 대부분의 시스템에서는 안전하지 않습니다.
답변2
아니요, 명령줄에서 프로그램에 비밀번호를 전달하는 것은 안전하지 않습니다. 사용하는 것이 가장 좋습니다:
mohsen@debian:~$ mysql -uuser -p
Enter password:
답변3
안전하지는 않지만 Linux는 여전히 20대 초반이라는 점을 명심하십시오. IT의 다른 모든 것과 마찬가지로 보안 문제는 당시에 명확하지 않았거나 나중에 해결되었습니다.
따라서 다른 답변에서 언급했듯이 명령줄에서 비밀번호를 사용하지 마십시오.
Mounting ring 에서 제공하는 정보를 제한할 수도 있고 아마도 그렇게 해야 할 수도 있습니다 procfs with the
.사이버 보안강화된 코어. 적어도 이 글을 쓰는 시점에서는 이로 인해 일부 항목(아마도 cgroup 및 이에 의존하는 모든 항목 - 예를 들어 시스템)이 손상될 수 있습니다.