SSH 사용자가 명령줄을 실행하지 못하도록 방지

SSH 사용자가 명령줄을 실행하지 못하도록 방지

사용자가 명령줄을 실행하는 것을 방지할 수 있는 방법이 있는지 궁금합니다( ls -la가동 시간과 같은 간단한 작업도...). 사용자의 bash 파일 삭제와 같은 몇 가지 작업을 시도했지만 작동하지 않았습니다.

모든 사용자는 관리자가 생성한 자체 SSH 키를 사용하여 서버에 로그인할 수 있습니다. 서버는 인증만을 위한 것이므로 사용자에게 명령을 실행할 수 있는 권한을 부여하고 싶지 않습니다. 내가 원하는 것은 사용자가 서버에 로그인하고 거기에 머물면서 다른 작업을 수행할 수 없다는 것입니다.

답변1

사용자 쉘을 변경해 보셨나요?

chsh -s /bin/true username

VsFTP와 같이 셸이 필요하지 않은 서비스에 공통적입니다.

답변2

로그인 쉘을 nologin으로 변경할 수 있습니다.

~# chsh -s /usr/sbin/nologin 

쉘 목록:

~# chsh -l

그러나 귀하의 의견을 읽으면서 실행 파일에 대한 액세스를 허용하고 거부하려고 합니다. 당신이 할 수 있는 일은 디렉토리의 바이너리에서 "other s" 실행 비트를 제거하는 것입니다 /usr/bin. uptime다음을 사용하여 테스트했습니다 .

~# chmod o-x /usr/bin/uptime

그러면 일반 사용자의 경우 다음과 같은 결과를 얻을 수 있습니다.

user@laptop ~$ uptime
bash: /usr/bin/uptime: Permission denied

변경 사항을 취소하려면:

 ~# chmod o+x /usr/bin/uptime

예를 들어 실행 파일의 대상을 찾으려면 ls다음 명령을 사용합니다 which.

user@laptop ~$ which ls
/usr/bin/ls

그리고 which이것을 발견했습니다 which:

~$ which which

Linux 디렉터리에 대해 자세히 알아보려면 맨페이지를 참조하세요.

~$ man hier
   hier - description of the file system hierarchy

편집하다:

이로 인해 시스템이 누락될 수 있습니다(또는 사용자가 명령을 통해 전환하는 기능을 거부하기 위해 이 작업을 수행함 su). ACL 권한(제어 목록)을 사용하면 각 사용자에게 특정 권한을 추가하게 됩니다. 예를 들어 거부사용자 1사용 uptime:

# setfacl -m u:user1:--- uptime

이 작업은 재귀적으로 수행할 수 있지만 그에 따른 위험은 사용자 본인이 감수해야 합니다. 그리고 원래 권한을 복원할 수 있는 업데이트를 주의하세요.

답변3

나는 이것을 달성하기 위해 그것을 사용할 것입니다 chmod.

예를 들어 사용자의 읽기, 쓰기 및 실행 권한을 취소하려면 다음을 수행하면 됩니다.

sudo chmod 770 <filehere>

실제로 수행되는 작업을 자세히 살펴보면 다음과 같습니다.

1st Determines the permissions in which the owner of the file has
7 = rwx (Read-Write-Execute)

2nd Determines the permissions in which the owner's group has
7 = rwx (Read-Write-Execute)

3rd Determines the permissions in which everyone else has
0 = --- (No permissions)

"다른 사람"의 읽기, 쓰기, 실행을 제한하는 방법입니다./bin/cat

sudo chmod 770 /bin/cat

다음을 실행하여 변경 사항을 확인할 수 있습니다.ls -la /bin/cat

관련 정보