あなたはこれを間違った方法で行っているかもしれません。ユーザーに「制限付き」の bash シェルを提供する代わりに、root として実行する必要があるコマンドへのアクセスのみを許可する必要があります。たとえば、sudoers ファイルで:
tomc ALL=(root) /usr/bin/vim /etc/myapp.conf
tomc ALL=(root) /usr/bin/less /var/log/myapp/*.log
ユーザーが root として vim を実行できるようにする場合は注意してください。 Vim には、シェルへのエスケープや vim 内からコマンドを実行する機能など、多くの機能が組み込まれています。ディストリビューションによっては、sudoedit
がある場合があります。 利用可能。これは、シェル エスケープなどを処理するように設計されていることを除いて、通常の Vim と同じように機能します。
DSM 6 を実行している私の Synology Diskstation では、一貫して管理者ユーザーのみが ssh で接続できます (管理者以外のユーザーは /etc/passwd で /sbin/nologin としてシェルを持っています。これを /bin/sh に設定して一時的に ssh を許可することができますが、再起動時に) /etc/passwd ファイルがリセットされます)。このため、実行するためだけに存在するアカウントには、ある種の sudo 制限が必要です。 /sbin/電源オフ。 /etc/sudoers の次の行でうまくいきました:
# Allow guestx user to remote poweroff
guestx ALL=(ALL) !ALL
guestx ALL=NOPASSWD: /sbin/poweroff
翻訳:すべてのコマンドを許可せず、必要なコマンドのみを許可します (この場合はパスワードを要求しません)。
この構成では、sudo はパスワードを要求し、ホワイトリストに登録されたコマンド以外のコマンドでは失敗します:
[email protected]:~$ sudo su -
Password:
Sorry, user guestx is not allowed to execute '/bin/su -' as root on ds.
[email protected]:~$