저는 *nix 운영 체제를 처음 접했습니다. 나는 이 파일의 형식과 사용법(적어도 매뉴얼 페이지의 내용)을 이해합니다 /etc/group
. 어느 날 그룹 파일을 백업 복사본으로 바꾸려고 했습니다. 파일 이름을 변경한 group.old
후 내 컴퓨터의 모든 계정이 손실되었습니다.뿌리사용권. 이 문제를 해결하려면 단일 사용자 모드로 들어가야 했습니다. 이 그룹과 전체 UNIX 계정에 대한 심층적인 과정이 필요한 것 같습니다.
누군가 나에게 링크를 주거나 당신의 학습 경험을 나와 공유할 수 있습니까?
답변1
이 파일은 /etc/group
어떤 사용자가 어떤 그룹의 구성원인지를 나타냅니다. 그룹은 액세스 제어에 사용되며 사용자를 보완합니다.
/etc/group
로그인 시 읽어보세요. 각 프로세스는 사용자와 하나 이상의 그룹으로 실행됩니다. 로그인 프로세스는 모든 권한으로 실행되기 시작합니다. 사용자가 성공적으로 인증되면(예: 비밀번호 입력) 로그인 프로세스는 에 표시된 그룹 /etc/group
과 에 표시된 그룹을 가정한 /etc/passwd
다음 인증된 사용자 셸로 시작됩니다.
각 파일에는 세 가지 권한 세트(사용자, 그룹 및 기타)와 소유자 및 그룹이 있다는 것을 알 수 있습니다. 프로세스가 파일에 액세스하려고 시도하면 다음이 수행됩니다.
- 파일을 소유한 사용자로 프로세스가 실행되는 경우 적용 가능한 권한은 사용자 권한입니다.
- 그렇지 않고 프로세스의 그룹 중 하나가 파일을 소유한 그룹인 경우 적용 가능한 권한은 그룹 권한입니다.
- 그렇지 않은 경우 적용 가능한 권한은 다른 권한입니다.
예:
$ ls -l myfile
-rw-r----- 1 msh gutenberg 1234 Jul 4 1971 books.txt
사용자는 msh
이 파일( )을 읽고 쓸 수 있습니다 rw-
. 그룹의 모든 사용자는 gutenberg
파일( r--
)을 읽을 수 있습니다. 다른 사용자는 해당 파일에 전혀 접근할 수 없습니다( ---
).
따라서 그룹을 사용하면 모든 사용자의 하위 집합이 파일에 액세스할 수 있도록 할 수 있습니다. 시스템 서비스 및 장치는 특정 사용자 또는 특정 그룹으로 제한될 수도 있습니다.
그룹에는 세 가지 일반적인 용도가 있습니다.
- 위의 예에서와 같이 공통 프로젝트에서 작업하는 실제 사용자 그룹은 동일한 파일 세트에 액세스합니다.
- 시스템 리소스에 대한 액세스를 제어하는 데 사용되는 물리적 사용자 그룹입니다. 예를 들어, 경쟁 게임은 사용자와 그룹에 속하고 모든 사용자 만 쓸 수 있고 모든 사용자가 쓸 수 없는
root
높은 점수의 파일을 저장하는 경우가 많습니다( ). 게임 프로그램은 높은 권한을 가진 그룹으로 실행됩니다 .games
games
rw-rw----
games
설정) 로games
인해 높은 점수의 파일을 읽고 쓸 수 있지만 다른 프로세스는 그렇지 않습니다. - 시스템 사용자 그룹. 예를 들어, 많은 시스템 서비스는 한 서비스의 버그나 손상이 다른 서비스에 영향을 줄 수 있는 위험을 최소화하기 위해 전용 사용자 및 그룹으로 실행됩니다.
귀하의 증상에 따라 귀하의 시스템은 그룹 멤버십을 통해 계정에 대한 액세스를 제어하도록 설정되었습니다 root
. 이를 수행하는 방법에는 여러 가지가 있습니다. 가장 일반적인 설정은 다음과 같습니다.
- 루트 계정에 대한 액세스는 다음을 통해 이루어집니다.스도. 사용자는 를 실행하려면 자신의 비밀번호를 입력해야 합니다
sudo
.sudo
사용자가 그룹에 있으면 루트로 실행 명령을 호출할 수 있습니다admin
. 이는 비유%admin: ALL=(ALL) ALL
에서 선으로 표현됩니다/etc/sudoers
. 때때로 그룹은 다른 이름을 가지고 있습니다. 이것이 우분투의 기본 설정입니다. - 루트 계정에 대한 액세스는 다음을 통해 이루어집니다.수. 그룹 내 사용자만
wheel
실행할 수 있습니다su
. 사용자는 를 실행하기 위해 루트 비밀번호를 입력해야 하며su
, 따라서 루트 계정에 침투하려면 공격자가 사용자의 비밀번호와 루트 비밀번호를 모두 얻어야 합니다. 이는 일부 BSD 시스템의 기본값이었지만 공격자가 더욱 정교해짐에 따라 더 이상 사용되지 않습니다(계정 손상, 키로거 실행, 루트 비밀번호 획득).
/etc
교훈: 파일의 목적을 모른다면 파일을 변경하거나 삭제하지 마세요. 무언가를 변경한 경우 루트 쉘에서 수행하고 나중에 로그인할 수 있는지 테스트하십시오. 그렇지 않은 경우 변경 사항을 즉시 되돌리십시오.
/etc
설치를 권장합니다관리자를 기다려주세요패키지하고 실행합니다 etckeeper init
(루트로).
답변2
케이"리눅스 실행"Dalheimer와 Welsh의 책(O'Reilly, 2005) 또는 일부TLDP 가이드요구 조건을 충족하다. 귀하의 배포판에는 몇 가지 구체적인 지침이 있을 수 있습니다. 이를 확인하십시오. 구성 파일을 수정할 때 특히 주의하십시오. 백업해 두는 것도 좋지만, 변경사항이 있을 경우 미리 복사본을 만들어 두는 것이 좋습니다(이동하지 마세요). 대부분의 배포판에는 사용자 및 기타 다양한 구성을 관리하기 위한 도구가 있으며, 자신이 수행하는 작업을 완전히 확신하지 않는 한 알고 있을 때 다른 것에 대해 생각하지 마십시오.
답변3
질문을 할 때 사람들에게 자신이 실행 중인 소프트웨어를 알려주는 것이 유용할 것입니다. 이 경우에는 어떤 배포판을 실행하고 있는지 아는 것이 유용할 것입니다.
Fedora나 Redhat을 실행하고 계십니까? 그렇다면 SE Linux가 문제일 수 있습니다.
SE Linux를 실행 중인지 확인하려면 다음 명령을 실행하십시오. getenforce
SE Linux를 실행하는 경우 "enforcing"이 반환됩니다. SE Linux를 실행하는 경우 다음을 실행하십시오.
ls -lZ /etc/group.old /etc/group
그리고 차이점을 비교해 보세요. 새 파일에 많은 부분이 누락된 경우 다음과 같이 표시됩니다.
system_u:object_r:etc_t:s0
이전 파일 목록에서 SElinux 컨텍스트 정보가 누락되었을 수 있습니다.
다음 명령을 사용하여 이전 파일에서 SElinux 컨텍스트를 복사할 수 있습니다.
chcon --reference /etc/group.old /etc/group
방금 배우는 중이라면 SE Linux를 끄는 것이 현명한 대답일 수 있습니다. 다음 방법으로 이를 수행할 수 있습니다.
setenforce 0
재부팅할 때까지(또는 setenforce 1을 실행할 때까지) SELinux가 종료됩니다.
SElinux를 영구적으로 종료하려면 다음을 편집해야 합니다.
/etc/selinux/config