Saya tidak bisa masuk sebagai root dengan perintah su, tetapi saya bisa dengan SSH


17

Bagaimana mungkin saya tidak bisa login sebagai root oleh su rootatau su(saya mendapatkan kesalahan kata sandi salah), tetapi saya bisa login dengan ssh root@localhostatau ssh root@my_local_IPdengan kata sandi yang sama?

Saya menggunakan CentOS 6.4.


Pembaruan1 :

cat /etc/pam.d/su

memberi:

#%PAM-1.0
auth        sufficient  pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth       sufficient  pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth       required    pam_wheel.so use_uid
auth        include     system-auth
account     sufficient  pam_succeed_if.so uid = 0 use_uid quiet
account     include     system-auth
password    include     system-auth
session     include     system-auth
session     optional    pam_xauth.so

Pembaruan2 :

$ sudo grep su /var/log/secure | grep -v sudo

memberi:

Feb 23 13:12:17 fallah su: pam_unix(su:auth): authentication failure;
logname=fallah uid=501 euid=501 tty=pts/0 ruser=fallah rhost=  user=root

diulang sekitar 20 kali.


1
Coba hapus file /etc/securetty( cp /etc/securetty{,.old}; : > /etc/securetty). Jika itu masih tidak berhasil, berikan konten /etc/pam.d/su.
Patrick

2
Tentunya dengan ssh 192.168.1.218Anda hanya masuk seperti diri Anda sendiri? Untuk masuk sebagai root via sshbiasanya perlu ssh root@192.168.1.218atau ssh root@localhost.
Graeme

1
Dapatkan PID (12345) dari shell Anda ( echo $$), buka (misalnya via ssh) shell root (diperlukan untuk melacak binari SUID) dan mulai straceuntuk shell itu: strace -o su.strace -p 12345 -fdan cari kesalahan aneh sebelum pesan kesalahan. Atau salin 30 baris terakhir sebelum pesan kesalahan ke pertanyaan Anda jika Anda tidak terbiasa dengan output semacam itu.
Hauke ​​Laging

1
@ HaukeLaging, katanyaProcess 11736 attached - interrupt to quit
Alireza Fallah

2
OK, itu alasannya tidak bekerja. / bin / su perlu mengaktifkan setuid-nya sehingga ketika pengguna biasa (non-root) menggunakannya, ia akan memiliki akses ke daftar kata sandi di / etc / shadow. Ketik, sebagai root, chmod 4755 /bin/suuntuk memperbaikinya.
Mark Plotnick

Jawaban:


23

Dalam komentar Anda, Anda mengatakan /bin/sumemiliki mode / pemilik berikut:

-rwxrwxrwx. 1 root root 30092 Jun 22 2012 /bin/su

ada dua masalah disini.

  • ia perlu memiliki bit set-uid dihidupkan, sehingga selalu berjalan dengan izin root, jika tidak ketika pengguna biasa (non-root) menjalankannya, itu tidak akan memiliki akses ke info kata sandi /etc/shadowatau kemampuan untuk mengatur userid ke pengguna baru yang diinginkan.

  • itu harus mematikan groupdan othermenulis bit, sehingga pengguna lain tidak dapat mengubahnya.

Untuk memperbaikinya, login sebagai root- Anda mengatakan Anda bisa melakukan ini dengan ssh- dan ketik

chmod 4755 /bin/su

atau, sebagai alternatif,

chmod u+s,g-w,o-w /bin/su

( Dokumen standar untuk chmod merinci lebih lanjut tentang jenis argumen apa yang diperlukan.) Ini akan mengembalikan bit mode ke cara mereka ketika sistem operasi pertama kali diinstal. Ketika Anda mendaftar file ini, itu akan terlihat seperti ini:

-rwsr-xr-x. 1 root root 30092 Jun 22 2012 /bin/su

Sebagaimana dicatat oleh @ G-Man, file-file dengan mode 777 dapat ditimpa oleh pengguna yang tidak terpercaya, dan jika itu masalahnya, Anda mungkin ingin menginstalnya kembali dari media distribusi atau cadangan.


1
Saya biasanya menggunakan like:, untuk chmod 755 /bin/suapa tambahan 4 ?
Alireza Fallah

Di 4posisi pertama mewakili izin set-uid. Saya telah mengedit jawaban saya untuk menambahkan cara alternatif untuk menggunakan chmod menggunakan nama simbolis untuk bit izin. Semoga itu akan lebih jelas.
Mark Plotnick

Terima kasih banyak. Saya sekarang tahu bahwa saya melakukan chmod -R 777 /binkesalahan itu, dan itulah sebabnya saya dikutuk: D
Alireza Fallah

Saya juga mengajukan pertanyaan lain , maukah Anda melihatnya, mungkin Anda tahu jawabannya.
Alireza Fallah

cyberciti.biz/tips/… menjelaskan cara menggunakan rpmuntuk mengembalikan izin file, tapi saya belum mencobanya.
Mark Plotnick

10

1. grup roda?

Ini kemungkinan karena useid Anda tidak ada dalam wheelgrup. Pada distro Red Hat Anda dapat secara eksplisit melarang pengguna yang tidak ada dalam grup ini dari menjalankan superintah.

Berikut ini sukonfigurasi PAM yang terlihat secara default:

$ more /etc/pam.d/su
#%PAM-1.0
auth        sufficient  pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth       sufficient  pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth       required    pam_wheel.so use_uid
auth        include     system-auth
account     sufficient  pam_succeed_if.so uid = 0 use_uid quiet
account     include     system-auth
password    include     system-auth
session     include     system-auth
session     optional    pam_xauth.so

Baris ini dapat membatasi akses ke superintah untuk pengguna dalam wheelgrup:

auth        required    pam_wheel.so use_uid

Dari suaranya, ini diaktifkan dan userid Anda tidak diizinkan mengoperasikan superintah.

SSH bekerja karena melewati mekanisme PAM yang berbeda. SSH juga memiliki fasilitas sendiri untuk membatasi akses ke login root juga. Login root biasanya diizinkan secara default, setidaknya di sebagian besar distro Red Hat:

$ sudo grep PermitRoot /etc/ssh/sshd_config 
#PermitRootLogin yes
# the setting of "PermitRootLogin without-password".

Meskipun hal di atas dikomentari, itu adalah default, dan bagaimana OpenSSH menunjukkan itu adalah pengaturan default pada konfigurasi.

Bekerja dengan ini?

Jika sistem Anda dikonfigurasi seperti ini, Anda dapat menambahkan nama pengguna Anda ke wheelgrup.

$ useradd -G wheel saml

Setelah logout dan kembali:

$ groups
saml wheel

CATATAN: Userid saya adalah "saml" di atas.

2. Izin di su?

Periksa bahwa executable dimiliki oleh root.

$ type -a su
su is /usr/bin/su
su is /bin/su

$ ls -l /usr/bin/su /bin/su
-rwsr-xr-x. 1 root root 32064 Jan 13 06:31 /bin/su
-rwsr-xr-x. 1 root root 32064 Jan 13 06:31 /usr/bin/su

Juga konfirmasikan bahwa file executable mereka sdiaktifkan. Ini membuat mereka setuid, sehingga ketika dieksekusi mereka jalankan sebagai milik mereka, root.

3. Apa yang dikatakan oleh log?

Ketika Anda mencoba melakukan su -perintah, Anda akan melihat entri /var/log/securetentang upaya tersebut.

$ sudo grep su /var/log/secure | grep -v sudo
Feb 23 23:31:26 greeneggs su: pam_unix(su-l:session): session opened for user root by saml(uid=0)
Feb 24 00:27:32 greeneggs su: pam_unix(su-l:session): session closed for user root
Feb 24 01:34:12 greeneggs su: pam_unix(su-l:session): session opened for user root by saml(uid=1000)
Feb 24 01:34:26 greeneggs su: pam_unix(su-l:session): session closed for user root

Konsultasikan log ini untuk melihat apakah Anda mendapatkan info tambahan.

4. Apakah Anda yakin kata sandi bukan masalahnya?

Ketika saya mencoba masuk menggunakan su -saya mendapatkan yang berikut ketika saya memberikannya kata sandi yang salah:

$ su -
Password: 
su: Authentication failure
$

Saya akan mencoba membuat akun lain dan melihat apakah akun sekunder ini dapat berjalan dengan su -sukses.


terima kasih atas jawaban Anda yang hebat, apa yang saya coba setelah membaca jawaban Anda:, usermod -a -G wheel my_usernamedan hasilnya groupsadalah fallah wheel. Jadi hasilnya cat /etc/pam.d/susekarang dalam pertanyaan saya, DAN, sekali lagi saya tidak dapat login sebagai root oleh perintah su !!!
Alireza Fallah

ini adalah baris terakhir dari /var/log/secure:Feb 24 10:19:45 fallah su: pam_unix(su:auth): authentication failure; logname=fallah uid=501 euid=501 tty=pts/2 ruser=fallah rhost= user=root
Alireza Fallah

dan baris ini diulang sekitar 20 kali dalam/var/log/secure
Alireza Fallah

4: tetapi ketika saya mencoba: su: incorrect password - dan kata sandinya benar, karena saya dapat mencatat dengan kata sandi yang sama di SSH
Alireza Fallah

Saya juga mencoba masuk dengan akun lain, seperti su alireza, dan lagi-lagi masalah yang sama
Alireza Fallah

0

Jika Anda mendapatkan pesan kesalahan seperti ini

su: PAM adding faulty module: /lib64/security/pam_tally.so
su: PAM unable to dlopen(/lib64/security/pam_tally.so): /lib64/security/pam_tally.so: cannot open shared object file: No such file or directory

Lakukan langkah ini:

ln -s /lib64/security/pam_tally2.so /lib64/security/pam_tally.so

Lalu coba su. Itu harus bekerja.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.