Linux에서 단일 명령으로 디렉토리를 만들고 권한을 부여하는 방법은 무엇입니까?
전체 권한을 가진 많은 폴더를 만들어야합니다 777
.
명령어
mkdir path/foldername
chmod 777 path/foldername
두 가지 명령을 만들고 권한을 부여하는 것을 좋아하지 않습니다. 단일 명령으로이 작업을 수행 할 수 있습니까?
Linux에서 단일 명령으로 디렉토리를 만들고 권한을 부여하는 방법은 무엇입니까?
전체 권한을 가진 많은 폴더를 만들어야합니다 777
.
mkdir path/foldername
chmod 777 path/foldername
두 가지 명령을 만들고 권한을 부여하는 것을 좋아하지 않습니다. 단일 명령으로이 작업을 수행 할 수 있습니까?
답변:
mkdir 의 man 페이지 에 따르면 ...
mkdir -m 777 dirname
-p
위에서 이미 언급 한 @DisplayName 관련 문제 외에도 다른 문제 가 있습니다. 는 -m
디렉토리가 실제로 생성 된 경우에만 적용됩니다. 이미 존재하는 경우 모드가 변경되지 않습니다. 상황에 따라 좋을 수도 있고 나쁠 수도 있습니다.
install -d -m 0777 /your/dir
당신이 원하는 것을 줄 것입니다. 모든 사용자는 해당 디렉토리에 추가 및 삭제 파일을 쓸 수있는 권한이 있습니다.
three
기본 권한은 경로에 충분합니다.
디렉토리가 이미있는 경우 :
mkdir -m 777 /path/to/your/dir
디렉토리가 존재하지 않고 상위 디렉토리를 작성하려는 경우 :
mkdir -m 777 -p /parent/dirs/to/create/your/dir
find /your/dirs -type d -exec chmod 755 {} \;
위의 답변을 확장하고 개선하기 위해 :
먼저 GNU Coreutils 8.26에 대한 mkdir 맨 페이지를 확인합니다. '-m'및 '-p'옵션에 대한 정보를 제공합니다 (각각 --mode = MODE 및 --parents로 제공 될 수도 있음). ) :
... set [s] 파일 모드 (chmod에서와 같이), a = rwx가 아님-umask
... 존재하는 경우 오류 없음, 필요에 따라 상위 디렉토리 만들기
제 의견으로는 그 진술이 모호하고 불분명합니다. 그러나 기본적으로 "chmod 숫자 표기법"(8 진수)으로 지정된 권한으로 디렉토리를 만들거나 "다른 방법"으로 이동하여 umask를 사용할 수 있다고 말합니다.
참고 : umask 값이 실제로는 그대로 들리기 때문에 "다른 방법"이라고 말합니다. 즉 , chmod의 8 진수 표기법처럼 권한을 "부여"하는 대신에 권한을 숨기거나 제거 하는 마스크 입니다.
쉘 내장 명령 umask
을 실행 하여 3 자리 umask가 무엇인지 확인할 수 있습니다. 저에게는 022
. 즉 mkdir yodirectory
, 지정된 폴더 (예 : mahome)에서 실행 하면 다음 stat
과 유사한 출력이 표시됩니다.
755 richard:richard /mahome/yodirectory
# permissions user:group what I just made (yodirectory),
# (owner,group,others--in that order) where I made it (i.e. in mahome)
#
이제 이러한 8 진 권한에 대해 조금 더 추가하겠습니다. 디렉토리를 만들 때, "your system"은 기본 디렉토리 perms '[ 새 디렉토리에 적용 (값은 777이어야 함)]를 취하고 yo (u) mask를 쳐서 해당 perms의 일부를 효과적으로 숨 깁니다. 내 umask는 022입니다. 이제 777에서 022를 "빼면"(기술적으로 빼는 것이 항상 정확하지는 않습니다. 실제로는 파마를 끄거나 마스킹 하는 것입니다.) 명시된대로 755를 얻습니다. ) 이전.
우리의 경우에는 stickybits, setuids 또는 setgids를 원하지 않았거나 언급하지 않았기 때문에 3 자리 8 진수 앞의 '0'을 생략 할 수 있습니다 (따라서 4 자리 일 필요가 없습니다). (당신은 그것을 조사하고 싶을 수도 있습니다, btw, 그들은 당신이 777을 가고 있기 때문에 유용 할 것입니다). 즉, 0777은 777을 의미합니다 (또는 이와 동일합니다) (그러나 777은 반드시 0777과 동일하지는 않습니다. 777은 setuids, setgids 등이 아닌 권한 만 지정하기 때문입니다.)
이제 이것을 더 넓은 의미로 질문에 적용하기 위해 (이미) 몇 가지 옵션이 있습니다. 위의 모든 답변이 작동합니다 (적어도 내 coreutils에 따르면). 그러나 한 번에 777 권한으로 하위 디렉터리 (중첩 된 디렉터리) 를 만들려는 경우 위의 솔루션에 문제가 발생할 수 있습니다 (또는 그럴 가능성이 높습니다) . 특히 umask가 022 인 mahome에서 다음을 수행하는 경우 :
mkdir -m 777 -p yodirectory/yostuff/mastuffinyostuff
# OR (you can swap 777 for 0777 if you so desire, outcome will be the same)
install -d -m 777 -p yodirectory/yostuff/mastuffinyostuff
나는 파마 얻을 것이다 755
모두를 yodirectory
하고 yostuff
에서만, 777
대한 파마 mastuffinyostuff
. 이 나타납니다 그래서 umask
의가에 때렸다 모든 것입니다 yodirectory
및 yostuff
이 우리가 서브 쉘을 사용할 수 있습니다 해결하기 위해 ... :
( umask 000 && mkdir -p yodirectory/yostuff/mastuffinyostuff )
그리고 그게 다야. yostuff, mastuffinyostuff 및 yodirectory에 대한 777 perms.
하지 마십시오 : mkdir -m 777 -p a/b/c
권한 만 설정하므로777
마지막 디렉토리에 대한 c; a 및 b는 umask의 기본 권한으로 생성됩니다.
권한이있는 새 디렉토리를 만드는 대신 umask를 재정의하는 서브 쉘에서 777
실행 mkdir -p
합니다.
(umask u=rwx,g=rwx,o=rwx && mkdir -p a/b/c)
a, b 및 c가 이미 존재하는 경우 권한이 변경되지 않습니다.
mkdir temp; chmod 777 temp
한 줄입니다. 'temp'를 변수로 만들고 bash 명령으로 저장할 수 있습니다. 이것이 당신이하려는 것입니까?