내 과제의 질문에는 다음과 같은 내용이 있었습니다.
모든 사람에게 모든 권한을 부여하고 삭제할 수 없는 임시 디렉터리를 만듭니다.
hello.sh를 해당 디렉토리에 복사하여 모든 사람에게 실행 권한을 부여하지만 hello.sh는 소유자로 실행됩니다.
그래서 temp라는 디렉터리를 만들고 다음 권한을 부여했습니다.
chmod 555 temp
하지만 hello.sh를 temp로 cp하려고 하면 temp의 권한이 555이기 때문에 오류가 발생합니다. 여기서 교수님은 정확히 무엇을 묻고 싶으신가요? 디렉토리 삭제를 허용하지 않고 파일을 디렉토리에 복사하는 방법은 무엇입니까?
답변1
이것이 숙제라는 점을 감안할 때 정확한 답변을 제공하지는 않지만 다음을 고려하십시오. 이 과제를 할당 받았다면 setuid
합계와 비트가 설명되었음을 의미합니다. sticky
이 지식은 작업을 완료하는 데 충분해야 합니다.
답변2
Linux는 권한 설정을 3개 그룹으로 나눕니다.
- 소유자 - 파일을 소유한 사용자
- 그룹 - 사용자 집합
- World - 소유자도 아니고 그룹의 일부도 아닙니다.
다음 권한을 부여할 수 있습니다.
- 읽다
- 쓰다
- 구현하다
이 명령을 사용하면 각 그룹 에 필수( ) 레이블을 적용하여 각 그룹 chmod
( )에 대한 권한을 설정할 수 있습니다. 권한을 설정하는 데 사용되는 숫자는 실제로 각 그룹에 설정된 이진() 플래그를 십진수로 표현한 것입니다. 예를 들어 다음을 허용하는 권한을 설정하려고 합니다.Owner/User/World
Read/Write/Execute
0/1
- 소유자 - 읽기, 쓰기 및 실행
- 그룹 - 읽기 및 실행(쓰기는 아님)
- 세계 - 권한 없음
따라서 이 경우 우리는 허가를 받아 다음 Owner
을 갖게 됩니다 :read=1
write=1
execute=1
111 -> 7
, 라이센스 가 Group
부여 됩니다 :read=1
write=0
execute=1
101 -> 5
결국 다음이 World
있을 것입니다: read=0
, 허가를 write=0
받아 execute=0
:
000 -> 0
또한 소위를 설정할 수 있습니다.끈끈한 비트디렉토리로. 이렇게 하면 다른 사용자가 이 디렉터리에 있는 파일을 삭제하거나 이름을 바꾸는 것을 방지할 수 있습니다. 소유자만 이 디렉터리에 있는 파일을 삭제하거나 이름을 바꿀 수 있습니다. 따라서 귀하의 경우 올바른 chmod
명령은 다음과 같습니다.
chmod 1777 temp
세 그룹을 모두 777
허용 하고 추가로read/write/execute
1
끈끈한 비트.