posix/chmod의 대문자 X는 무엇입니까?

posix/chmod의 대문자 X는 무엇입니까?

난 그게 뭔지 알아우고아(소유자, 그룹, 기타, 모두) 또는읽고 쓰기(읽기/오른쪽/실행) 또는 4,2,1 또는 -, f, d, , 대문자가 무엇인지 이해하기 위해 l읽어 보았지만 해당 항목이 없습니다. 그런 다음 읽었습니다.man chmodXchmod이 기사posix/chmod에 있지만 다음 구절에서 멈췄습니다.

실행 가능 비트는 대상 a)가 디렉터리이고 b) 사용자, 그룹 또는 기타 사용자에 대해 최소한 하나의 실행 가능 비트가 설정된 경우에만 설정됩니다.

나도 읽었다이 기사이 코드 예제를 보면 다음과 같습니다.

chmod -R u=rwX,g=rX,o=rX testdir/

testdir/소유자(u), 그룹(g) 및 기타 모든 사람(o)에 대한 재귀적 권한이 있다는 것을 알고 있지만 여전히 대문자 X의 의도를 놓치고 있음을 인정합니다.

아마도 여기에 있는 교훈적인 표현이 이에 대해 어느 정도 밝힐 수 있을 것입니다(제가 여기에 게시하는 주된 이유는 이에 대한 SE 컨퍼런스를 찾을 수 없기 때문입니다).

고쳐 쓰다

죄송합니다. 이 사람에 대한 요점을 놓쳤습니다. 나는 X가 인수 목록 앞에 나타날 것이라고 기대하지 않았으며 검색 결과 X 대신 x가 반환되었다고 생각했는데 이것이 내 잘못이었습니다.

답변1

이것맨페이지설명하다:

파일이 디렉터리이거나 이미 일부 사용자에 대한 실행 권한이 있는 경우에만 실행/검색( X)

POSIX설명하다:

이것파마상징엑스파일이 디렉터리이거나 현재(수정되지 않은) 파일 모드 비트에 하나 이상의 실행 비트 세트(S_IXUSR, S_IXGRP 또는 S_IXOTH)가 있는 경우 파일 모드 비트의 실행/검색 부분을 나타내야 합니다. 파일이 디렉터리가 아니고 현재 파일 모드 비트에 실행 비트가 설정되어 있지 않으면 무시해야 합니다.

이것은 조건부 권한 플래그입니다. chmod현재 처리 중인 항목을 살펴보고, 그것이 디렉터리이거나 현재 권한(소유자, 그룹 등)에 실행 비트가 설정되어 있으면 요청된 권한으로 작동하고 x, 그렇지 않으면 그것을 무시합니다. 특정 지침을 적용할 때 조건이 chmod확인되므로 X동일한 실행에서 실행 비트를 지워 a-x,a=rwX디렉터리에 실행 비트만 설정할 수 있습니다.

stat출력의 "액세스" 섹션이나 의 첫 번째 열을 보면 파일에 실행 비트가 설정되어 있는지 확인할 수 있습니다 ls -l. 실행 비트는 으로 표시됩니다 x. -rwxr-xr-x실행 파일에 대한 공통은 실행 비트가 소유자, 그룹 및 기타 사용자에 대해 설정되었음을 나타냅니다. -rw-r--r--다른 파일에 대해 공통은 실행 비트가 설정되지 않았음을 나타냅니다(그러나 읽기 비트는 모든 사람에 대해 설정되고 소유자 쓰기에 대해 설정됩니다). 조금). 바라보다UNIX 권한 및 해당 속성 이해그 안에 더 자세한 내용이 있습니다.

따라서 귀하의 예에서는 u=rwX모든 경우에 읽기 및 쓰기 권한을 설정하고 디렉터리 및 실행 파일에 대해 실행하고 마찬가지로 그룹( g=rX) 및 기타( o=rX) 및 실행 파일에 대한 디렉터리에 대해 읽고 실행합니다.

이 연산자의 목적은 사용자가 chmod다양한 파일과 디렉터리를 제공하고 올바른 실행 권한을 얻을 수 있도록 하는 것입니다(파일 중 잘못된 실행 비트 세트가 없다고 가정). 이는 파일과 디렉터리(예: 기존 find . -type f -exec chmod 644 {} +명령 find . -type d -exec chmod 755 {} +)의 구별을 피하고 실행 파일을 합리적인 방식으로 처리하려고 시도합니다.

(알아채다애플 시스템chmod분명히 X작업 만 지원됩니다 +. )

답변2

에서 man chmod:

rwxXst 문자는 영향을 받는 사용자에 대한 파일 모드 비트(읽기(r), 쓰기(w), 실행(또는 디렉터리 검색))(x), 파일이 디렉터리이거나 이미 일부 사용자(X)에 대한 실행 권한이 있는 경우에만 실행/검색합니다.실행 시 사용자 또는 그룹 ID, 제한된 삭제 플래그 또는 고정 비트(t)를 설정합니다.

(강조).

그러나 그것은 많은 것을 설명하지 않습니다.이 글에는 두 가지 규칙이 있습니다그것이 무엇을 하는지 명확히 하기 위해:


예를 들어, 디렉토리에 다음 chmod 명령을 실행합니다.

# chmod -R u=rwX,g=rX,o=rX testdir/`  

위 명령은 대문자 X를 사용하여 다음 두 규칙에 따라 실행 가능 속성을 설정합니다.

  1. 파일이 디렉터리인 경우 소유자, 그룹 및 월드에 대한 실행 가능 속성을 설정합니다. 즉, 해당 디렉터리에 들어갈 수 있습니다.

  2. 파일이 일반 파일이고 파일에 특정 실행 비트가 설정된 경우 해당 권한에 실행 가능 속성이 추가됩니다. 파일에 실행 비트가 설정되어 있지 않으면 실행 비트가 추가되지 않습니다.

소문자 x를 사용하는 단 하나의 명령으로는 이 결과를 얻을 수 없습니다.


해명을 바랍니다사용~의엑스.

답변3

이 답변을 찬성하지 마십시오. 이것이 바로 제가 위의 Stephen Kitt의 답변에서 이해한 내용이며, 이를 올바른 것으로 받아들입니다.


1)수도a=rwX

2)다음의 조합은 a-x(모든 파일의 실행 비트가 손실되는지 확인),그리고그런 다음 다음과 a=rwX같이 말합니다. 모든 위치에 대한 읽기 및 쓰기 비트를 가져오고 디렉터리에서만 실행 비트를 가져옵니다.

관련 정보