로그인하지 않고 .bashrc를 편집하는 방법


17

이것은 아마도 중복되는 질문 일 수 있지만 CentOS (특히 VM에서)의 로그인 / 부팅 프로세스에 익숙하지 않아 검색 대상을 알 수 없습니다.

VirtualBox에서 CentOS 7을 실행하고 있습니다. 실수로 파일 gnome-terminal끝에 추가 했습니다 ~/.bashrc. 이제 로그인 할 때 터미널 창이 나타납니다. 터미널 세션이 실행 .bashrc되어 다른 창 등이 열리고 많은 gnome-terminal터미널 창이 넘칩니다 .

GUI 로그인없이 터미널 세션에 로그인하려고하는데 ( gnome-terminal실패) GUI없이 부팅 할 수 없습니다. 나는이 질문에 대한 답을 성공적으로 사용하려고 시도했습니다. 매번 GUI 로그인을받습니다 : CLI에서 CentOS를 부팅하는 방법? . 부팅 할 때 grub 구성을 편집하는 또 다른 방법이 있습니까, 아니면 Ubuntu의 Ctrl + Alt + F1과 같은 GUI 로그인에서 새 터미널 인스턴스를 얻는 방법이 있습니까? (예, 시도했습니다. CentOS 7에서 작동하지 않거나 VirtualBox VM에서 작동하지 않습니다.) 또는 GUI없이 터미널 세션을 얻을 수있는 다른 방법이 있습니까? .bashrc이 난장판을 고쳐?


4
sshd그 VM에 최대? 여러 가지 방법이 있습니다. 1) 단일 사용자 모드 로 시작 합니다 (예 : 부팅시 입력, 커널 선택, a 누르기, 단일 추가 , 입력 ...). 2) VM 시스템에서 sshd를 실행하면 .bashrc수정 내용 을 복사하려고하면 다시 복사합니다 ( scp, sftp rsync ...). 3) 당신은 다른 사용자로 로그인 할 수 있습니다 su -... 4) 다른 머신 (가상조차도)에서 ssh user@host mv .bashrc bashrcToModify로그인하고 수정 할 수 있습니다 ... 0) CTRL ALT F1VM에서 작동합니까?
Hastur

2
"우연히 추가 된 gnome-terminal"이라고 말하면 어떻게 되었습니까?
mcfedr

@mcfedr 누군가 XD를 요청하기를 기다리고있었습니다. 나는 무엇 .bashrc을 위해 오해 했다. 로그인 할 때 한 번 실행되었다고 생각했지만 모든 쉘 세션이 시작될 때마다 실행됩니다. 로그인 할 때마다 터미널 창이 나타나기를 원했기 때문에 echo 'gnome-terminal' >> ~/.bashrc. 나쁜 생각. 내가 넣어해야 추측 gnome-terminal/etc/init.d또는 어딘가? 여전히 부팅 프로세스를 이해하려고합니다.
Michael Hoffmann

답변:


13

CtrlAltF1호스트에 의해 캡처되거나 VirtualBox가 올바르게 전달되지 않을 수 있습니다. 몇 가지 빠른 테스트 를 통해 VirtualBox에 정의 된 호스트 키를 사용할 수 있음을 알 수 있습니다 CtrlAlt( Mac Ctrl에서는 왼쪽 또는 왼쪽 일 수 있음 ). 따라서를 눌러 F1VirtualBox에서 TTY1로 전환했습니다 ( F7GUI 로 돌아 가기 위해 비슷하게 ).


1
예. 효과가있었습니다. Ctrl + F2가 나를 위해 속였습니다. Ctrl + F1이 CentOS의 GUI 세션 인 것처럼 보이지만 동일한 원리입니다. IMO는 추가 미디어 나 편집 부팅 구성이 필요없는 가장 간단한 솔루션입니다. 나는 이것을 대답으로 표시하고 있습니다.
Michael Hoffmann

2
@MichaelHoffmann 예, 그것은 저보다 새로운 CentOS의 효과 일 것입니다. GDM 동작은 TTY 7 대신 사용 가능한 첫 번째 TTY를 사용하도록 6과 7 사이에서 변경되었습니다.
muru

2
향후 릴리스에서 더 변경 될 예정입니다. 로그인 화면은 vconsole 1에 있으며, 로그인 한 각 그래픽 사용자는 각 후속 vconsole을 차지합니다 (로그인 할 때 세션이 vconsole 2에 있습니다. 사용자가 다음 사용자를 전환하면 vconsole 3 등).
Michael Hampton

24

라이브 Linux CD로 부팅 한 다음 CentOS 파일 시스템을 마운트하고 거기서 .bashrc 파일을 편집 할 수 있습니다.


2
가장 간단한 솔루션. 또한 잘못된 구성과 잘못된 로그온을 방지하는 잘못된 구성에도 적용됩니다 (잘못된 문제와이를 되
돌리는

이는 매우 간단합니다. 특히 VirtualBox 사용자는 게스트 운영 체제의 ISO를 확보해야합니다. 그러나 muru의 대답 은 훨씬 더 간단하기 때문에 선택해야합니다 . 기부 해 주셔서 감사합니다.
Michael Hoffmann

15

GRUB 구성에서 Init / bin / sh

GUI로 이동하는 대신 루트 쉘을로드하도록 grub 구성을 편집 할 수 있습니다.

  1. VM 재부팅
  2. 그럽 메뉴가 나타나면 첫 번째 항목을 선택하고을 눌러 e편집합니다. 표시되지 않으면 부팅하는 동안 Shift 키를 다시 누른 상태로 유지하십시오
  3. linux16또는로 시작하는 줄을 찾으십시오 linux. 광산은 이렇게 생겼습니다. 약간 다를 수 있습니다

    linux16 /vmlinuz-3.10.0-327.18.2.el7.x86_64 root=/dev/mapper/centos-root ro crashkernal=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF8
  4. 변경 사항을 쓸 수 있도록 roto rw( readonly 플래그를 readwrite로 변경) init=/bin/sh를 행에 추가 하십시오. 이것은 시작시 /bin/sh대신 리눅스가 실행되도록 지시 init합니다. 나의 참가 예

    linux16 /vmlinuz-3.10.0-327.18.2.el7.x86_64 root=/dev/mapper/centos-root rw crashkernal=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF8 init=/bin/sh
  5. 구성을 실행하려면 Ctrl-X를 누르십시오. 저장되지 않습니다.

  6. 루트 쉘이 나타납니다. 이를 사용 .bashrc하여 문제를 해결하고 문제를 일으키는 줄을 제거하십시오.

    셸은 일반적으로 init프로세스 용으로 예약 된 PID 1로 실행되므로이 ​​상태에서 OS를 계속 사용해서는 안됩니다 . 수동으로 초기화를 계속할 수는 exec /sbin/init있지만 재부팅하는 것이 좋습니다.

  7. 정상적으로 재부팅하십시오. 이전 변경 사항을 잊어 버릴 것입니다.

GRUB에서 Linux로 전달 된 부팅 옵션을 근본적으로 편집하고 있습니다. GRUB에서 루트 파일 시스템을 읽기-쓰기로 마운트 /bin/sh하고 init 프로세스를 시작 하도록합니다.

이것은 Centos 7 및 VirtualBox 4.3.12를 사용하는 경우 효과적입니다.


흠 ... 그것은 완벽하게 작동했습니다 (그리고 약간 혼란 스럽습니다-누군가가 자격 증명없이 루트 쉘에 도달하기 위해 내 랩톱에서 이것을 할 수 있습니까?). 그러나 쉘을 종료했을 때 커널 패닉이 발생했기 때문에 이것을 대답으로 표시 할 수 있는지 모르겠습니다 ... 이것이 작동 하는지 설명 할 수 있습니까 ? 무엇을 ro하고 rw? 아니면 linux16에 대한 맨 페이지가 있습니까? 나는 여기서 뭘하고있는 거지?
Michael Hoffmann

5
@MichaelHoffmann 이것은 루트를 얻는 표준의 잘 알려진 방법입니다-이것을 막기 위해 부트 로더를 암호로 보호해야합니다. init가 종료되어서는 안되기 때문에 커널 패닉이 발생하지만 패닉은 그렇지 않습니다. exec /sbin/init실제 부팅 여부에 관계없이 부팅을 계속할 수 있습니다 init. rorw옵션은 루트가 읽기 전용 또는 읽기 - 쓰기를 탑재합니다. GRUB 메뉴를 편집하여 Linux가 루트 파일 시스템을 읽기-쓰기로 마운트하고 init로 시작하도록 지시합니다.
muru December

1
@muru 나는 ​​당신의 의견 중 일부를 명확하게하기 위해 답변에 추가했습니다.
lex

6

수리 된 사본 .bashrc을 제자리에 두다

작업 할 다른 시스템이있는 경우 손상된 파일의 사본을 잡고 문제점을 수정 한 다음 원래 위치로 되돌려 놓으십시오. 로그인 및 로그인 명령을 호출하지 않습니다.

user@backup ~ $ scp user@homehost:~/.bashrc busted.bashrc
user@backup ~ $ vim busted.bashrc # fix, fix
user@backup ~ $ scp busted.bashrc user@homehost:~/.bashrc
user@backup ~ $ rm busted.bashrc

부록 : OP가 아래에 지적한대로에 액세스하려면 SSH 액세스가 필요합니다 homehost. 이것이 옵션이 아닌 대신 FTP / SFTP를 사용할 수있는 경우, 파일 전송 방법이 필요한 것을 수행 할 것입니다. 이는 단순히 올바른 로그인 파일을 설치하는 것입니다.


1
이것은 작동하지만 VM이 VM에서 sshd실행 중이고 (기본적으로 CentOS는 확실하지 않습니다) 네트워크가 VirtualBox와 호스트 및 호스트 및 VM에서 올바르게 구성되어있는 경우에만 작동합니다.
Michael Hoffmann
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.