Berikut ini mencegah akun terkunci dari mengganti cangkang mereka, dan secara selektif memungkinkan orang menggunakan chsh
sendiri TANPA sudo atau su:
Pengaturan sederhana yang masih aman:
Tambahkan ini paling atas /etc/pam.d/chsh
:
# This allows users of group chsh to change their shells without a password.
#
# Per: http://serverfault.com/questions/202468/changing-the-shell-using-chsh-via-the-command-line-in-a-script
#
auth sufficient pam_wheel.so trust group=chsh
Buat grup chsh:
groupadd chsh
Untuk setiap pengguna yang diizinkan mengganti shell mereka:
usermod -a -G chsh username
Uang tembakan:
user@host:~$ getent passwd $USER
user:x:1000:1001::/home/user:/bin/bash
user@host:~$ chsh -s `which zsh`
user@host:~$ getent passwd $USER
user:x:1000:1001::/home/user:/usr/bin/zsh
user@host:~$
chsh sebenarnya mengubah baris yang berkaitan dengan pengguna di / etc / passwd, meskipun pengguna hanya bisa mengubah 'line' sendiri di / etc / passwd. Karenanya, jika Anda ingin mengganti shell untuk pengguna lain, Anda memerlukan passwd-nya.
Jika Anda benar-benar ingin melakukannya (mengingat kekhawatiran di pos Lorenzo, dan kemungkinan masalah keamanan) berikut ini cara melakukannya:
Ini membutuhkan hak akses root.
Katakanlah Anda sedang menjalankan sebagai "alice" dan ingin mengubah "bob" shell tanpa kata sandi;
Tambahkan ke file:
Ini memastikan 'alice' dapat berjalan di semua host sebagai pengguna di grup SH tanpa kata sandi grup perintah di SHELL.
Mungkin agak jauh untuk melakukannya dengan cara ini, tetapi itu mungkin.
Pastikan untuk membaca "man sudoers" sebelum mengubah file sudores dengan 'visudo', terutama pesan yang berkaitan dengan keamanan!
sumber
sudo
adalah sangat mudah untuk mengelak dan me-root suatu sistem. Lebih baik tidak pernah berubahsudoers
kecuali ada kebutuhan khusus yang tidak dapat dipenuhi dengan cara lain (setuid / setgid dieksekusi, izin grup, dll.).Anda harus memasukkan nama pengguna; melakukan ini melalui
sudo
(atau dengan root) akan memungkinkan Anda untuk mengatur kata sandi / shell pengguna tanpa diminta kata sandi lama. Silakan periksaman chsh
informasi lebih lanjut.Sekarang pertanyaan saya adalah: mengapa Anda ingin melakukan itu? Jika ini adalah skrip pengaturan, bukankah sebaiknya Anda hanya mengganti shell pengguna pada waktu pembuatan (yaitu saat meluncurkan
adduser
)? Jika Anda mengkloning sistem dari jarak jauh, tidakkah Anda harus mengubahnya/etc/passwd
terlebih dahulu? Saya tidak melihat alasan untuk melakukannya melalui skrip, kecuali jika Anda mengotomatiskan seluruh proses instalasi dan pemilihan cangkang yang akan dipasang muncul setelah pembuatan pengguna pertama.sumber
#!/usr/bin/sudo -s
(baris shebang). Juga, Anda yakin zsh ada di / bin dan tidak, mungkin, di / usr / bin? (hanya memeriksa, saya tidak terbiasa dengan EC2)sudo
izin. Lihat milikku untuk pendekatan berbeda yang tidak diperlukansudo
untuk pengguna biasa.Saya percaya Anda dapat mengubah shell pengguna di
/etc/password
file, mungkin dengan menggunakanpasswd
perintah. Saya belum membacanya tetapi ini mungkin berguna: perbedaan shell UNIX dan cara mengganti shell Anda .sumber
chsh
atauusermod
. Jangan pernah mengeditpasswd
file secara langsung, selalu gunakanvipw
perintah untuk itu.Coba
sudo chsh -s /bin/zsh
, kemudian:echo $SHELL
- jika berhasil berubah :)sumber