한 사용자가 다른 사용자의 755 파일을 어떻게 삭제할 수 있습니까?


35

user를 사용하여 다른 서버에 파일을 scp하는 백업 업로드 스크립트가 있습니다 upload. 대상 서버의 다른 스크립트는이 스크립트를 다른 사용자에게 숨기고 파일 모드를로 설정합니다 755.

그런 다음 upload사용자를 사용하여 대상 서버에 SSH 하면 chowned 파일을 삭제할 수 있습니다. 그들은 읽기 전용이어야합니까?

대상 서버에서 파일 모양은 다음과 같습니다. 사용자 upload가 파일 을 삭제할 수 있습니다.

-rwxr-xr-x 1 maciekish maciekish 650M Nov  1 01:07 2014-11-01-data.tar.bz2

사용자 upload가 방금 추가되었으며 그룹 useradd의 일부가 아닙니다 maciekish.

uploadssh 를 통해 파일을 삭제하려고 할 때 “보호 된 일반 파일 쓰기”를 삭제할지 여부에 대한 질문을 받고 파일을 말하고 Y삭제할 수 있습니다.


답변:


64

파일 읽기 전용입니다. 그러나 파일을 삭제해도 파일은 수정되지 않고 부모 디렉토리 만 (기본적으로 디렉토리 목록에서 파일이 제거됨) 디렉토리에 대한 전체 쓰기 권한이있는 것 같습니다.

당신은 설정할 수 있습니다 sticky비트 일명 "제한 삭제"깃발의 이름을 바꾸거나 (처럼 그 디렉토리에있는 파일을 삭제에서 소유자를 제외하고 사람을 방지됩니다 /tmp). 이렇게하려면 chmod o+t *directory*디렉토리의 소유자로 실행 하십시오.


12

일반적인 Unix 파일 시스템에서 모든 파일은 임의의 수의 디렉토리 항목으로 식별 할 수 있으며 각 항목에는 "하드 링크"가 있습니다.

구현 관점에서 파일의 마지막 디렉토리 항목 (하드 링크)을 삭제하는 것과 많은 것 중 하나의 참조를 삭제하는 것에는 차이가 있습니다. 그러나 의미 적 관점에서 보면 차이가 없습니다.

파일에 여러 개의 하드 링크가 존재하는 경우 파일을 사용하여 파일에 쓰면 모든 파일에서 보이는 파일이 변경됩니다. rm그러나 링크에서 사용하면 해당 링크를 통해 파일에 액세스 할 수 없게됩니다. 파일에 대한 다른 링크는 계속 동일한 파일을 계속 볼 수 있습니다.


3
일반적으로 하드 링크라고합니다.
Bob

1
@Bob : "하드 링크"라는 용어는 이미 존재하는 파일에 생성 된 참조를 설명하는 데 사용됩니다. 파일이 하나 이상의 참조를 가지고 있지 않은 경우, 그 참조는 여전히 "하드 링크"라고합니까?
supercat

3
링크 사이에는 차이가 없습니다. 파일 A를 작성하고, 하드 링크 B를 작성하고, 파일 A를 삭제하십시오. B는 이제 파일입니까, 아니면 하드 링크입니까? 작동 방식을 이해하려면 파일 하나와 (N-1) 하드 링크가 아니라 N 하드 링크로 보는 것이 좋습니다. 파일을 열 때 존재하는 링크도 있습니다.
gnasher729

@ gnasher729 : 여러 링크가 존재하거나 파일에 존재하는 경우, 의미가 다르지 않으면 모든 링크를 "하드 링크"라고 말하는 것이 좋습니다. 다른 한편으로, 의미 론적 및 성능 관점에서 볼 때 항상 파일에 대한 유일한 참조 인 디렉토리 항목과 다른 하드 링크가 작성된 디렉토리 항목을 구별하는 것이 유리할 수 있다고 생각합니다. 어쨌든, 나는 "각 하드 링크 (hard link)"라고 불리는 디렉토리 엔트리를 언급하는 것이 옳은지를 알지 못했다.
supercat

2
@ supercat 그것은 흔하지는 않지만 정확합니다. 의 st_nlink( "하드 링크 수") 필드를 고려하십시오 struct stat. 간단히 말해 디렉토리에는 파일에 대한 하드 링크가 있습니다.
hobbs
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.