Anda mungkin melakukan ini dengan cara yang salah. Alih-alih memberi pengguna bash shell 'terbatas', Anda sebaiknya hanya memberi mereka akses ke perintah yang mereka perlukan untuk dijalankan sebagai root. Misalnya, di file sudoers Anda:
tomc ALL=(root) /usr/bin/vim /etc/myapp.conf
tomc ALL=(root) /usr/bin/less /var/log/myapp/*.log
Berhati-hatilah saat mengizinkan pengguna menjalankan vim sebagai root. Vim memiliki banyak fitur bawaan, seperti escape ke shell dan kemampuan untuk menjalankan perintah dari dalam vim. Bergantung pada distribusi Anda, Anda mungkin memiliki sudoedit
tersedia. Ini berfungsi sama dengan Vim normal, kecuali Vim ini dirancang untuk menangani shell escape dan semacamnya.
Di Synology Diskstation saya yang menjalankan DSM 6, hanya pengguna admin yang dapat melakukan ssh secara konsisten (pengguna non-admin memiliki Shell sebagai /sbin/nologin di /etc/passwd - Anda dapat menyetel ini ke /bin/sh untuk mengizinkan sementara ssh, tetapi saat reboot file /etc/passwd diatur ulang). Untuk alasan ini diperlukan semacam pembatasan sudo untuk akun yang jika tidak ada hanya untuk dieksekusi, mis. /sbin/matikan. Baris berikut di /etc/sudoers bekerja untuk saya:
# Allow guestx user to remote poweroff
guestx ALL=(ALL) !ALL
guestx ALL=NOPASSWD: /sbin/poweroff
Terjemahan:larang semua perintah, lalu izinkan hanya perintah yang diinginkan (tanpa meminta kata sandi dalam hal ini).
Dengan konfigurasi ini sudo meminta kata sandi dan kemudian gagal untuk perintah selain yang masuk daftar putih:
[email protected]:~$ sudo su -
Password:
Sorry, user guestx is not allowed to execute '/bin/su -' as root on ds.
[email protected]:~$