Linux chmod 및 chown – Linux에서 파일 권한 및 소유권을 변경하는 방법
Linux는 다중 사용자 OS이므로 한 번에 여러 사용자를 지원합니다.
많은 사람들이 동시에 시스템에 액세스할 수 있고 일부 리소스는 공유되므로 Linux는 소유권과 권한을 통해 액세스를 제어합니다.
리눅스 파일 소유권
Linux에는 세 가지 유형의 소유자가 있습니다. user
, group
그리고 others
.
리눅스 사용자
사용자는 파일의 기본 소유자이자 작성자입니다. 따라서 이 사용자를 소유자라고도 합니다.
리눅스 그룹
사용자 그룹은 사용자 모음입니다. 그룹에 속한 사용자는 파일/폴더에 액세스할 수 있는 동일한 Linux 그룹 권한을 갖습니다.
그룹을 사용하여 권한을 개별적으로 할당하는 대신 일괄적으로 할당할 수 있습니다. 사용자는 둘 이상의 그룹에도 속할 수 있습니다.
다른
사용자 또는 그룹 클래스의 일부가 아닌 모든 사용자는 이 클래스에 속합니다.
Linux 파일 권한
파일 권한은 세 가지 범주로 나뉩니다. read
, write
그리고 execute
.
읽기 권한
일반 파일의 경우 읽기 권한을 통해 사용자는 파일을 열고 읽을 수만 있습니다. 사용자는 파일을 수정할 수 없습니다.
디렉토리의 경우와 유사하게 읽기 권한을 사용하면 디렉토리를 수정하지 않고도 디렉토리 내용을 나열할 수 있습니다.
쓰기 권한
파일에 쓰기 권한이 있는 경우 사용자는 파일을 수정(편집, 삭제)하고 저장할 수 있습니다.
폴더의 경우 쓰기 권한을 통해 사용자는 내용을 수정하고(내부 파일 생성, 삭제 및 이름 변경) 쓰기 권한이 있는 파일의 내용을 수정할 수 있습니다.
실행 권한
파일의 경우 실행 권한을 통해 사용자는 실행 가능한 스크립트를 실행할 수 있습니다. 디렉터리의 경우 사용자는 디렉터리에 액세스할 수 있으며 디렉터리의 파일에 대한 세부 정보에 액세스할 수 있습니다.
다음은 사용자, 그룹 및 기타에 대한 권한의 상징적 표현입니다.

긴 목록(ls -l
) Linux 터미널에서.

위의 출력에서, d
디렉토리를 나타내고-
일반 파일을 나타냅니다.

Linux에서 권한을 변경하는 방법 chmod
명령
이제 소유권 및 권한의 기본 사항을 알았으므로 다음을 사용하여 권한을 수정하는 방법을 살펴보겠습니다. chmod
명령.
구문 chmod
:
chmod permissions filename
어디에,
permissions
읽기, 쓰기, 실행 또는 이들의 조합이 가능합니다.filename
권한을 변경해야 하는 파일의 이름입니다. 이 매개변수는 파일이 대량으로 권한을 변경할 경우 목록이 될 수도 있습니다.
두 가지 모드를 사용하여 권한을 변경할 수 있습니다.
- 심볼릭 모드: 이 방법은 다음과 같은 기호를 사용합니다.
u
,g
,o
사용자, 그룹 및 기타를 나타냅니다. 권한은 다음과 같이 표시됩니다.r, w, x
읽기 쓰기 및 실행을 위해 각각. +, - 및 =를 사용하여 권한을 수정할 수 있습니다. - 절대 모드: 이 메소드는 0-7 범위의 3자리 8진수로 권한을 나타냅니다.
이제 자세히 살펴보겠습니다.
기호 모드를 사용하여 권한을 변경하는 방법
아래 표에는 사용자 표현이 요약되어 있습니다.
사용자 표현 | 설명 |
---|---|
유 | 사용자/소유자 |
g | 그룹 |
영형 | 다른 |
수학 연산자를 사용하여 권한을 추가, 제거 및 할당할 수 있습니다. 아래 표는 요약을 보여줍니다.
운영자 | 설명 |
---|---|
+ | 파일 또는 디렉토리에 대한 권한을 추가합니다. |
– | 권한을 제거합니다 |
= | 이전에 존재하지 않는 경우 권한을 설정합니다. 또한 이전에 설정된 경우 권한을 재정의합니다. |
예시:
스크립트가 있고 파일 소유자가 스크립트를 실행 가능하게 만들고 싶다고 가정해 보겠습니다. zaira
.
현재 파일 권한은 다음과 같습니다.

다음과 같이 권한을 분할해 보겠습니다.

실행 권한을 추가하려면(x
) 소유자(u
) 기호 모드를 사용하여 아래 명령을 사용할 수 있습니다.
chmod u+x mymotd.sh
산출:
이제 소유자에 대한 실행 권한이 추가되었음을 알 수 있습니다. zaira
.

기호 방법을 통해 권한을 변경하는 추가 예:
- 풀이
read
그리고write
허가group
그리고others
:chmod go-rw
. - 풀이
read
권한others
:chmod o-r
. - 할당
write
허가group
기존 권한 무시:chmod g=w
.
절대 모드를 사용하여 권한을 변경하는 방법
절대 모드는 숫자를 사용하여 권한을 나타내고 수학 연산자를 사용하여 수정합니다.
아래 표는 관련 권한을 할당하는 방법을 보여줍니다.
허가 | 권한 제공 |
---|---|
읽다 | 4를 더하다 |
쓰다 | 2를 더하다 |
실행하다 | 1을 더하다 |
빼기를 사용하여 권한을 취소할 수 있습니다. 아래 표는 관련 권한을 제거하는 방법을 보여줍니다.
허가 | 권한 취소 |
---|---|
읽다 | 4 빼기 |
쓰다 | 빼다 2 |
실행하다 | 1 빼기 |
예시:
- 세트
read
(4를 더하다)user
,read
(4를 더하다) 그리고execute
(1 추가) 그룹에 대해서만execute
(1 추가) 다른 사람을 위해.
chmod 451 file-name
이것이 우리가 계산을 수행한 방법입니다:

와 동일하니 참고하세요 r--r-x--x
.
- 제거하다
execution
권리other
그리고group
.
실행을 제거하려면 other
그리고 group
마지막 2 옥텟의 실행 부분에서 1을 뺍니다.

- 양수인
read
,write
그리고execute
에게user
,read
그리고execute
에게group
그리고 만read
다른 사람에게.
이것은 다음과 같을 것입니다. rwxr-xr--
.

사용하여 소유권을 변경하는 방법 chown
명령
다음으로 파일의 소유권을 변경하는 방법에 대해 알아보겠습니다. 다음을 사용하여 파일 또는 폴더의 소유권을 변경할 수 있습니다. chown
명령. 경우에 따라 소유권을 변경하려면 다음이 필요합니다. sudo
권한.
구문 chown
:
chown user filename
사용자 소유권을 변경하는 방법 chown
사용자로부터 소유권을 이전하자 zaira
사용자에게 news
.
chown news mymotd.sh

소유권 변경 명령: sudo chown news mymotd.sh
산출:

사용자와 그룹 소유권을 동시에 변경하는 방법
우리는 또한 사용할 수 있습니다 chown
사용자와 그룹을 동시에 변경하려면
chown user:group filename
디렉토리 소유권을 변경하는 방법
디렉토리의 내용에 대한 소유권을 재귀적으로 변경할 수 있습니다. 아래 예는 의 소유권을 변경합니다. /opt/script
사용자를 허용하는 폴더 admin
.
chown -R admin /opt/script
그룹 소유권을 변경하는 방법
그룹 소유자만 변경해야 하는 경우에는 다음을 사용할 수 있습니다. chown
그룹 이름 앞에 콜론을 사용하여 :
chown :admins /opt/script
Linux 권한 안내 연습
지금까지 권한, 소유권 및 변경 방법을 살펴보았습니다. 이제 우리는 가이드 연습을 통해 학습을 강화할 것입니다.
목표: 그룹을 만들고 해당 구성원에게 관련 권한을 할당합니다. 승인되지 않은 사용자로부터 액세스하여 액세스를 확인합니다.
일: 라는 그룹을 만듭니다. dev-team
여기에 두 명의 구성원(John과 Bob)을 추가합니다. 폴더 만들기 /home/dev-team
소유권을 그룹으로 변경 dev-team
. 두 사용자가 dev-team
그룹 가지고 읽다 그리고 쓰다 폴더에 대한 액세스.
다른 그룹 만들기 project-manager
사용자 추가 Fatima
그것에. 폴더인지 확인 /home/dev-team
에 의해 액세스할 수 있습니다. Fatima
.
문제의 시각화
다음과 같이 문제를 시각화할 수 있습니다.

1단계: 루트 사용자로 전환합니다.
새 사용자 및 그룹을 생성할 수 있는 권한을 갖도록 루트 사용자로 전환합니다.
힌트 표시
사용 sudo
플래그가 있는 명령 i
.
루트 비밀번호가 있으면 그 비밀번호로도 로그인할 수 있습니다.
솔루션 표시
입력하다 sudo -i
루트 사용자로 전환합니다.
입력하다 whoami
루트 사용자인지 확인하려면 다음을 수행하십시오.
당신이 가지고 있지 않은 경우 root
액세스, 추가와 함께 명령 사용 sudo
.
2단계: 그룹 만들기 dev-team
힌트 표시
사용 groupadd
명령.
통사론: groupadd group-name
솔루션 표시
입력하다 groupadd dev-team
만들기 dev-team
그룹
확인: cat /etc/group | grep dev-team
3단계: 두 명의 새 사용자 John과 Bob을 생성하고 이들을 dev-team
그룹
힌트 표시
명령 사용 useradd
.
useradd
새 사용자를 만들고 지정된 그룹에 추가합니다.
통사론: useradd -G groupname username
어디에 -G
그룹을 지정합니다.
솔루션 표시
useradd -G dev-team John
useradd -G dev-team Bob
확인: cat /etc/group | grep dev-team
4단계: John 및 Bob 사용자의 비밀번호 제공
힌트 표시
명령 사용 passwd
passwd
사용자에 대한 암호를 생성합니다.
통사론: passwd username
솔루션 표시
passwd John
passwd Bob
5단계: /home에 디렉토리를 만들고 이름을 지정합니다. dev-team
힌트 표시
명령 사용 mkdir
mkdir
디렉토리를 생성합니다.
통사론: mkdir directory-name
솔루션 표시
mkdir /home/dev-team
확인:

6단계: 폴더의 그룹 소유권 변경 dev-team
그룹에 dev-team
힌트 표시
명령 사용 chown
통사론: chown :group-name folder
솔루션 표시
chown :dev-team /home/dev-team/

7단계: 폴더 권한 확인 dev-team
그룹 구성원이 파일을 만들고 삭제할 수 있습니다.
힌트 표시
명령 사용 chmod
쓰기 권한은 사용자와 그룹이 파일을 만들고 삭제할 수 있도록 합니다.
통사론: chmod permissions folder
솔루션 표시
chmod g+w /home/dev-team/

8단계: '기타'가 다음 파일에 액세스할 수 없는지 확인합니다. dev-team
폴더.
힌트 표시
명령 사용 chmod
'기타'가 있는 경우 읽기, 쓰기, 실행 권한을 제거합니다.
통사론: chmod permissions folder
솔루션 표시
chmod o-rx dev-team

9단계: 종료 root
세션 및 전환 John
힌트 표시
명령 사용 exit
루트 사용자를 로그아웃합니다.
사용 su
사용자를 전환합니다.
통사론: su - user
현재 사용자를 확인하려면 다음 명령을 사용하십시오. whoami
.
솔루션 표시
exit
su - John
명령으로 확인 whoami
.
10단계: 폴더로 이동: /home/dev-team
힌트 표시
명령 사용 cd
폴더를 전환합니다.
통사론: cd /path/to/folder
현재 경로 확인 pwd
.
솔루션 표시
cd /home/dev-team
11단계: 폴더에 빈 파일을 만듭니다. /home/dev-team
힌트 표시
명령 사용 touch
빈 파일을 생성합니다.
통사론: touch filename
솔루션 표시
touch john-file.txt
확인: ls -lrt

12단계: 생성된 파일의 그룹 소유권을 다음으로 변경 dev-team
확인합니다.
힌트 표시
명령 사용 chown
소유권을 변경합니다.
통사론: chown :group file-name
솔루션 표시
chown :dev-team john-file.txt
그룹 소유권이 수정되면 그룹의 모든 구성원이 이 파일에 액세스할 수 있습니다.
확인 ls -lrt
13단계: 쉘을 종료하고 사용자로 전환 Bob
힌트 표시
명령 사용 exit
터미널을 종료합니다.
사용 su
사용자를 전환합니다.
통사론: su - user
현재 사용자를 확인하려면 다음 명령을 사용하십시오. whoami
.
솔루션 표시
exit
su - Bob
명령으로 현재 사용자 확인 whoami
.
14단계: 경로 탐색 /home/dev-team
힌트 표시
명령 사용 cd
폴더를 전환합니다.
통사론: cd /path/to/folder
현재 경로 확인 pwd
.
솔루션 표시
cd /home/dev-team
15단계: 알아보기 Bob's
액세스 권한 john-file.txt
힌트 표시
명령 사용 ls -l
긴 목록을 위해.
통사론: ls -l | grep file-name
그룹이 있습니까? rw-
권한?
솔루션 표시
ls -l | grep john-file.txt
16단계: 파일 수정 john-file.txt
로 로그인한 동안 Bob
힌트 표시
명령 사용 echo
파일에 일부 텍스트를 추가합니다.
통사론: echo "Some text" >>file-name
이렇게 하면 인용된 텍스트를 파일의 끝으로 리디렉션합니다.
솔루션 표시
echo "This is Bob's comment" > john-file.txt
모든 권한이 올바르게 설정되어 있으면 Bob
이 파일을 편집하고 저장할 수 있습니다. 그렇지 않으면 다음과 같은 오류가 발생합니다. Permission denied
.
확인 cat john-file.txt

17단계: 다른 그룹 만들기 project-manager
그리고 구성원을 지정 Fatima
그것에
힌트 표시
명령 사용 groupadd
새 그룹을 추가합니다.
통사론: groupadd group-name
명령으로 새 사용자 만들기 useradd
.
플래그 사용 -G
사용자를 할당합니다.
솔루션 표시
groupadd project-manager
useradd -G project-manager Fatima
passwd Fatima
18단계: 폴더로 이동 /home/dev-team
확인하고 Fatima
액세스할 수 있습니다
힌트 표시
사용 cd
로 이동하다 /home/dev-team
.
솔루션 표시
cd /home/dev-team
.
다음 오류가 발생합니다.

이 때문입니다, others
폴더에 대한 액세스 권한이 없습니다. dev-team
.
우리가 기억한다면, 아래의 권리는 dev-team
폴더.

마무리
권한 및 소유권은 다중 사용자 운영 체제에서 보안을 적용하는 데 유용한 개념입니다. 권한 및 소유권 변경에 대해 자세히 알아볼 수 있기를 바랍니다.
이 튜토리얼에서 배운 것 중 가장 좋아하는 것은 무엇입니까? 에 알려주세요 트위터!
여기에서 내 다른 게시물을 읽을 수도 있습니다.
덕분에 톰 몬들록 가이드 운동에 대한 그의 도움을 위해.
'Coding' 카테고리의 다른 글
JavaScript의 브리지 디자인 패턴하는 방법 (0) | 2022.04.29 |
---|---|
동형 암호화에 대해 알아보자 (0) | 2022.04.28 |
CSS 변수 정의 – CSS 변수란 무엇이며 사용하는 방법에 대해 (0) | 2022.04.26 |
Jetpack Compose를 사용하여 아름다운 스크린샷 자동화하는 방법 (0) | 2022.04.22 |
Extern – C 및 C++ Extern 키워드 함수 예제 및 공부 (0) | 2022.04.21 |
댓글