Bagaimana saya bisa mendapatkan shell interaktif sebagai pengguna non-root lainnya?

14

Saya menggunakan server Ubuntu 10,04 LTS, dengan model keamanan default (root terkunci, gunakan sudountuk meningkatkan hak istimewa). Kadang-kadang saya senang menggunakan sudo -iketika saya harus menjalankan serangkaian perintah dengan privilege yang ditinggikan, atau ketika saya perlu mencari-cari di direktori dengan privilege root-only.

Kadang-kadang, ketika mengatur perangkat lunak yang akan berjalan sebagai akun sistem non-privilege-nya sendiri ( adduser --system --group --no-create-home --disabled-login some-daemon-user) saya menemukan bahwa saya perlu menjalankan urutan perintah sebagai pengguna itu , bukan saya sendiri atau root. Saya sudah mencoba menggunakan sudo -i -u some-daemon-user, tetapi hanya mengembalikan 1status tanpa pesan kesalahan.

Saya sudah memeriksa syslog , messages, auth, dan debugfile log di /var/logdan tidak satupun dari mereka termasuk pesan referensi yang sudoatau akun yang bersangkutan.

Jadi, mungkinkah menjadi pengguna non-root lain, gaya sudo tanpa hanya mengatur kata sandi dan masuk (seperti mereka)? Apakah sistem saya 'rusak' atau saya salah melakukannya?

Calrion
sumber

Jawaban:

14

Ahmm .. masalahnya adalah bahwa shell standar dari para pengguna biasanya diatur ke /bin/falsedan untuk alasan keamanan Anda tidak boleh mengubah ini. Tapi Anda masih bisa menjalankannya misalnya:sudo -u www-data /bin/sh

Paul Hänsch
sumber
1
Bisakah Anda memberikan rincian lebih lanjut tentang "alasan keamanan"? Apakah ada bedanya jika saya menggunakan sudoshell sebagai pengguna, seperti yang disarankan Florian di atas?
Calrion
1
Alasannya adalah, bahwa penyerang yang melakukan login sebagai pengguna sistem, yaitu dengan mengeksploitasi bug dalam program login, kecil kemungkinannya berakhir dengan shell yang valid. Jadi, Anda harus meninggalkan pengaturan seperti di file / etc / passwd, meskipun itu hanya untuk karma yang baik. Meminta shell secara langsung melalui sudo tidak ada hubungannya dengan ini.
Paul Hänsch
Jadi masalahnya adalah mengatur shell di passwdfile, tidak benar-benar menjalankan shell sebagai pengguna. Kena kau!
Calrion
9

sudo -imenjalankan shell yang ditentukan oleh entri basis data kata sandi dari pengguna target, yang ditujukan /bin/falseuntuk pengguna sistem Anda.

Menggunakan

 sudo -u some-daemon-user bash

atau

sudo -u some-daemon-user -H bash

jika Anda ingin mengatur variabel lingkungan $ HOME yang ditetapkan untuk pengguna target.

Florian Diesch
sumber