다른 사람/루트 파일을 보내려면 어떤 권한이 필요합니까?

다른 사람/루트 파일을 보내려면 어떤 권한이 필요합니까?

그래서 시스템에서 일부 권한을 가지고 놀았는데 파일을 다른 곳으로 보내도록 지정된 권한이 없다는 것을 발견했습니다.

일반 사용자로서 다음 명령을 시도했습니다. 메시지 수신에 만족하지만 파일을 보내는 데 필요한 권한이 무엇인지 아직 잘 모르겠습니다.mail -a //etc/shadow [email protected]Permission Denied

즉, mail메일 프로토콜에는 명령을 사용하지만 다른 명령이나 프로토콜은 어떻습니까?

그런데 이 파일의 권한은 다음과 같습니다 shadow.

-rw-r-----   1 root  shadow    1759 Oct 23  2017 shadow

답변1

아니요, 파일을 "보내는" 것은 실제로 파일 시스템 수준 작업이 아니기 때문입니다. 이 mail명령이 수행하는 작업은 읽기 위해 파일을 열고 데이터를 읽은 다음 네트워크 소켓을 통해 전송(쓰기)하는 것입니다(이메일의 경우 인코딩될 수 있지만 중요하지 않음). 마찬가지로 FTP 클라이언트 scp나 다른 클라이언트도 동일한 작업을 수행하며 파일을 정상적으로 읽습니다.

읽기 권한이 없으므로 사용자 ID로 실행 /etc/shadow하면 mail읽을 수 없습니다.

리눅스에는sendfile()시스템 호출read(), 이는 두 파일 설명자 간에 직접 데이터를 복사하지만 이는 write()기본적으로 하나의 파일 설명자를 호출하고 다른 파일 설명자를 호출하는 것과 동일하지만 커널에서 발생하므로 시스템 호출 오버헤드가 적습니다. 또한 읽으려면 소스 코드를 열어야 합니다.

관련 정보