Tutoriel Linux

리눅스에서 올바른 권한으로 폴더 만들기

Débutant2 min de lecture

잘못된 위치에 생성되었거나 권한이 너무 허용된 폴더는 나중에 종종 문제를 일으킵니다. mkdir 명령이면 시작할 수 있지만, 소유자, 그룹 및 권한을 확인하는 것을 대체할 수는 없습니다.

개인 디렉토리의 경우 사용자 폴더에 생성하십시오. 공유 디렉토리나 서비스에서 사용되는 경우 먼저 그 안에 쓰기를 해야 하는 계정을 식별하십시오. chmod 777는 때때로 실제 소유자 문제를 숨기고 모든 로컬 계정이 내용을 수정할 수 있게 놔둡니다.

올바른 위치에 폴더를 생성하십시오

현재 디렉토리에서 다음 명령은 하나의 디렉토리를 생성합니다:

mkdir sauvegardes

절대 경로를 사용하면 폴더가 정확히 어디에 생성될지를 알 수 있습니다. 부모 폴더가 누락될 수 있다면 -p를 추가하십시오:

mkdir -p ~/projets/site-test/logs

-p가 없으면, mkdir는 ~/projets/site-test가 존재하지 않으면 멈춥니다. 이 옵션은 마지막 폴더가 이미 존재할 때도 오류를 피합니다. 잘못된 경로를 올바른 경로로 변환하지는 않으므로, 명령을 실행하기 전에 pwd로 확인하십시오.

귀하의 계정에 속해야 할 공간을 준비하려면 개인 디렉토리 내에 머무르십시오. sudo를 피할 수 있으므로, 그러면 root에 의해 생성된 폴더를 귀하의 사용자가 더 이상 채울 수 없게 됩니다:

mkdir -p ~/archives/2026
stat -c '%A %U:%G %n' ~/archives ~/archives/2026

용도에 맞는 권한 선택하기

디렉토리에서 x 권한이 있어야 침입할 수 있습니다. 디렉토리에서 r은 이름을 나열할 수 있도록 하고 w는 항목을 추가, 이름 바꾸기 또는 삭제할 수 있게 합니다. 실제로 적용되는 권한은 귀하의 umask에도 의존합니다.

개인용 디렉토리를 만들려면 명시적인 모드로 생성하십시오:

mkdir -m 700 ~/archives-privees
stat -c '%A %a %U:%G %n' ~/archives-privees

모드 700은 소유자에게 접근을 허용하고 다른 사용자에게는 디렉토리를 닫습니다. 여러 사용자가 읽고 쓸 수 있는 디렉토리에 대해서는 잘 알려진 그룹과 모드 2770을 선택하십시오:

sudo install -d -o alice -g equipe-web -m 2770 /srv/equipe-web
stat -c '%A %a %U:%G %n' /srv/equipe-web

처음의 2는 디렉토리의 setgid 비트를 활성화합니다. 새 파일 및 하위 디렉토리는 equipe-web 그룹을 상속받습니다. 이 솔루션은 서버의 모든 계정에 쓰기 권한을 부여하지 않도록 합니다. 예상되는 회원이 이 그룹에 잘 있는지 id 사용자명으로 확인하십시오.

mkdir -m 777는 모든 사람이 수정할 수 있는 디렉토리를 생성하며, 그 다음 umask가 이 모드를 감소시킬 수 있습니다. Permission denied 문제를 해결하기 위해 사용하지 마십시오. 대신 전체 경로, 소유자 및 각 부모 디렉토리의 권한을 읽으십시오:

namei -l /srv/equipe-web
ls -ld /srv /srv/equipe-web
id

서비스에 폴더를 맡기기 전에 확인하십시오

www-data, postgres 또는 전용 계정으로 실행되는 서비스는 귀하의 세션과 동일한 권한을 볼 수 없습니다. 변경하기 전에 그 사용자에게 문의하십시오. systemd의 경우 이 명령은 유닛에 의해 구성된 계정을 제공합니다:

systemctl show mon-service 
  -p User -p Group -p DynamicUser

그런 다음 예상되는 소유자로 폴더를 생성하고, 해당 계정에서 파일을 테스트하십시오. 테스트 머신에서는:

sudo install -d -o www-data -g www-data -m 750 /var/lib/mon-service
sudo -u www-data touch /var/lib/mon-service/test-ecriture
ls -l /var/lib/mon-service/test-ecriture
sudo rm /var/lib/mon-service/test-ecriture

이 확인은 서비스 계정이 실제로 쓸 수 있는지 알려줍니다. 실패할 경우, 임의로 권한을 추가하지 마십시오. 먼저 소유자, 그룹, 가능한 ACL을 getfacl로 확인하고 부모 폴더의 권한을 확인하십시오.

  • mkdir -p를 사용하여 부모가 누락될 수 있는 경로를 생성하십시오.
  • 생성 후 즉시 stat 또는 ls -ld를 사용하십시오.
  • 공유 디렉토리에 대해서는 서비스 시작 전에 소유자, 그룹 및 모드를 설정하십시오.
  • chmod는 차단된 계정을 식별한 후, 목표가 되는 수정에 한해서만 사용하십시오.

Linux에서 setfacl에 대한 가이드가 추가 접근이 필요한 단일 사용자의 경우 도움을 줍니다. 기존의 계층 구조에서 권한을 수정해야 한다면 chmod 재귀적 절차를 사용하는 것이 좋습니다: 동일한 모드로 모든 파일과 폴더를 변경하면 디렉토리의 실행 권한이 쉽게 깨질 수 있습니다.

mkdir(1) 매뉴얼 페이지는 옵션을 자세히 설명하며, mkdir(2)는 umask의 효과와 그룹의 상속을 설명합니다. 서비스를 사용할 폴더를 생성하기 전에 이 두 가지 점을 유념하십시오.

리눅스 관리자가 열린 자물쇠로 서버 선반에 파란색 폴더를 정리하고 있는 모습
폴더의 소유자, 그룹 및 권한은 그 사용에 맞아야 합니다.