답변:
TL; DR : 아니요. 비밀번호는 일반적으로 복구 할 수없는 해시로 저장됩니다.
Linux는 기본적으로 일반 텍스트 비밀번호를 어디에도 저장하지 않습니다 . 그것들은 다양한 알고리즘을 통해 해시되거나 암호화됩니다. 따라서 일반적으로 아니요, 저장된 데이터로는 불가능합니다.
/etc/passwd
데이터베이스 이외의 위치에 비밀번호를 저장 한 경우 이를 허용하는 방식으로 비밀번호가 저장 될 수 있습니다. htpasswd
파일에는 Wealy 암호화 된 암호가 포함될 수 있으며 다른 응용 프로그램은 다양한 (일반적으로 나쁜) 이유로 약한 해시 또는 일반 텍스트 암호를 저장할 수 있습니다.
또한 사용자 구성 파일에는 여러 가지 이유로 암호화되지 않은 비밀번호 또는 약하게 보호 된 비밀번호가 포함되어있을 수 있습니다. 다른 서비스에서 컨텐츠를 가져 오는 메일을 가져 .netrc
오거나 간단한 자동화 된 것에는 비밀번호가 포함될 수 있습니다.
암호가 오래된 약한 알고리즘 (3DES, MD5)으로 해시되거나 암호화되면 변환을 되 돌리는 것이 아니라 데이터를 공격하더라도 암호를 합리적이고 효율적으로 저렴하게 해결할 수 있습니다. (예 : http://project-rainbowcrack.com/ 또는 http://www.openwall.com/john/ 와 같은 것 )
루트이기 때문에 다른 레벨에서 사용자 비밀번호를 공격 할 수도 있습니다. 로그인 바이너리 또는 sudo 또는 PAM의 일부 등을 입력 할 때 비밀번호를 캡처 할 수있는 것으로 바꿉니다.
따라서 루트 액세스 권한을 가지면 일반적으로 다양한 사이드 채널을 통해 사용자 세부 정보를보다 쉽게 얻을 수 있습니다.
여기에있는 다른 답변들과 달리,이 질문에 대한 간단한 대답은 "근본이있는 경우"로 끝나는 다른 많은 질문들에 대한 답입니다.
기본적으로 root는 시스템 자체에서 수행 할 수있는 모든 작업을 컴퓨터에서 수행 할 수 있습니다. 시스템은 비밀번호를 승인 할 수 있으므로 root는 충분한 노력으로 비밀번호 또는 사용자 대신 자신의 비밀번호를 승인 할 수 있습니다. 더 중요한 것은 단순히 비밀번호를 변경하거나 사용자가 될 수 있다는 것입니다.
특히 비밀번호는 일반적으로 암호화됩니다. 이것은 일반적으로 일종의 소위 "일방 통행"알고리즘으로, 암호를 확인하는 데 사용할 수있는 숫자 (해시)를 생성하지만 일반적으로 숫자를 되돌리고 암호를 다시 가져 오지 않습니다. 따라서 누군가의 비밀번호를 얻기 위해 파일을 읽는 것만으로는 문제가되지 않습니다.
즉, 쉘 히스토리와 로그인 히스토리를 읽을 수 있습니다. 로그인 히스토리는 사용자 이름 대신 비밀번호를 입력하거나 비밀번호 프롬프트 대신 쉘에 입력했을 가능성이 높습니다. 이 경우 일반 텍스트 여야합니다. 이것은 내가 알고있는 좋은 해결책이없는 텍스트 기반 터미널에서 혼란스럽게 일반적입니다.
그러나 이러한 문제를 제쳐두고도 "단방향"암호화는 실제로는 한 가지 방법이 아닙니다. 그 주위에 일치하는 것을 찾을 때까지 동일한 단방향 프로세스로 암호를 암호화하여 많은 암호 구 조합을 거치는 도구가 많이 있습니다. 그런 다음 액세스 할 수있는 비밀번호를 알고 있습니다 (루트 임에도 불구하고 이미 해당 머신에서 액세스 할 수 있음).
더 나쁜 것은, 레인보우 테이블이 있으며, 위의 프로세스에 대한 사전 계산 된 답변입니다. 사람들은 주어진 암호화 된 비밀번호에서 온 원래의 비밀번호를 이미 생성했습니다. 이를 사용하면 시간이 많이 걸리는 크래킹 시도가 필요없는 간단한 조회입니다.
다시, 루트 수준 액세스는 보호해야합니다. 시스템이 손상되면 전체 시스템과 시스템의 모든 것이 손상됩니다. 이제 모든 사용자에게 개인 정보를 보호하기 위해 더 이상 비즈니스를 신뢰할 수 없음을 알리는 것을 포함하여 다시 시작할 시간입니다. 그리고, 그렇습니다. 그것은 사업을 그만두는 것을 의미 할 수 있습니다.
모든 비밀번호는 /etc/shadow
파일에 저장 됩니다. 루트 액세스를 사용하여이 파일을 열고 hash value
각 사용자 (루트 사용자까지)에 대해이 비밀번호를 볼 수 있습니다 .
암호 해독 소프트웨어가 없으면 이러한 해시 값을 일반 텍스트로 다시 변환 할 수 없습니다.
그러나 여전히 루트 사용자에게 액세스 권한이있는 경우 다음 명령을 사용하여 일반 사용자의 비밀번호를 변경하고 해당 계정에 액세스 할 수 있습니다.
root@localhost$ passwd pradeep
user로 설정하려는 새 암호를 묻습니다 pradeep
. 이 방법으로 pradeep의 암호를 변경할 수 있습니다.
이제 다음을 통해 자신의 계정에서 액세스 할 수 있습니다.
root@localhost$ su pradeep
이로 인해 pradeep 사용자로 전환되고 다음과 같은 터미널이 제공됩니다.
pradeep@localhost$