본문 바로가기

CentOS/Study

[Study21]Linux 파일 속성 이해 및 관리 - chown

반응형

파일의 속성 정보 변경 명령어

변경할 파일의 속성 정보를 변경하기 위해서는 "chmod" 명령어를 사용합니다.

이 명령어는 파일의 소유자, 그룹, 기타 사용자에 대한 읽기, 쓰기, 실행 권한을 변경할 수 있습니다.

예를 들어, "chmod 777 file.txt" 명령은 파일.txt의 모든 사용자에 대한 읽기, 쓰기, 실행 권한을 부여합니다.

이러한 파일 권한 변경은 시스템 보안에 매우 중요하기 때문에, 반드시 필요한 경우에만 사용해야 합니다.

 

[명령어 SET]

많은 명령어들이 ls, rm, ch, mk 로 시작하는 경우가 많다.
ch -> 변경
ls -> 출력, 확인
rm -> 삭제
mk -> 생성

다양한 명령어들 중에서도 ls, rm, ch, mk로 시작하는 명령어들이 상당수를 차지합니다.

이들 명령어는 각각 출력, 확인, 삭제, 생성을 의미합니다.

이 중에서도 ch 명령어는 특히 유용합니다.

이 명령어를 사용하면 파일이나 디렉토리의 이름을 변경할 수 있습니다.

또한 ls 명령어는 파일이나 디렉토리의 내용을 출력하여 확인할 수 있습니다.

rm 명령어는 파일이나 디렉토리를 삭제할 수 있습니다.

마지막으로 mk 명령어는 새로운 파일이나 디렉토리를 생성할 수 있습니다.

리눅스 환경에서 파일과 디렉터리를 다루는 데에는 다양한 명령어들이 존재합니다.

이 중에서도 파일의 속성 정보를 변경하는 명령어들은 chown, chgrp, chmod, umask와 같은 명령어들이 있습니다.

이러한 명령어들은 파일에 대한 정보로 소유권에 대한 기록을 담고 있습니다.

단, 소유권에 대한 권한 설정은 속성 정보가 아닌 사용자와 그룹에게 권한을 부여해 주는 것이므로 파일의 속성정보는 권한을 뺀 나머지의 정보가 모두 파일 속성에 해당하는 것입니다.

파일의 속성 정보 변경 명령어에 대한 설명은 아래와 같습니다.

ls 명령어는 파일이나 디렉토리의 내용을 출력하여 확인할 수 있습니다.

-l 옵션을 사용하면 자세한 정보를 확인할 수 있습니다. 아래의 코드는 file1에 대한 자세한 정보를 출력한 결과입니다.

# ls -l file1
-rw-r--r-- 1 root root 1945  6월 11 14:13 file1

 

위의 출력은 아래와 같은 정보를 담고 있습니다.

 

속성 정보
권한 정보 rw-r--r--
하드링크 개수 1
소유자 root
그룹 root
파일 크기 1945 바이트
최종 수정 시간 6월 11 14:13
파일 이름 file1

위의 출력에서 권한 정보 -rw-r--r-- 은 파일에 대한 권한을 설정할 때 사용하는 chmod 명령어를 나타냅니다.

이 권한 정보는 총 10자리로 구성되어 있으며, 첫 번째 자리는 파일 타입을 나타내고, 2~4번째 자리는 소유자에 대한 권한 정보, 5~7번째 자리는 그룹에 대한 권한 정보, 8~10번째 자리는 기타 사용자에 대한 권한 정보를 나타냅니다.

위의 출력에서 파일 타입은 - 로 나타나 있으며, 이는 일반 파일을 나타냅니다.

만약 디렉터리라면 d 로 나타납니다.

chown 명령어는 파일이나 디렉터리의 소유자를 변경하는 명령어입니다.

chgrp 명령어는 파일이나 디렉터리의 그룹을 변경하는 명령어입니다.

chmod 명령어는 파일이나 디렉터리에 대한 권한을 변경하는 명령어입니다.

touch -t 명령어는 파일의 최종 수정 시간을 변경하는 명령어입니다.

mv 명령어는 파일이나 디렉터리의 이름을 변경하는 명령어입니다.

 

chown 명령어

파일의 소유권을 변경하기 위해 Unix 계열 시스템에서 사용하는 chown 명령어는 파일 소유자를 일반적으로 파일을 만든 사용자로 설정합니다.

하지만 슈퍼 사용자 권한을 가진 사용자는 다른 사용자의 파일 소유권을 변경할 수 있습니다.

chown 명령어를 사용하면 파일 소유권 뿐만 아니라 파일 그룹도 함께 변경할 수 있습니다.

이는 일반 사용자가 파일 그룹을 변경할 수 없기 때문입니다.

파일 그룹을 변경하려면 chgrp 명령어를 사용해야 합니다.

또한, chown 명령어는 -R 옵션을 사용하여 디렉토리와 그 하위 파일들의 소유권을 변경할 수 있습니다.

그러나 이 작업은 많은 파일을 변경해야 하기 때문에 시간이 오래 걸릴 수 있습니다.

이 경우, find 명령어와 for문을 사용하여 작업을 수행하는 것이 권장됩니다.

chown 명령어를 사용할 때는 주의해야 할 점이 있습니다.

많은 파일을 변경하려는 경우, sort 작업이 들어가게 됩니다.

이로 인해 오류가 발생할 수 있으므로, 해당 작업을 수행하기 전에 백업을 권장합니다.

그리고 백업을 하는 것만으로는 충분하지 않습니다.

백업된 파일과 파일 시스템 사이의 차이점을 확인하고, 문제가 발생하지 않도록 주의해야 합니다.

아래는 파일 소유자가 root, 파일 그룹이 root인 file1의 상세 정보입니다.

# ls -l file1
-rw-r--r-- 1 root root 0 Jan 10 12:43 file1

 

[명령어 형식]

# 파일 소유권을 user01으로 변경
chown user01 file1

# 파일 소유권을 user01과 그룹 other으로 변경
chown user01:other file1

# 파일1의 그룹 소유권을 other로 변경
chown .other file1

# dir1과 그 하위 디렉토리와 파일들의 소유권을 user01으로 변경
chown -R user01 dir1

# dir1과 그 하위 디렉토리와 파일들의 소유권을 user01과 그룹 other로 변경
chown -R user01:other dir1

파일이나 디렉토리의 소유권을 변경하기 위해서는 chown 명령어를 사용합니다. chown 명령어는 두 개의 인자를 받는데, 첫 번째는 사용자이고, 두 번째는 파일이나 디렉토리입니다. 만약 그룹을 포함시키고 싶다면, 사용자 다음에 콜론(:)을 넣고 그룹을 입력하면 됩니다. 디렉토리의 내용물까지 소유권을 변경하고 싶다면, 사용자/그룹 앞에 -R 옵션을 붙여주면 됩니다.

 

[명령어 옵션]

옵션 설명
-c 바뀌어지는 파일들에 대해서만 자세하게 보여준다.
-f 바뀌어 지지 않는 파일들에 대해서 오류 메시지를 보여주지 않는다.
-v 작업 상태를 자세히 보여준다.
-R 경로와 그 하위 파일들 모두를 바꾼다.

 

chown 명령어 실습

# cd /test ; rm –rf /test/*

위 명령어는 디렉토리를 /test로 변경하고 해당 디렉토리의 모든 파일을 재귀적으로 제거합니다.

 

# touch file1

위 명령어는 새로운 파일인 file1을 생성합니다.

 

# ls –l file1

위 명령어는 file1의 세부 정보를 나열합니다.

 

-rw-r--r-- 1 root root 0 Feb 14 10:41 file1

출력 결과를 보면, file1이 0 바이트로 생성되었으며 소유자는 root임을 보여줍니다.

 

# chown fedora file1

위 명령어는 file1의 소유자를 root에서 fedora로 변경합니다.

 

# ls –l file1

위 명령어는 file1의 세부 정보를 나열합니다.

 

-rw-r--r-- 1 fedora root 0 Feb 14 10:41 file1

출력 결과를 보면, file1의 소유자가 fedora로 변경되었음을 보여줍니다.

 

# chown .user01 file1

위 명령어는 file1의 그룹 소유권을 user01으로 변경합니다.

 

# ls –l file1

위 명령어는 file1의 세부 정보를 나열합니다.

 

-rw-r--r-- 1 fedora user01 0 Feb 14 10:41 file1

출력 결과를 보면, file1의 그룹 소유권이 user01으로 변경되었음을 보여줍니다.

 

# chown root:root file1

위 명령어는 file1의 소유자를 root로, 그룹 소유권을 root로 변경합니다.

 

# ls –l file1

위 명령어는 file1의 세부 정보를 나열합니다.

 

-rw-r--r-- 1 root root 0 Feb 14 10:41 file1

출력 결과를 보면, file1의 소유자와 그룹 소유권이 root로 변경되었음을 보여줍니다.

 

그룹 생성 여부 확인

# cat /etc/group | grep root         /* user01라는 그룹이 있는지 파일 안에서 검색 */
root:x:0:

# cat /etc/group | grep root          /* root 라는 그룹 확인 */
root:x:0:      /* root 그룹 */         /* root 사용자가 소속된 그룹 */

RHEL7 버전에서는 root:x:0: 하나의 그룹만 존재합니다.

 

useradd 명령어의 수행

리눅스 시스템에서 작업할 때, 그룹 개념을 이해하는 것이 중요합니다.

그룹을 사용하면 여러 사용자에 대한 일련의 권한을 한번에 할당하여 파일 및 디렉토리 접근을 쉽게 관리할 수 있습니다. 기본적으로 리눅스 사용자는 적어도 하나의 그룹에 속하며, 일반적으로 사용자 이름과 같은 이름의 그룹이 생성됩니다.

그러나 사용자 정의 그룹을 생성하고 사용자를 할당하는 것도 가능합니다.

위의 명령어들은 그룹을 관리하는 데 유용합니다.

cat 명령어는 파일에서 특정 사용자 또는 그룹이 존재하는지 확인하는 데 매우 유용하며, grep 명령어를 사용하여 파일에서 찾고자하는 사용자 또는 그룹을 쉽게 검색할 수 있습니다.

예를 들어 cat /etc/group | grep root 명령어는 그룹 파일에서 root 그룹이 존재하는지 확인합니다.

출력된 결과는 root 그룹이 존재하며 그룹 ID가 0(x:0:)인 것을 보여줍니다.

또한 root 사용자가 이 그룹에 속하게 됩니다.

RHEL7에서는 root:x:0:이라는 하나의 그룹만 존재한다는 것이 중요한 정보입니다.

이것은 root 사용자가 이 그룹에 속하게 되며, 이 그룹은 삭제하거나 수정할 수 없습니다.

그러나 필요에 따라 추가 그룹을 만들고 사용자를 할당하는 것도 가능합니다.

 

# 새로운 사용자 만들기
useradd user02
# 해당 사용자에게 암호 설정
passwd user02
# 해당 사용자가 속한 그룹 확인
grep user02 /etc/passwd
grep user02 /etc/group
# 각 사용자의 UID와 GID 확인
cat /etc/passwd UID
cat /etc/group GID

각 사용자의 UID와 GID를 확인함으로써 어떤 사용자가 어떤 그룹에 속하는지 쉽게 확인할 수 있습니다.

파일 소유권 변경도 리눅스에서 중요한 작업 중 하나입니다.

chown 명령어를 사용하면 파일 또는 디렉토리의 소유권을 특정 사용자 또는 그룹으로 변경할 수 있습니다.

그러나 많은 수의 파일을 처리할 때는 시간이 많이 걸리게 됩니다.

이러한 경우 find 명령어와 for 반복문을 사용하여 작업을보다 효율적으로 수행할 수 있습니다.

또한 chown 명령어를 사용할 때 알아야 할 사항이 있습니다.

예를 들어 대량의 파일의 소유권을 변경할 때는 오류가 발생할 수 있는 sort 작업이 포함되어 있습니다.

따라서 이러한 작업을 수행하기 전에 백업을 만드는 것이 좋습니다.

chown 명령어는 다양한 옵션을 사용하여 다양한 작업을 수행 할 수 있습니다.

예를 들어 -c 옵션은 변경된 파일에 대한 자세한 정보를 표시하고, -f 옵션은 변경되지 않은 파일에 대한 오류 메시지를 억제하는 데 사용됩니다.

-v 옵션은 작업 진행 상황을 표시하고, -R 옵션은 디렉토리와 해당 내용의 소유권을 변경하는 데 사용됩니다.

chown 명령어는 작업에 따라 다른 방식으로 사용할 수 있습니다.

예를 들어 chown user1 file1은 file1의 소유권을 user1으로 변경하고, chown user1.group1 file1은 file1의 소유권을 user1으로 변경하고 그룹을 group1으로 변경합니다.

그룹 이름 앞의 "."은 해당 그룹이 사용자의 보조 그룹임을 나타내며 주 그룹이 아님을 의미합니다.

파일 개별적으로 소유권을 변경하는 것 외에도, chown 명령어는 -R 옵션을 사용하여 디렉토리와 해당 모든 내용의 소유권을 변경할 수도 있습니다.

이것은 파일을 개별적으로 변경하지 않고 한번에 많은 수의 파일의 소유권을 변경해야 할 때 유용합니다.

그러나 많은 수의 파일의 소유권을 변경할 때는 오류가 발생할 수 있는 sort 작업이 포함되어 있으므로 작업을 수행하기 전에 백업을 만드는 것이 좋습니다.

요약하면, 그룹 개념을 이해하는 것은 리눅스 시스템에서 작업하는 중요한 부분입니다.

파일 및 디렉토리 접근을 쉽게 관리하려면 그룹을 사용하면 됩니다.

cat 명령어와 grep 명령어를 사용하여 파일에서 사용자와 그룹이 존재하는지 확인할 수 있으며, chown 명령어를 사용하여 파일 또는 디렉토리의 소유권을 변경할 수 있습니다.

각 사용자의 UID와 GID를 확인함으로써 어떤 사용자가 어떤 그룹에 속하는지 쉽게 확인할 수 있습니다.

또한 find 명령어와 for 반복문을 사용하여 대량의 파일을 효율적으로 처리할 수 있습니다.

더불어, chown 명령어의 다양한 옵션을 이용하면, 파일 및 디렉토리의 소유권을 유연하게 변경할 수 있습니다.

그러나 많은 수의 파일의 소유권을 변경할 때는 백업을 만들어 두는 것이 좋습니다.

 

chown -R 옵션 실습

(실습용 구조)

/test -- dir1 --+-- dir2 -- dir3
           |
           +-- file1
           |
           +-- file2

위는 쉘 스크립트 실습을 위한 구조로, /test 디렉토리 아래에 dir1 디렉토리를 비롯해 하위에 dir2 디렉토리와 그 하위에 dir3 디렉토리가 존재하며, 또한 /test dir1 아래에는 file1과 file2 파일이 존재합니다.

# cd /test ; rm –rf /test/*

# mkdir –p dir1/dir2/dir3
# touch dir1/file1
# touch dir1/file2

# ls –lR dir1      (# find . -ls)

리눅스 쉘 스크립트에서 chown 명령어를 사용해 파일 소유권을 변경하려면, 먼저 해당 파일이나 디렉토리가 존재해야 합니다.

그러므로 위와 같이 /test 디렉토리 아래에 구조를 만든 뒤, chown 명령어 실습을 진행합니다.

위 코드는 /test 디렉토리로 이동한 후, rm -rf 명령어를 이용해 /test 아래의 모든 파일과 하위 디렉토리를 삭제합니다.

그 다음 mkdir -p 명령어를 이용해, 디렉토리 구조를 만듭니다.

마지막으로 touch 명령어를 이용해, 파일 file1과 file2를 만듭니다.

 

dir1:
total 4.0K
drwxr-xr-x 3 root root 4.0K Feb 14 10:47 dir2/
-rw-r--r-- 1 root root    0 Feb 14 10:47 file1
-rw-r--r-- 1 root root    0 Feb 14 10:47 file2

dir1/dir2:
total 4.0K
drwxr-xr-x 2 root root 4.0K Feb 14 10:47 dir3/

dir1/dir2/dir3:
total 0

위는 ls -lR 명령어를 이용해, dir1 디렉토리 아래의 파일과 디렉토리를 출력한 결과입니다.

file1과 file2 파일의 소유권은 root이며, dir2 디렉토리와 그 하위 디렉토리인 dir3의 소유권도 root입니다.

 

# chown -R fedora:fedora dir1
# ls -lR dir1    (# find . -ls)

위 코드는 chown 명령어를 이용해, dir1 디렉토리와 그 하위 디렉토리와 파일들의 소유권을 fedora로 변경합니다.

그리고 ls -lR 명령어를 이용해, 소유권 변경이 잘 이루어졌는지 출력합니다.

 

dir1:
total 4.0K
drwxr-xr-x 3 fedora fedora 4.0K Feb 14 10:47 dir2/
-rw-r--r-- 1 fedora fedora    0 Feb 14 10:47 file1
-rw-r--r-- 1 fedora fedora    0 Feb 14 10:47 file2

dir1/dir2:
total 4.0K
drwxr-xr-x 2 fedora fedora 4.0K Feb 14 10:47 dir3/

dir1/dir2/dir3:
total 0

위의 출력 결과를 보면 dir1 디렉토리와 그 하위 디렉토리와 파일들의 소유권이 fedora로 잘 변경된 것을 확인할 수 있습니다.

 

# chown -R .user01 dir1
# ls –lR dir1    (# find . -ls)

위 코드는 chown 명령어를 이용해, dir1 디렉토리와 그 하위 디렉토리와 파일들의 그룹 소유권을 user01으로 변경합니다. 그리고 ls -lR 명령어를 이용해, 그룹 소유권 변경이 잘 이루어졌는지 출력합니다.

 

dir1:
total 4.0K
drwxr-xr-x 3 fedora user01 4.0K Feb 14 10:47 dir2/
-rw-r--r-- 1 fedora user01    0 Feb 14 10:47 file1
-rw-r--r-- 1 fedora user01    0 Feb 14 10:47 file2

dir1/dir2:
total 4.0K
drwxr-xr-x 2 fedora user01 4.0K Feb 14 10:47 dir3/

dir1/dir2/dir3:
total 0

위의 출력 결과를 보면 dir1 디렉토리와 그 하위 디렉토리와 파일들의 그룹 소유권이 user01으로 잘 변경된 것을 확인할 수 있습니다.

 

# chown -R root:root dir1
# ls -lR dir1

위 코드는 chown 명령어를 이용해, dir1 디렉토리와 그 하위 디렉토리와 파일들의 소유권을 다시 root로 변경합니다.

그리고 ls -lR 명령어를 이용해, 소유권 변경이 잘 이루어졌는지 출력합니다.

 

dir1:
total 4.0K
drwxr-xr-x 3 root root 4.0K Feb 14 10:47 dir2/
-rw-r--r-- 1 root root    0 Feb 14 10:47 file1
-rw-r--r-- 1 root root    0 Feb 14 10:47 file2

dir1/dir2:
total 4.0K
drwxr-xr-x 2 root root 4.0K Feb 14 10:47 dir3/

dir1/dir2/dir3:
total 0

위의 출력 결과를 보면 dir1 디렉토리와 그 하위 디렉토리와 파일들의 소유권이 다시 root로 잘 변경된 것을 확인할 수 있습니다.

리눅스에서 파일 소유권을 변경하는 것은 보안 상 중요한 작업 중 하나입니다.

chown 명령어를 이용해 소유자와 그룹 소유자를 변경하면 파일 및 디렉토리의 접근 권한을 적절하게 관리할 수 있습니다. 그러나 대량의 파일을 처리할 때는 에러가 발생할 가능성이 있으므로 find 명령어와 for 반복문을 사용하여 작업을 보다 효율적으로 수행하는 것이 좋습니다.

 

대량의 파일의 권한 변경시 문제점

대량의 파일과 디렉토리를 처리하는 데 파일 시스템은 뛰어난 성능을 보여줍니다.

그러나 대량의 파일을 처리할 때는 에러가 발생할 가능성이 높습니다.

파일의 소유자와 그룹 소유자를 변경하는 chown 명령어를 사용할 때는 특히 주의가 필요합니다.

만약 변경할 파일 및 디렉토리가 200,000개 이상이라면, 95%의 확률로 에러가 발생할 수 있습니다.

chown을 비롯한 많은 파일 작업에는 sort 작업이 필요합니다.

그러나 sort 명령어를 실행하면 다음과 같은 문제가 발생할 수 있습니다:

 

문제점 설명
대용량의 파일을 처리할 때 sort 작업이 느려질 수 있습니다. 많은 파일을 변경하려는 경우에 sort 작업이 들어가게 됩니다. 이로 인해 시간이 오래 걸릴 수 있습니다.
메모리 부족으로 sort 작업이 실패할 수 있습니다. 많은 파일을 처리할 때 메모리가 부족해지면 sort 작업이 실패할 수 있습니다.
sort 작업이 중단되면 파일의 소유권이 제대로 변경되지 않을 수 있습니다. sort 작업이 중단되면 파일의 소유권이 제대로 변경되지 않을 수 있습니다.

 

따라서 대량의 파일 작업을 수행할 때는 find 명령어와 for 반복문을 사용하는 것이 좋습니다.

먼저 find 명령어를 사용하여 모든 파일 및 디렉토리를 절대 경로로 검색하고 출력합니다.

그런 다음 출력된 파일을 for 문으로 반복 작업합니다.

이렇게 하면 파일의 소유자와 그룹 소유자를 안전하게 변경할 수 있습니다.

하지만, 이렇게 대량의 파일을 처리하는 작업은 시간이 오래 걸릴 수 있습니다.

이 경우에는 tmux 명령어를 사용하여 해당 터미널을 백그라운드에서 작업하는 것이 좋습니다.

tmux 명령어를 사용하면 작업을 중지하거나 끝내도 백그라운드에서 계속 작업할 수 있습니다.

또한, find 명령어와 for 반복문을 사용하는 것이 좋지만, 파일의 소유자와 그룹 소유자를 변경하는 방법에 대한 이해도 필요합니다.

따라서 대량의 파일을 처리할 때는 find 명령어와 for 반복문, 그리고 tmux 명령어를 사용하여 안전하고 효율적으로 작업하는 것이 좋습니다.

이를 통해 파일 소유권 변경 작업이 안전하고 원활하게 수행될 수 있습니다.

반응형