내 공용 IP 등을 사용하여 집에 매우 작은 Wireguard 서버를 설정했습니다. 나는 가능한 한 나 자신을 보호하고 강력한 비밀번호를 설정하기 위해 NAT를 사용합니다.
친구가 SSH를 통해 이 서버에 액세스하려고 합니다. 그는 친절하지만 그를 완전히 신뢰하고 싶지는 않고 그에게 액세스 권한만 부여하고 싶습니다. 그가 홈 폴더를 어지럽히는 일을 할 수 없도록 하고 "sudo" 또는 "su"를 실행하지 않도록 하고 싶습니다.
어떻게 해야 하나요?
ChatGPT의 제안을 시도하고 visudo를 변경했습니다. 예를 들면 다음과 같습니다.
user ALL=(ALL) ALL, !DISABLE_SU, !DISABLE_SUDO, !/usr/bin/su *,!/usr/bin/sudo *, !/usr/sbin/visudo, !/usr/bin/* *sudoers
그러나 sudo su user
세션에서 이 작업을 수행하면 예상했던 "이 명령을 실행할 권한이 없습니다."라는 메시지 대신 "...을 받았습니다."라는 메시지가 표시됩니다.
어떤 아이디어가 있나요?
감사해요
답변1
그 sudoers
줄을 삭제하세요!
이것이 기본값이므로 누군가에게 접근할 수 없다고 말할 필요는 없습니다. 또한 공격 표면이 미미한 주요 보안 허점이 열리고 있습니다. 다음 명령은 친구 계정에서 실행할 수 있습니다 user
.
sudo -s
이것조차,
cp /bin/sh mysh
chmod a+x mysh
sudo ./mysh
두 경우 모두 이제 루트 쉘이 있습니다.
또한 무제한 실행 권한이 있는 그룹에 친구의 계정을 추가하지 마세요 . (일반적으로 이는 또는 그룹 sudo
입니다 .)sudo
wheel
그런데, visudo
과거에 예상대로 편집했다면 아마도 다음과 같은 경고를 받았을 것입니다./etc/sudoers
Warning: /etc/sudoers:37:122: Cmnd_Alias "DISABLE_SU" referenced but not defined
Warning: /etc/sudoers:37:122: Cmnd_Alias "DISABLE_SUDO" referenced but not defined
어쩌면 당신은 그것을 정의했지만 당신의 질문에는 언급되지 않았습니다. 이를 수정해도 여기에 설명된 문제가 방지되지는 않습니다.
"라고 언급도 하셨습니다.sudo su user
회의에서 이런 일을 할 때 ...". sudo
옵션이 없는 명령은 root
권한을 부여합니다. 루트가 되면 이 명령을 실행할 수 있으며 su user
이를 통해 user
친구의 계정에 액세스할 수 있습니다. 계정에서 명령을 실행하는 경우 친구의 계정에 액세스하려면 비밀번호가 필요합니다. 계정이며, 귀하의 계정은 /etc/sudoers
파일의 권한을 확인하는 것입니다. 친구의 계정에서 실행하면 해당 계정에 전체 권한을 부여한 것이며 sudo
간단히 실행하여 sudo -s
루트 쉘을 얻을 수 있습니다.
답변2
아무것도 할 필요가 없습니다. 기본적으로 사용자에게는 sudo
액세스 권한이 없으며 su
이 사용자를 사용하려면 루트 비밀번호가 필요합니다.
sudo
사용자를 추가하거나 sudoers
이미 액세스 권한이 있는 그룹에 추가하여 사용자가 이를 사용하도록 명시적으로 허용하지 않는 한 sudo
, 사용자는 이를 사용할 수 없습니다.