Linux 파일 권한은 어떻게 작동합니까?
게시 됨: 2022-01-29얼마 동안(심지어 OS X까지) Linux를 사용해 왔다면 아마도 "권한" 오류를 접했을 것입니다. 그러나 그것들은 정확히 무엇이며 왜 필요하거나 유용합니까? 내부를 살펴보겠습니다.
사용자 권한
당시 컴퓨터는 엄청나게 비싼 거대한 기계였습니다. 이를 최대한 활용하기 위해 여러 컴퓨터 터미널이 연결되어 많은 사용자가 동시에 비즈니스를 수행할 수 있습니다. 데이터 처리 및 저장은 기계에서 수행되었지만 터미널 자체는 데이터를 보고 입력하는 수단에 불과했습니다. 생각해보면 우리가 "클라우드"에서 데이터에 액세스하는 방법과 거의 비슷합니다. Amazon의 Cloud MP3 시스템, Gmail 및 Dropbox를 살펴보면 로컬에서 변경이 가능하지만 모든 것이 원격으로 저장된다는 것을 알 수 있습니다.
(이미지: Zenith Z-19 "dumb" 터미널, 출처: ajmexico)
이것이 작동하려면 개별 사용자에게 계정이 있어야 합니다. 그들에게 할당된 저장 영역이 있어야 하고 명령과 프로그램을 실행할 수 있어야 합니다. 모든 사람은 할 수 있는 것과 할 수 없는 것, 시스템에서 액세스할 수 있는 위치와 액세스 권한이 없는 위치, 파일을 수정할 수 있고 수정할 수 없는 위치를 지정하는 특정 "사용자 권한"을 얻습니다. 또한 각 사용자는 추가 액세스를 허용하거나 제한하는 다양한 그룹에 배치됩니다.
파일 액세스
이 엉뚱한 다중 사용자 세계에서 우리는 이미 사용자가 할 수 있는 일에 대한 경계를 설정했습니다. 그러나 그들이 액세스하는 것은 어떻습니까? 모든 파일에는 일련의 권한과 소유자가 있습니다. 일반적으로 파일이 생성될 때 바인딩되는 소유자 지정은 파일이 속한 사용자를 선언하며 해당 사용자만 액세스 권한을 변경할 수 있습니다.
Linux 세계에서 권한은 읽기, 쓰기 및 실행의 세 가지 범주로 나뉩니다. "읽기" 액세스는 파일 내용을 볼 수 있도록 하고 "쓰기" 액세스는 파일 내용을 수정할 수 있도록 하며 "실행" 액세스는 스크립트나 프로그램과 같은 일련의 명령을 실행할 수 있도록 합니다. 이러한 각 범주는 사용자, 그룹 및 세계와 같은 다른 클래스에 적용됩니다. "사용자"는 소유자를 의미하고, "그룹"은 소유자와 동일한 그룹에 있는 모든 사용자를 의미하며, "세계"는 모든 사람을 의미합니다.
이러한 권한으로 폴더를 제한할 수도 있습니다. 예를 들어, 그룹의 다른 사람들이 홈 폴더에 있는 디렉토리와 파일을 보도록 허용할 수 있지만 그룹 외부의 사람은 볼 수 없습니다. 일종의 공유 프로젝트에서 작업하지 않는 한 "쓰기" 액세스 권한을 자신에게만 제한하고 싶을 것입니다. 누구나 해당 폴더의 파일을 보고 수정할 수 있는 공유 디렉토리를 생성할 수도 있습니다.
Ubuntu에서 권한 변경
GUI
Ubuntu에서 소유한 파일의 권한을 변경하려면 파일을 마우스 오른쪽 버튼으로 클릭하고 "속성"으로 이동하십시오.
소유자, 그룹 또는 기타 사용자가 읽기 및 쓰기, 읽기 전용 또는 아무 작업도 수행할 수 있는지 여부를 변경할 수 있습니다. 파일 실행을 허용하는 확인란을 선택할 수도 있으며, 이렇게 하면 소유자, 그룹 및 기타가 동시에 활성화됩니다.
명령줄
명령줄을 통해 이 작업을 수행할 수도 있습니다. 파일이 있는 디렉토리로 이동하고 다음 명령을 입력하여 목록의 모든 파일을 봅니다.
ls -알
각 파일과 디렉토리 옆에 권한을 간략히 설명하는 특별 섹션이 표시됩니다. 다음과 같이 보입니다.
-rwxrw-r-
r 은 "읽기", w 는 "쓰기", x 는 "실행"을 의미합니다. 디렉토리는 "-" 대신 "d"로 시작합니다. 또한 가치가 있는 10개의 공백이 있음을 알 수 있습니다. 첫 번째는 무시해도 되며, 그 다음에는 3개씩 3세트가 있습니다. 첫 번째 세트는 소유자용, 두 번째 세트는 그룹용, 마지막 세트는 월드용입니다.
파일이나 디렉토리의 권한을 변경하려면 chmod 명령의 기본 형식을 살펴보겠습니다.

chmod [클래스][연산자][권한] 파일
chmod [ugoa][+ 또는 –] [rwx] 파일
이것은 처음에는 복잡해 보일 수 있지만 저를 믿으십시오. 꽤 쉽습니다. 먼저 클래스를 살펴보겠습니다.
- u: 이것은 소유자를 위한 것입니다.
- g: 이것은 그룹을 위한 것입니다.
- o: 이것은 다른 모든 사람들을 위한 것입니다.
- : 이것은 위의 모든 것에 대한 권한을 변경합니다.
다음으로 연산자:
- +: 더하기 기호는 다음에 오는 권한을 추가합니다.
- -: 빼기 기호는 뒤에 오는 권한을 제거합니다.
아직도 나와 함꼐? 그리고 마지막 섹션은 파일의 권한을 확인할 때와 동일합니다.
- r: 읽기 액세스를 허용합니다.
- w: 쓰기 액세스를 허용합니다.
- x: 실행을 허용합니다.
이제 함께 넣어 보겠습니다. 다음 권한을 가진 "todo.txt"라는 파일이 있다고 가정해 보겠습니다.
-rw-rw-r-
즉, 소유자와 그룹은 읽고 쓸 수 있고 세상은 읽기만 할 수 있습니다. 권한을 다음과 같이 변경하려고 합니다.
-rwxr--
즉, 소유자는 모든 권한을 가지며 그룹은 읽을 수 있습니다. 우리는 이것을 3단계로 할 수 있습니다. 먼저 사용자에 대한 실행 권한을 추가합니다.
chmod u+x todo.txt
그런 다음 그룹에 대한 쓰기 권한을 제거합니다.
chmod gw todo.txt
마지막으로 다른 모든 사용자의 읽기 권한을 제거합니다.
chmod 또는 todo.txt
다음과 같이 이를 하나의 명령으로 결합할 수도 있습니다.
chmod u+x, gw 또는 todo.txt
각 섹션이 쉼표로 구분되고 공백이 없는 것을 볼 수 있습니다.
다음은 몇 가지 유용한 권한입니다.
- -rwxr-xr-x : 소유자는 모든 권한을 가지며 그룹 및 다른 사용자는 파일 내용을 읽고 실행할 수 있습니다.
- -rwxr–r– : 소유자는 전체 권한을 가지며 그룹 및 다른 사용자는 파일을 읽을 수만 있습니다(다른 사람이 파일을 보는 것을 신경 쓰지 않는 경우 유용합니다.
- -rwx—— : 소유자에게는 모든 권한이 있고 다른 모든 사람에게는 권한이 없습니다(개인 스크립트에 유용).
- -rw-rw—-: 소유자와 그룹이 읽고 쓸 수 있습니다(그룹 구성원과의 공동 작업에 유용).
- -rw-r–r– : 소유자는 읽고 쓸 수 있고 그룹 및 다른 사용자는 파일을 읽을 수만 있습니다(공유 네트워크에 개인 파일을 저장하는 데 유용).
- -rw——- : 소유자는 읽고 쓸 수 있으며 다른 모든 사람은 아무 것도 갖고 있지 않습니다(개인 파일을 저장하는 데 유용).
setuid 및 setgid와 같이 chmod로 할 수 있는 몇 가지 다른 작업이 있지만 약간 심층적이며 대부분의 사용자는 실제로 사용할 필요가 없습니다.
루트 또는 수퍼유저 및 시스템 파일
오늘날 우리는 항상 여러 사용자가 있는 시스템을 실행하지 않습니다. 여전히 권한에 대해 걱정해야 하는 이유는 무엇입니까?
음, Unix와 그 파생물(Linux, OS X 등)도 사용자가 실행하는 것, 관리자나 관리자 권한으로 실행하는 것, 시스템 자체에서 실행하는 것을 구별합니다. 따라서 시스템에 필수적인 항목을 변경하거나 액세스하려면 관리자 권한이 필요합니다. 이렇게 하면 실수로 아무것도 망치지 않습니다.
Ubuntu에서 시스템 파일을 변경하려면 "sudo" 또는 "gksudo"를 사용하여 관리자 권한에 해당하는 권한을 얻습니다. 다른 배포판에서는 "루트" 또는 "수퍼 사용자"로 전환하여 로그아웃할 때까지 동일한 작업을 효과적으로 수행합니다.
이 두 가지 상황 모두에서 파일 권한을 변경하면 프로그램이 작동하지 않고 의도치 않게 파일 소유권을 소유자 대신 루트 사용자로 변경하고(더 많은 권한을 부여하여) 시스템의 보안을 약화시킬 수 있습니다. 따라서 필요하거나 수행 중인 작업을 알고 있지 않는 한 파일, 특히 시스템 파일에 대한 권한을 변경하지 않는 것이 좋습니다.
파일 권한은 사용자 사이에 기본적인 보안 시스템을 제공하기 위해 마련되어 있습니다. 작동 방식을 배우면 다중 사용자 환경에서 기본 공유를 설정하고 "공개" 파일을 보호하고 시스템 파일 소유권에 문제가 발생하는 경우에 대한 단서를 제공할 수 있습니다.
당신이 일을 더 쉽게 설명할 수 있다고 생각합니까? 수정이 있습니까? 옛날을 회상하고 싶습니까? 휴식을 취하고 댓글에 생각을 적어보세요.