Bagaimana saya bisa mengizinkan satu pengguna untuk su ke yang lain tanpa mengizinkan akses root?

53

Saya ingin mengizinkan pengguna tertentu untuk melakukan su ke akun pengguna lain tanpa harus mengetahui kata sandi akun itu, tetapi tidak mengizinkan akses ke akun pengguna lain (yaitu root).
Sebagai contoh, saya ingin mengizinkan Tom DBA untuk su ke pengguna oracle, tetapi tidak untuk pengguna atau root tomcat.

Saya membayangkan ini bisa dilakukan dengan file / etc / sudoers - apakah mungkin? Jika ya, bagaimana caranya?

gharper
sumber

Jawaban:

44

Ya, ini mungkin.

Di / etc / sudoers , item yang langsung mengikuti persamaan adalah pengguna yang akan dieksekusi sebagai perintah.

tom  ALL=(oracle) /bin/chown tom *

Pengguna (tom) dapat mengetikkan sudo -u oracle / bin / chown tom / home / oracle / oraclefile

Brent
sumber
5
Hal ini akan memungkinkan Tom untuk menjalankan perintah sebagai oracle, tapi tidak untuk benar-benar menjadi oracle pengguna
gharper
11
Bagaimana dengan sudo -u oracle su -? Itu akan memberinya shell dibuka sebagai pengguna oracle. Apakah itu yang kamu inginkan?
Brent
+1 untuk komentar terakhir itu, Brent. Itu akan menjadi jawaban saya.
Annika Backstrom
3
Sesuatu seperti yang berikut ini akan berfungsi: sudo -u oracle -s atau sudo -u oracle -i (-s untuk shell, -i untuk login - melakukan shell login). Sayangnya saya tidak tahu apa yang akan Anda gunakan di / etc / sudoers untuk membatasi pengguna, tetapi mengingat Anda mengizinkannya mengakses shell, Anda mungkin hanya ingin melakukan tom ALL = (oracle) ALL sebagai orang lain yang disebutkan. Jika mereka dapat menjalankan shell, Anda mungkin tidak peduli tentang pembatasan perintah yang dapat mereka jalankan.
Tandai
1
Idealnya, apakah Anda tidak ingin Tom menjalankan perintah sebagai pengguna oracle, alih-alih menjadi pengguna oracle? Perbedaannya sedikit, tetapi memberikan log audit yang bagus tanpa harus menggunakan shell audit.
Scott Pack
40

Tambahkan ke / etc / sudoers Anda seperti

tom ALL=(oracle) ALL

Maka pengguna tom harus dapat menggunakan sudo untuk menjalankan sesuatu sebagai pengguna oracle dengan opsi -u, tanpa membiarkan tom

Yaitu mendapatkan shell sebagai oracle pengguna (well, mengingat sudo Anda cukup baru untuk memiliki opsi -i).

sudo -u oracle -i
Kjetil Joergensen
sumber
5
Saya harus menggunakan sintaks tom ALL=(oracle)NOPASSWD:ALLuntuk membuat sudo tidak meminta kata sandi
snowindy
9

Untuk HANYA memberikan kemampuan dalam pertanyaan, tambahkan berikut ini ke / etc / sudoers:

tom            ALL=(oracle)    /bin/bash

Maka tom bisa:

sudo -u oracle bash -i
karimofthecrop
sumber
0

Sebagai contoh, saya ingin mengizinkan Tom DBA untuk su ke pengguna oracle, tetapi tidak untuk pengguna atau root tomcat.

Saya perlu melakukan ini pada sistem baru-baru ini dan mengalami kesulitan menemukan catatan saya pada pengaturan alternatif yang saya gunakan bertahun-tahun lalu yang juga memungkinkan sintaksis su <user>. Dalam situasi saya, saya perlu mengizinkan beberapa pengguna untuk pengguna sutertentu.

Buat grup menggunakan addgroup <groupName>yang pengguna lain dapat sumelakukannya tanpa kata sandi. Kemudian tambahkan grup itu ke setiap pengguna yang Anda ingin dapat ke supengguna itu tanpa kata sandi: usermod -a -G <groupName> <userName>(atau usermod -a -G oracle tom). Perubahan grup mungkin tidak berpengaruh hingga login berikutnya.

Catatan: Dalam kasus Anda, Anda sudah memiliki grup karena oraclegrup akan dibuat ketika Anda membuat pengguna oracle adduser oracle.

Sekarang edit /etc/pam.d/sudan di bawah ini:

# This allows root to su without passwords (normal operation)
auth       sufficient pam_rootok.so

baris aturan ..add auth sehingga bagian ini terlihat seperti ini:

# This allows root to su without passwords (normal operation)
auth       sufficient pam_rootok.so
auth       [success=ignore default=1] pam_succeed_if.so user = <groupName>
auth       sufficient   pam_succeed_if.so use_uid user ingroup <groupName>

Ganti <groupName>dengan oracledalam hal ini. Ini akan memungkinkan setiap pengguna yang merupakan bagian dari <groupName>tosu <groupName>

Sekarang tombisa su oracledan jika Anda perlu memberi pengguna lain akses yang sama, tambahkan mereka ke oraclegrup.

pertanyaan serupa di sini

jindlindsey
sumber