ssh 명령을 제외한 사용자의 모든 명령을 제한하고 싶습니다

ssh 명령을 제외한 사용자의 모든 명령을 제한하고 싶습니다

저는 루트 사용자이고 사용자가 ssh를 제외한 모든 Linux 명령을 실행할 수 있기를 원하지 않습니다. 사용자는 ssh 명령만 사용해야 합니다. 그렇게하는 방법? 누구든지 도와주세요.

답변1

이를 달성하기 위해 취할 수 있는 몇 가지 접근 방식이 있습니다. 다음은 몇 가지 옵션입니다.

bash 셸에 내장된 제한 모드 사용: bash -r 또는 rbash를 실행하여 제한 모드에서 사용자 셸을 시작할 수 있습니다. 이렇게 하면 사용자가 디렉터리 변경, 환경 변수 설정, /bin/sh를 사용한 명령 실행 등 대부분의 명령을 실행할 수 없습니다. 그러나 사용자는 bash 셸에 내장된 cd, echo, exit 등의 명령을 계속 실행할 수 있습니다.

Bash 셸의 alias 명령 사용: alias 명령을 사용하여 사용자가 실행할 수 있는 사용자 지정 명령을 정의할 수 있습니다. 예를 들어 다음과 같이 ssh에 대한 별칭을 만들 수 있습니다.

alias ssh='/usr/bin/ssh'

이를 통해 사용자는 ssh 명령을 실행할 수 있지만 다른 명령은 실행할 수 없습니다.

bash 쉘의 내장 명령 사용: 내장 ​​명령을 사용하면 명령을 함수나 내장으로 실행하는 대신 명령줄에서 실행되는 것처럼 실행할 수 있습니다. 이를 사용하여 사용자가 특정 명령을 실행하도록 허용하면서 다른 명령은 실행하지 못하게 할 수 있습니다. 예를 들어:

command ssh

이를 통해 사용자는 ssh 명령을 실행할 수 있지만 다른 명령은 실행할 수 없습니다.

Bash 쉘의 내장 활성화 사용: 내장 ​​활성화를 사용하면 특정 쉘 내장 또는 명령을 활성화하거나 비활성화할 수 있습니다. 이를 사용하여 사용자가 특정 명령을 실행하도록 허용하면서 다른 명령은 실행하지 못하게 할 수 있습니다. 예를 들어:

enable -n ssh

이렇게 하면 ssh 명령이 비활성화되므로 사용자는 해당 명령을 실행할 수 없습니다.

Bash 셸의 내보내기 명령 사용: 내보내기 명령을 사용하여 사용자가 변경할 수 없는 환경 변수를 설정할 수 있습니다. 예를 들어:

export PATH=/usr/bin:/usr/sbin

이렇게 하면 사용자의 PATH 환경 변수가 /usr/bin 및 /usr/sbin 디렉토리만 포함하도록 설정되므로 사용자는 해당 디렉토리에 있는 명령만 실행할 수 있습니다.

사용자 정의 셸 사용: 사용자가 특정 명령만 실행할 수 있도록 허용하는 사용자 정의 셸을 만들 수 있습니다. 예를 들어 다음과 같은 ssh-only라는 셸 스크립트를 만들 수 있습니다.

#!/bin/bash

# Check if the first argument is "ssh"
if [ "$1" == "ssh" ]; then
  # If it is, run the ssh command
  /usr/bin/ssh "$@"
else
  # If it's not, print an error message
  echo "Command not allowed"
fi

그런 다음 chsh 명령을 사용하여 사용자 쉘을 /path/to/ssh-only로 설정하십시오. 이를 통해 사용자는 ssh 명령을 실행할 수 있지만 다른 명령은 실행할 수 없습니다.

관련 정보