UNC 경로 내에서 UNC 사용자 이름 및 비밀번호 전달


23

UNC 경로 내에서 UNC 사용자 이름과 비밀번호를 전달할 수 있습니까?

FTP 및 SMB가이를 지원하는 방법과 유사합니다.

smb://user:pass@destination.com/share
ftp://user:pass@destination.com/share

DFS 경로에 (도메인이 아닌 PC) 서비스 액세스를 얻으려고합니다.

이 주위에 다른 방법이 있습니까? PC를 도메인에 바인딩하고 도메인 사용자로 서비스를 실행할 수 있지만 Linux를 사용하는 경우 어떻게해야합니까?

답변:


20

Windows에서, 당신은 할 수없는 UNC 경로의 자격 증명을했습니다. net use, 또는를 사용하여 runas /netonly요청한 경우 제공해야합니다 . 프로그래밍 기술이있는 경우 CredWrite()Windows에서 "암호 기억"확인란을 선택하는 것과 같은 방법으로 SMB 암호를 "도메인 자격 증명"으로 저장할 수 있습니다 .

Linux에서는 프로그램에 따라 다릅니다.

  • 그놈의 Gvfs는 user@host구문을 허용 하지만 암호를 완전히 무시하는 것으로 보입니다. (단, 그놈 키링에 미리 저장할 수 있습니다.)

  • smbclientWindows와 동일한 UNC 구문을 사용합니다. 그러나 --authentication-file자격 증명을 읽을 수 있는 옵션이 있습니다.

  • 위의 두 프로그램 모두 libsmbclient 를 사용하고 있으며 암호 대신 Kerberos 인증을 사용할 수 있습니다 : run kinit user@YOUR.DOMAINand use smbclient -k //host/share. 이것은 비밀번호 인증보다 안전합니다.

URI에 비밀번호를 넣는 것은 더 이상 사용되지 않으며 어디에서나 지원되는 비밀번호에 의존해서는 안됩니다 .


"URI에 비밀번호 입력은 더 이상 사용되지 않습니다"와 관련하여 참조가 있습니까?
Alexis Wilke

2
@AlexisWilke RFC 1738 § 3.3 HTTP에서 허용하지 않음으로 시작, RFC 2396 § 3.2.2 에 더 일반적인 "권장되지 않음"이 있고 RFC 3986 § 3.2.1에 "user : password"형식 사용 필드는 더 이상 사용되지 않습니다 ".
grawity

14

을 사용하여 "드라이브"를 UNC 경로에 매핑 할 수 있습니다 net use. 향후 액세스는 기존 연결을 공유해야합니다

Net Use \\yourUNC\path /user:uname password

참고 : 드라이브 문자를 지정할 필요가 없습니다


1

파일 액세스를 수행하기 전에 먼저 인증을 위해 사용자 이름과 비밀번호를 서버로 전달해야하므로 SMB 연결을 처리하는 코드는 URL에서 사용자 이름과 비밀번호를 구문 분석하고 추가로 추가 할 수 있어야합니다. 해당 코드가이 형식을 지원하는지 확인해야합니다.

그렇지 않은 경우 SAMBA를 통해 해당 SMB 공유를 마운트하고 프로그램이 해당 "로컬"경로를 사용하도록 지시 할 수 있습니다. 마운트를 넣고 fstabSAMBA 비밀번호 파일을 사용하여 사용자 신임 정보를 제공 할 수 있습니다. 일반 사용자가 읽을 수 없도록 비밀번호 파일에 대한 올바른 권한을 설정해야합니다.

구성 파일에 비밀번호를 일반 텍스트로 저장하는 것은 좋지 않으므로 프로그램이 URL에서 비밀번호를 처리 할 수있는 경우에도 마운트 된 공유 방법을 고려해야합니다.


인가 fstab는 "일반 텍스트 구성 파일"하지?
grawity

1
예. 그러나 fstab에서는 비밀번호를 직접 포함하는 대신 비밀번호 파일을 참조합니다. 그런 다음 소유자를 루트로 변경하고 모드를 400으로 변경하여 비밀번호 파일을 보호 할 수 있습니다.
billc.cn

그것은 여전히 ​​일반 텍스트 구성 파일입니다. 머신에 물리적으로 액세스하는 사람은 재부팅을 통해 루트 권한을 가질 수 있습니다. XFCE, KDE 및 Gnome과 같은 데스크탑 환경은 암호 저장소에 자격 증명을 저장할 수 있으며 이는 아마도 더 나은 옵션 일 것입니다.
bobpaul

0

자격 증명이 캐시되도록 제어판 / 사용자 / Windows 자격 증명 관리자에서 자격 증명을 추가 할 수 있습니다. 도메인 사용자 이름 / 암호로 장치 이름 (server.domain.local)을 추가하면 자격 증명을 다시 제공하지 않고도 공유에 액세스 할 수 있습니다.


0

비 도메인 PC는 실제로 가입하거나 직접 참여하지 않는 DFS를 신경 쓰지 않아야합니다. 공유 경로 (예 : 서버 / 공유 이름) 만 있으면됩니다. 공유 이름은 모든 호스트 파일 서버 경로 고려 사항을 제거합니다.

솔직히 UNC URI보다 공유에 로그온하는 더 안전한 방법이 있습니다. UNC 및 URI 자체는 일반 텍스트 통신 프로토콜입니다.
이것이 허용 가능한 보안이라면 ... 어떻게 사용자 나 암호없이 공개 공유를하지 않습니까?

가장 간단한 솔루션은 서비스 자격 증명에 공유 로그온에 대한 직접 액세스 권한을 부여하는 것입니다 (예 : 일치하는 사용자 / 암호). 그렇게 명백하게 일치하지 않으면 장기적으로 상황이 변경 될 때마다 권한을 업데이트해야합니다. 또한 MS가 보안이 자격 증명을 다시 전달하는 방식을 변경하여 문제를 해결할 수있는 영역이기도합니다.

장기적으로 가장 간단한 방법은 로컬 드라이브 문자를 네트워크 공유에 영구적으로 매핑하는 것입니다. 서비스 (및 해당 관리자 등)에 대한 권한으로 만 매핑 된 드라이브를 보호하고 공유 이름은 &로 앞에 숨길 수 있습니다.

그러나 DFS는보다 우아한 솔루션의 단서를 제공합니다. Linux는 네트워크 공유를 먼저 DFS와 매우 유사한 방식으로 루트 파일 시스템의 디렉토리로 마운트해야합니다. Linux mount 명령을 사용하면 username 및 password에 대한 자격 증명 파일을 지정할 수 있으므로 명령 줄 스크립트 또는 fstab (예 : 파일 시스템 테이블)보다 업데이트 및 보안이 더 쉽습니다. Windows 명령 셸과 DFS가 동일한 작업을 수행 할 수 있다고 확신합니다. 스크립트로 하드 코딩되어 일반 텍스트 UNC로 전송되지 않고 SMB 및 로그온 서비스가 전달한 저장된 자격 증명을 사용하여 탑재 된 네트워크 공유를 통합하는 것은 대상 PC에 다른 DFS 시스템 일뿐입니다.

비 도메인 PC가 비 도메인 PC 장기로 유지되는지 여부도 고려하십시오. * NIX 영역의 Kerberos 로그온 서버는 Windows AD 도메인에 링크 될 수 있습니다. 아마도 몇 명 이상의 사람들이 참여하는 심각한 장기 프로젝트를 위해하고 싶은 일일 것입니다. 반면에 대부분의 홈 네트워크 상황에서는 과잉 상태 일 수 있습니다. 비록 당신이 취미 주의자가 아닌 다른 어떤 이유로 DFS를 사용한다면 아마도 최선을 다할 것입니다.


0

Matt의 자격 증명 저장소 답변은 최신 Windows PC에서 가장 우아합니다. 명시되지는 않았지만 사용 된 자격 증명 저장소는 서비스 계정 용이어야합니다. 이는 서비스에 대한 가용성을 보장하고 해당 공유에 액세스하지 않으려는 다른 사용자가 (예를 들어 잘못된 계정으로 잘못 추가 된 자격 증명을 정리하는 것을 기억해야 함) 보장하기위한 것입니다.

그러나 레거시 Windows 또는 Linux 인 경우 약간 더 넓어야합니다.

비 도메인 PC는 실제로 가입하거나 직접 참여하지 않는 DFS를 신경 쓰지 않아야합니다. 공유 경로 (예 : 서버 / 공유 이름) 만 있으면됩니다. 공유 이름은 모든 호스트 파일 서버 경로 고려 사항을 제거합니다.

솔직히 UNC URI보다 공유에 로그온하는 더 안전한 방법이 있습니다. UNC 및 URI 자체는 일반 텍스트 통신 프로토콜입니다.
이것이 허용 가능한 보안이라면 ... 어떻게 사용자 나 암호없이 공개 공유를하지 않습니까?

가장 간단한 솔루션은 서비스 자격 증명에 공유 로그온에 대한 직접 액세스 권한을 부여하는 것입니다 (예 : 일치하는 사용자 / 암호). 그렇게 명백하게 일치하지 않으면 장기적으로 상황이 변경 될 때마다 권한을 업데이트해야합니다. 또한 MS가 보안이 자격 증명을 다시 전달하는 방식을 변경하여 문제를 해결할 수있는 영역이기도합니다.

장기적으로 가장 간단한 방법은 로컬 드라이브 문자를 네트워크 공유에 영구적으로 매핑하는 것입니다. 서비스 (및 해당 관리자 등)에 대한 권한으로 만 매핑 된 드라이브를 보호하고 공유 이름은 &로 앞에 숨길 수 있습니다.

그러나 DFS는보다 우아한 솔루션의 단서를 제공합니다. Linux는 네트워크 공유를 먼저 DFS와 매우 유사한 방식으로 루트 파일 시스템의 디렉토리로 마운트해야합니다. Linux mount 명령을 사용하면 username 및 password에 대한 자격 증명 파일을 지정할 수 있으므로 명령 줄 스크립트 또는 fstab (예 : 파일 시스템 테이블)보다 업데이트 및 보안이 더 쉽습니다. Windows 명령 셸과 DFS가 동일한 작업을 수행 할 수 있다고 확신합니다. 스크립트로 하드 코딩되어 일반 텍스트 UNC로 전송되지 않고 SMB 및 로그온 서비스가 전달한 저장된 자격 증명을 사용하여 탑재 된 네트워크 공유를 통합하는 것은 대상 PC에 다른 DFS 시스템 일뿐입니다.

비 도메인 PC가 비 도메인 PC 장기로 유지되는지 여부도 고려하십시오. * NIX 영역의 Kerberos 로그온 서버는 Windows AD 도메인에 링크 될 수 있습니다. 아마도 몇 명 이상의 사람들이 참여하는 심각한 장기 프로젝트를 위해하고 싶은 일일 것입니다. 반면에 대부분의 홈 네트워크 상황에서는 과잉 상태 일 수 있습니다. 비록 당신이 취미 주의자가 아닌 다른 어떤 이유로 DFS를 사용한다면 아마도 최선을 다할 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.