Pengguna ini saat ini tidak tersedia - tetapi bolehkan menjalankan skrip oleh pengguna ini

22

Saya membuat pengguna khusus di / etc / passwd dengan:

secure:x:2000:2000:secure:/bin:/usr/sbin/nologin

Saya tidak ingin mengizinkan masuknya pengguna ini (melalui konsol, ssh, ftp, apa pun).

Dia hanya menjalankan satu skrip melalui:

sudo su secure -c '/home/someuser/secure.script'

Tapi itu memberi saya This user is currently not available.. Bagaimana cara mengaturnya agar dapat menjalankan skrip dengan cara ini tetapi mencegah login (konsol, ssh, ftp, ...) pengguna ini ke sistem?


Saya perhatikan bahwa ketika saya mengetik /usr/sbin/nologinpada command-line, komputer merespons This account is currently not available..

Peter
sumber
Tentang sudo su, lihat unix.stackexchange.com/questions/218169/…
Kusalananda

Jawaban:

27

Ini adalah kasus penggunaan khas untuk sudo.

Anda sedang mencampuradukkan sudoyang memungkinkan menjalankan perintah sebagai pengguna lain dan sangat dapat dikonfigurasi (Anda dapat secara selektif menentukan pengguna mana yang dapat menjalankan perintah mana sebagai pengguna mana) dan suyang beralih ke pengguna lain jika Anda mengetahui kata sandi (atau root). suselalu menjalankan shell yang ditulis /etc/passwd, bahkan jika su -cdigunakan. Karena ini sutidak kompatibel dengan /usr/sbin/nologin.

Kamu harus menggunakan

sudo -u secure /home/someuser/secure.script

Seperti yang sudodapat dikonfigurasi, Anda dapat mengontrol siapa yang dapat menggunakan perintah ini dan jika ia perlu memasukkan kata sandi untuk menjalankannya. Anda perlu mengedit /etc/sudoersmenggunakan visudountuk melakukan ini. (Hati-hati saat mengedit / etc / sudoers dan selalu gunakan visudo untuk melakukannya. Sintaksnya tidak sepele dan satu kesalahan dapat mengunci Anda keluar dari akun root Anda.)

Baris dalam sudoer ini memungkinkan siapa pun dalam grup somegroupuntuk menjalankan perintah sebagai secure:

%somegroup    ALL=(secure) /home/someuser/secure.script

Ini memungkinkan siapa saja dalam grup somegroupuntuk menjalankan perintah securetanpa memasukkan kata sandi:

%somegroup    ALL=(secure) NOPASSWD: /home/someuser/secure.script

Ini memungkinkan user1untuk menjalankan perintah securetanpa memasukkan kata sandi:

user1    ALL=(secure) /home/someuser/secure.script
cg909
sumber
13

Saya menemukan masalah utama adalah " /usr/sbin/nologin" di /etc/passwd Ketika saya ingin mengeksekusi su dalam kasus ini, ia harus ada -s /bin/bashdi dalam, jadi misalnya:su -s /bin/bash -c '/home/someuser/secure.script' secure

Peter
sumber
1
Ya, sugunakan shell yang ditulis di / etc / passwd secara default. Menggunakan suadalah cara untuk masuk sebagai pengguna dari pengguna lain. nologinmencetak pesan "Pengguna ini saat ini tidak tersedia." dan keluar. sudotidak menggunakan shell untuk menjalankan perintah, jadi menggunakan sudotanpa suakan juga berfungsi. Lihat jawaban saya untuk lebih lanjut sudo.
cg909
2

sumenggunakan shell yang ditentukan dalam /etc/passwd.

Anda tidak perlu menggunakan sudengan sudo.

Karena itu jangan campur sudengan sudo: gunakan sudo -u secure '/home/someuser/secure.script'.

ctrl-alt-delor
sumber
-2

Ini mungkin tidak 100% relevan dengan pertanyaan tetapi dapat membantu seseorang yang memiliki pesan peringatan serupa This user is currently not available

1) Periksa dengan perusahaan hosting Anda jika Anda telah memberikan akses shell.

2) jika Anda menggunakan CWP7: Setel Shell Access ke ON masukkan deskripsi gambar di sini

ShapCyber
sumber
2
1) Akses Shell jelas tersedia ketika pertanyaan berbicara tentang menjalankan su, sudodan segala macam hal lainnya. 2) Tidak ada indikasi dalam pertanyaan bahwa instalasi yang dimaksud berada di belakang panel kontrol web dalam bentuk apa pun.
Philip Kendall
1
Ya (selain itu adalah situs tanya jawab, bukan forum). Tetapi bagian dari membantu adalah memastikan bahwa jawaban Anda benar-benar relevan dengan pertanyaan, dan saya tidak berpikir bahwa jawaban ini benar - benar relevan: poster sudah jelas memiliki akses shell, jadi bagaimana cara menyalakannya melalui panel kontrol (yang bahkan mungkin tidak ada) menyelesaikan masalah?
Philip Kendall
3
@ShapCyber: Perhatikan bahwa pertanyaan ini berkaitan dengan seseorang yang secara manual membuat pengguna khusus baru. Jawaban dalam "utas" (Pertanyaan) ini harus membahas situasi dalam pertanyaan itu. Jika Anda mengalami masalah berbeda yang menjadikan ini sebagai solusi, hal yang benar untuk dilakukan adalah Bertanya dan Jawab sendiri pertanyaan baru Anda.
Jeff Schaller
1
Apa yang dikatakan @JeffSchaller benar. Dan saya akan mendorong Anda, ShapCyber, untuk benar - benar tolong tanyakan dan jawab sendiri pertanyaan dengan masalah dan solusi yang Anda temui (cukup detail untuk bermanfaat); dan kemudian menambahkan komentar ke pertanyaan ini untuk menautkan ke Anda. Itulah cara terbaik untuk membantu pembaca di masa depan dalam rangka bagaimana situs ini diatur. :)
Wildcard
2
@ShapCyber ​​itu sebabnya kami mendorong Anda untuk membuka pertanyaan baru, sehingga pencarian menemukan jawaban yang tepat untuk masalah mereka.
Jeff Schaller