
ユーザーがコマンドラインを実行するのを防ぐ方法があるかどうか疑問に思います(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