루트 권한을 가진 사용자가 더 이상 ~에없는 이유는 무엇입니까? user에 있지 않은 이유를 알고 싶습니다 .

호기심으로, 루트로 로그인 할 때 더 이상 / home / user에 있지 않은 이유를 알고 싶습니다 . 이유는 무엇이며 / root 는 무엇입니까 디렉토리는 정확히 무엇을합니까?

저는 고급 사용자가 아닙니다. 간단한 단어로 답변하거나 명확하고 간단한 설명을 제공하는 링크를 제공하십시오. 우분투 16.04를 사용하고로 root로 로그인합니다 sudo -i. 그것의 설명으로 여기 , sudo -i/ 루트 홈으로합니다. 이유가 무엇인지 알고 싶습니다. 거기에 어떤 이점이 있습니까? 그리고 ~ 의 사용자와는 다릅니다 sudo -s.



답변

sudo명령 을 실행하여 루트로 로그인하지 않았습니다 . 루트 권한으로 쉘을 시작하고 있습니다.

현재 사용자 홈 디렉토리에 머 무르려면 명령 sudo -s대신 사용할 수 있습니다 sudo -i.

cd ~루트 권한이있는 쉘에없는 것처럼 동일한 디렉토리로 이동합니다. 말 그대로 /home/$USER.

를 사용 sudo -i하면 시스템은 사용자로 로그인 한 것처럼 작동 root합니다. 이것 때문에

cd ~

루트 사용자 홈 디렉토리로 이동합니다 /root.

/rootdirectory는 root사용자 의 홈 디렉토리입니다 .

주요 차이점은의 경우 와 같은 쉘 설정 파일 은의 경우 와 일반 사용자의 경우와 같이 .bashrc사용 된다는 것 입니다 ./rootsudo -isudo -s


답변

root사용자 의 집이 /root아닌 /home/root이유는 보통/home 별도의 파티션 / 볼륨 / 디스크에 대한 마운트 지점 … (디스크 공간 또는 원격과 같은 다양한 이유로 …)

어떤 이유로 마운트 /home가 실패하는 경우에도 여전히 조사하고 수정하기 위해 홈 디렉토리 root에 연결되어있을 수 있습니다./root

또한 유지 관리, 초기 설정, 크기 조정 등을 위해 … 연결 root및 마운트 해제 / 연결 해제가 가능해야합니다./home


답변

이유는 무엇이며 / root 디렉토리는 정확히 무엇을합니까?

root는 / root를 홈으로 가지고 있으며 root로 전환하면 결국 홈에있게됩니다. 그것이의 본질입니다 sudo -i. sudo -s디렉토리는 동일하지만 전환하지는 않습니다. sudo 매뉴얼 :

-s [command]

-s (shell) 옵션은 SHELL 환경 변수에 의해 지정된 쉘 (설정된 경우) 또는 암호 데이터베이스에 지정된 쉘을 실행합니다. 명령이 지정되면 쉘의 -c 옵션을 통해 실행되도록 쉘로 전달됩니다. 명령을 지정하지 않으면 대화식 쉘이 실행됩니다.

-i [command]

-i (초기 로그인 시뮬레이션) 옵션은 대상 사용자 의 비밀번호 데이터베이스 항목 으로 지정된 쉘을 로그인 쉘로 실행 합니다. 이는 .profile 또는 .login과 같은 로그인 특정 자원 파일을 쉘에서 읽음을 의미합니다. 명령이 지정되면 쉘의 -c 옵션을 통해 실행되도록 쉘로 전달됩니다. 명령을 지정하지 않으면 대화식 쉘이 실행됩니다. sudo는 쉘을 실행하기 전에 해당 사용자의 홈 디렉토리로 변경하려고 시도합니다. 보안 정책은 사용자가 로그인 할 때 나타나는 것과 유사한 최소 변수 세트로 환경을 초기화해야합니다. sudoers (5) 매뉴얼의 명령 환경 섹션에는 -i 옵션이 명령이있는 환경에 어떤 영향을 미치는지 문서화되어 있습니다. sudoers 정책이 사용 중일 때 실행됩니다.

루트 사용자는 시스템의 일부 여야합니다. / home을 다른 파티션에 놓고 루트가 / home의 일부인 경우 파티션이 마운트되지 않으면 심각한 문제가 발생할 수 있습니다. 같은 이유로 우리는 또한

/bin
/sbin

/usr/bin
/usr/sbin

/ usr을 파티션에 넣고 / usr을 마운트하지 않으면 여전히 작동하는 시스템이 있습니다.


답변

Linux 파일 시스템은 특정 방식으로 구성됩니다. 필수 바이너리가 /bin/있고 부트 로더 파일이 /boot/있고 대부분의 장치 파일이 있고 /dev/이동식 미디어의 마운트 지점이 있습니다 /media/.

https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard를 참조 하십시오 .

일부 사소한 세부 사항은 배포판마다 다를 수 있지만 (예 : /usr/bin/vs. /usr/local/bin/) 일반적으로 거의 모든 Linux 배포판은 동일한 디렉토리 구조를 따릅니다.

질문에 대답하려면 :

사용자의 홈 디렉토리는에 /home/있습니다. 원칙적으로 Linux는 다중 사용자 운영 체제입니다. 랩톱에 홈 디렉토리가있는 사용자 계정이 하나만 /home/<username>/있을 수 있지만 /home/공유 Linux 서버 를 살펴보면 각 홈 계정마다 하나씩 많은 홈 디렉토리가 표시됩니다. 시스템의 모든 사용자는 자신의 홈 디렉토리에서만 쓰기 권한을 갖습니다. 사용자 이름 인 경우 bob파일을 읽고 쓰고 삭제할 /home/bob/수 있지만 /home/alice/또는에 있는 내용은 터치 할 수 없습니다 /var/log/.

root그래도 다릅니다. root관리 사용자이며 시스템의 모든 곳에서 쓰기 권한이 있으며 시스템의 모든 사용자 역할을 할 수 있습니다. 따라서 일반 사용자가 아니기 때문에 root특별한 홈 디렉토리가있는 것이 좋습니다 . 그 외에는 특별한 마법이없는 일반적인 디렉토리 일 뿐이지 만 시스템 유틸리티 가 사용자의 집에 의존하는 것은 가능하지만 조용합니다 ./root/root/root//root/root

당신이 실행하면 sudo -i터미널에서, 당신은 일반 사용자를 예 인 전환 bob되 고 root. 이 스위치는 입력 한 터미널 창에만 영향을줍니다 sudo -i. 파일 관리자의 bob경우 여전히 있고 다른 터미널 창을 열면 여전히 bob거기에 있습니다. 이와 관련하여이 기호 ~는 현재 사용자의 홈 디렉토리에 대한 약어입니다. 위해 bob ~수단 /home/bob/이지만위한 root ~수단 /root/.

나는 그것이 당신을 위해 일을 명확히하기를 바랍니다.


답변

나는 루트로 로그온 할 때 (/ home에없는 ~ 디렉토리를 얻음) 모든 사람이 응답 하는 것을 보지만 아무도 이유를 말하지 않습니다 . 이유는 다음과 같습니다.

전체 / home 구조를 사용할 수 없어서 수정해야하거나 공간이 부족하여 / home을 재 할당해야하는 경우 어떻게 든해야합니다. ~에 / home이있는 사용자로 로그온 할 수 없습니다. 어떤 작업을 시도하자마자 충돌이 발생하기 때문입니다. 따라서 루트 사용자는 다른 곳에 있습니다.


답변

당신은 당신이 고급 사용자가 아니라고 말해서 단계별 답변을 작성하려고 노력할 것입니다.

Linux를 사용할 때는 몇 가지 중요한 사항을 기억해야합니다.

  • Linux는 다중 사용자 시스템입니다. 처음부터 Unix 철학에 따라 생각되었습니다 (단일 사용자 시스템으로 생각 된 Windows의 다양한 접근 방식에 주목).

  • 다중 사용자 시스템 인 Linux는 시스템의 각 사용자에게 속한 파일을 분리 할 수 ​​있습니다. Linux가이를 수행하는 방법은 각 사용자에게 /home/디렉토리 내의 하위 폴더를 지정하는 것 입니다. 각 사용자 파일은 해당 사용자가 소유하며 파일을 열거 나 수정하거나 다른 사용자가 사용할 수 있도록 허용 할 수 있습니다. 반대로, 파일 시스템의 각 파일은 사용자에게 속하며 해당 사용자는 해당 파일을 보거나 사용할 수있는 사람을 제어 할 수 있습니다. 다른 답변에서 언급했듯이 원래 사용자는 파일을 시스템의 어느 곳에 나 배치 할 수 있지만 어느 시점에서 더 잘 정리해야하고 /home/( “슬래시 홈”) 사용자 파일이 있어야하는 장소가되었습니다.

  • 그러나 시스템 자체 및 / 또는 시스템의 모든 단일 사용자에게 필요한 파일이 있습니다. 바이너리, 장치 파일, 시스템 파일 등 (리눅스 및 기타 유닉스 계열 시스템에서는 모든 것이 파일 임) . 이 전 세계적으로 필요한 파일은 내 다양한 폴더에 구성 파일 시스템에 따라 다양한 장소에 저장되어있는 파일 시스템의 루트 : /. 또한 세계적으로 필요한 파일은 시스템의 특정 사용자가 아니라 시스템 자체에 속하지만 혼란 스러울 수 있습니다. 누가 이진 파일을 소유합니까? 누가 전 세계적으로 필요한 파일에 대한 권한을 부여합니까?

  • 시스템의 모든 파일은 “소유자가 필요”하므로 전 세계적으로 필요한 파일을 관리 할 수있는 “특수 사용자”가 있어야합니다. 또한이 “특수 사용자”는 시스템의 다른 사용자가 할 수없는 작업을 수행 할 수 있습니다. 시스템의 다른 사용자를 작성할 수 있습니다. 이 사용자를 “슈퍼 사용자”(필사자에게는) 또는 “루트”(시스템에서는)라고합니다.

  • 이제이 수퍼 유저는 시스템의 다른 사용자이지만 유지 보수와 같은 다른 사용자보다 훨씬 강력한 기능 (및 책임)을가집니다. 따라서 “루트”가 자신의 물건을 넣을 장소가 필요하다고 생각하는 것은 당연하지만 다른 사용자의 물건과 혼동해서는 안됩니다. 따라서 /home/“root” 아래에 하위 폴더가없는 대신 “root”는 파일 시스템에 자체 예약 공간이 있습니다 /root/( “slash-root”). “루트”는 매우 특별한 사용자이므로 자신의 물건을 넣을 수있는 특별하고 특권이있는 장소가 필요합니다.

  • 이제 우분투에는 기본적으로 루트 계정이 활성화되어 있지 않으므로 “일반”사용자는 시스템 전체에 대한 권한을 가져야합니다. 그 곳에서 sudo( “사용자 전환 및 수행”) 명령이 시작됩니다. 일반 사용자 (이전에 “Sudoers”목록에 포함되어 있음)는 다른 사용자 (예 : “root”) 인 것처럼 명령을 수행 할 수 있습니다.

  • 마지막으로,이 -i옵션은 “초기 로그인 시뮬레이션”을 의미합니다. 즉 sudo, 주어진 명령을 실행하기 전에 “대상 사용자 프로필”의 데이터를 읽습니다. 명령을 제공하지 않으면 sudo대상 사용자 (루트) 프로필로 쉘 인스턴스가 시작되고 “대상 사용자”의 “홈”폴더로 이동하는 것으로 시작합니다. 그래서 sudo -i루트의 홈 폴더를 수행 할 수 이동합니다 ( /root/).

나는 이것이 당신에게 일어나는 일을 이해하는 데 도움이되기를 바랍니다 sudo -i.


편집하다

나는 명확하지 않은 것을 남겼다고 생각하므로 여기에 추가 할 것입니다.

  • 나는 위에서 말했다 : “Linux에서 모든 것은 파일이다”. 말 그대로 말입니다! 문서와 이미지는 파일이지만 터미널 ([CTRL] + [ALT] + [Fn]을 눌러 액세스 할 수 있음)과 물리적 드라이브 및 키보드도 있습니다. 유닉스 계열 시스템은 파일에서 / 파일로 데이터를 읽거나 쓰고, 작업중인 파일과 입력하는 키 입력을 나타내는 시스템의 해당 파일로 /에서 데이터 흐름을 지시하여 작동합니다. 화면에 보이는 출력. 이러한 파일 중 일부는 사용자가 직접 사용할 수 있지만 일부는 사용할 수 없습니다. 예를 들어, 하드 드라이브를 직접 읽거나 쓸 수는 없지만 Linux가 탐색 가능한 일반 폴더를 /dev/하드 드라이브를 나타내는 장치 파일 (아래에 있음 ) 에 연결하도록해야합니다 .

  • Linux 파일 시스템 은 여러 물리적 드라이브에 걸쳐있을 수 있습니다 . 간단한 예는 USB 펜 드라이브를 연결하는 경우입니다. Linux는 해당 드라이브를 마운트 할 수 있습니다 (마운팅은 시스템이 표준 폴더를 연결하는 프로세스입니다. 여기서 쉘 또는 파일 탐색기의 파일을에서 장치 파일로 볼 수 있습니다 /dev/). 당신은 그것으로 작업 할 수 있고, 완료되면 리눅스에게 드라이브를 마운트 해제하고 USB 포트에서 제거하도록 요청합니다. 여기서 중요한 것은이 “마운트-마운트 해제”주기가 매일 사용하는 * 동일한 파일 시스템 “에 영향을 미친다는 것입니다. 실제 드라이브를 추가하거나 제거 할 때마다 새 파일 시스템을 생성하지는 않지만 해당 실제 드라이브를 파일 시스템에 추가합니다 ( 다시이 철학을 Wndows의 접근 방식과 비교하십시오).

  • 파일 시스템이 여러 물리적 드라이브에 걸쳐있을 수 있으므로 시스템의 다른 파일을 다른 물리적 드라이브에 쓸 수 있음이 분명해집니다. 하나의 드라이브는 시스템 바이너리 ( /bin/)를 저장하고 다른 드라이브는 사용자 파일 ( /home/및 그 하위 항목)을 저장할 수 있습니다 . 다중 드라이브 설정에서는 일반적으로 /home/와 다른 물리적 드라이브에 기록 하는 것이 일반적 /root/이므로 시스템이 고장 /home/나고 작동 이 중지 된 드라이브 인 root가 로그인 할 수없는 경우 사용자가 로그인 할 수 없습니다 . (이것은 간단합니다. 다른 사용자가 할 수 없다면 루트가 로그인 할 수 있도록 많은 것들을 각 물리적 드라이브에 복사해야하지만 일반적인 아이디어를 줄 수 있습니다).

  • 그리고 물결표 ( ~) 문자는 현재 사용자 의 홈 디렉토리를 나타냅니다 . 당신이 “밥”로 로그인 한 경우, 다음 cd ~에 당신을 데려 갈 것이다 /home/bob/, 그러나 당신은 “루트”로 로그인하는 경우, 다음 cd ~에 당신을 데려 갈 것이다/root/

tl; dr 이제 모든 것이 있다고 생각합니다.

  • “루트”는 다른 사용자보다 훨씬 강력한 권한과 책임을 가진 특별한 사용자입니다.

  • “/ root /”는 “root”가 일반 사용자의 다른 물건과 혼동하지 않고 물건을 저장할 수있는 장소입니다. 이 폴더는와 다른 물리적 드라이브에 쓸 수 있습니다 /home/.

  • sudo -i루트 로그인을 시뮬레이션하는 쉘을 시작하며 루트의 홈 폴더로 이동 함을 의미합니다. 다른 사용자와 마찬가지로 cd ~홈 디렉토리로 이동하지만 루트 인 경우/root/

  • 시스템이 다른 물리적 드라이브에 설치된 경우 root는 로그인하여 시스템의 다른 드라이브에 장애가 발생하더라도 문제를 해결하려고 시도 할 수 있습니다.


답변

루트의 홈 디렉토리가 다르게 취급되는 핵심 이유 :

일이 잘못되면 / 파일 시스템을 마운트하는 즉시 시스템 복구 작업을 수행 할 수 있어야합니다.

설정 사용자에 따라 홈 디렉토리가 다른 파일 시스템에 있거나 네트워크를 통해 마운트 될 수도 있습니다.

콘솔에서 루트로 로그인하려면 (즉, 로그인 프롬프트에서 루트 이름과 루트 암호를 입력) 하나의 파일 시스템 만 마운트하면됩니다.

(핵심 유틸리티가 / usr / bin 또는 / usr / sbin 대신 / bin 및 / sbin에있는 이유이기도합니다. / usr의 모든 항목은 소모품입니다.)