저는 데비안 9 서버를 사용하고 있습니다.
일반적으로 항목을 비활성화했기 때문에 ssh
일반 사용자(예: )를 통해 user1
액세스하고 su
들어갑니다 . 최근에 나는 그룹으로 사용자를 생성 하고 이를 로 제한하는 git 서버를 설정하고 잠시 동안 놀다가 다음과 같이 그룹에 추가했습니다.root
ssh
root
git
git
git-shell
user1
git
usermod -aG git user1
이것은 user1
그룹의 구성원으로서 잘 작동 user1
했으며 git
마지막으로 이 작업을 취소하고 싶었기 때문에 다음을 사용했습니다.
usermod -G user1 user1
얼마 지나지 않아 인터넷 연결이 끊어져서 다시 연결해야 했습니다. ssh
에 들어갈 수 있지만 access 를 user1
사용할 때 오류가 발생합니다.su
root
user1@hostname:~$ su
Password:
Cannot execute git: No such file or directory
user1@hostname:~$
git-shell
다른 이유는 모르겠어서 정보를 포함합니다 . 아직 모든 것이 사라지지 않았으면 좋겠고 누군가 내가 통제력을 되찾도록 도와줄 수 있습니다.
추신: 루트와 유사한 다른 사용자가 없으므로 "sudoers 파일에 없기 sudo
때문에" 작동하지 않습니다 .user1
PPS: VPS 로그인을 통해 비밀번호를 재설정할 수 있지만 root
그것이 효과가 있을지, 아니면 상황을 더욱 악화시킬지는 잘 모르겠습니다.
답변1
구조 모드로만 해결됨:
- "구조 모드"로 부팅 - 아마도 대부분의 VPS에서 사용 가능
mount
적절한 드라이버nano /path/to/mounted/drive/etc/passwd
- 루트 항목을 다음으로 변경합니다.
root:x:0:0:root:/root:/bin/bash
- 복구 모드 없이 저장, 종료 및 다시 시작
등의 다양한 방법
user1@hostname: ~$ su -s /bin/sh
또는
user1@hostname: ~$ su -s /bin/sh -c /bin/sh
작동하지 않습니다. 동일한 오류 메시지로 응답했습니다.
아직 원인은 찾지 못했지만 @doneal24 님의 댓글을 참고하여 시스템 제어권을 되찾았습니다. 이유를 알아낼 수 있으면 세부정보를 제공하겠습니다. 아래 편집 내용을 참조하세요.
재현하려면: 나는 (우연히) 루트 쉘을 변경하는 방법을 발견했습니다. ~에 따르면이것chsh -s $(command -v git-shell) <user>
ProGit에서 보니 git-shell이 입력용으로 활성화되어 있는 것 같습니다 . 그러나 git
for를 삽입하면 <user>
루트 쉘이 변경됩니다.
root@hostname ~ # chsh -s $(git init ./project1.git git-shell) git
usage: git init [-q | --quiet] [--bare] [--template=<template-directory>] [--shared[=<permissions>]] [<directory>]
chsh: Warning: git does not exist
root@hostname ~ #
ProGit의 정보가 제가 EDIT에 쓴 내용과 많이 비슷해 보여서 제가 오해했을 수도 있습니다.
EDIT1: 이것이 실제로 어떻게 변경되는지는 아래를 참조하세요.
root@hostname ~# chsh root -s git
chsh: Warning: git does not exist
root@hostname ~#
항목을 다음으로 변경합니다.
root@hostname~ # cat /etc/passwd | grep root
root:x:0:0:root:/root:git
root@hostname~ #
이상해요, 마치
root@hostname ~# chsh root -s /bin/bash
Password:
chsh: PAM: Authentication failure
root@hostname ~#
작동하지 않습니다.