[linux] 디렉토리를 생성하고 단일 명령으로 권한을 부여하는 방법

Linux에서 단일 명령으로 디렉토리를 만들고 권한을 부여하는 방법은 무엇입니까?

전체 권한을 가진 많은 폴더를 만들어야합니다 777.

명령어

mkdir path/foldername
chmod 777 path/foldername

두 가지 명령을 만들고 권한을 부여하는 것을 좋아하지 않습니다. 단일 명령으로이 작업을 수행 할 수 있습니까?



답변

mkdir 의 man 페이지 에 따르면 …

mkdir -m 777 dirname


답변

install -d -m 0777 /your/dir

당신이 원하는 것을 줄 것입니다. 모든 사용자는 해당 디렉토리에 추가 및 삭제 파일을 쓸 수있는 권한이 있습니다.


답변

디렉토리가 이미있는 경우 :

mkdir -m 777 /path/to/your/dir

디렉토리가 존재하지 않고 상위 디렉토리를 작성하려는 경우 :

mkdir -m 777 -p /parent/dirs/to/create/your/dir


답변

IMO, install이러한 상황 에서는 명령 을 사용하는 것이 좋습니다 . systemd-journald재부팅 후에도 지속 되도록 노력했습니다 .

install -d  -g systemd-journal -m 2755 -v /var/log/journal


답변

다음과 같이 간단한 쉘 스크립트를 작성할 수 있습니다.

#!/bin/bash
mkdir "$1"
chmod 777 "$1"

일단 저장되고 실행 가능 플래그가 활성화되면 mkdir 및 chmod 대신 실행할 수 있습니다.

./scriptname path/foldername

그러나 alex의 대답 은 세 개가 아닌 하나의 프로세스를 생성하기 때문에 훨씬 좋습니다. -m옵션 에 대해 몰랐습니다 .


답변

위의 답변을 확장하고 개선하기 위해 :

먼저 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의가에 때렸다 모든 것입니다 yodirectoryyostuff이 우리가 서브 쉘을 사용할 수 있습니다 해결하기 위해 … :

( umask 000 && mkdir -p yodirectory/yostuff/mastuffinyostuff )

그리고 그게 다야. yostuff, mastuffinyostuff 및 yodirectory에 대한 777 perms.


답변

다음 명령을 사용하여 디렉토리를 생성하고 동시에 권한을 부여 할 수 있습니다.

mkdir -m777 path/foldername