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/binuptime以下を使用してテストしました。

~# 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

関連情報