사용자가 명령줄을 실행하는 것을 방지할 수 있는 방법이 있는지 궁금합니다( 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