Mengapa saya tidak bisa menjalankan `su`? (dan bagaimana yang harus saya lakukan?)

33

Setiap kali saya mencoba mengeluarkan susaya mendapatkan ini:

$ su  
Password:  
su: Sorry

Tak perlu dikatakan, saya memasukkan kata sandi admin yang benar yang berfungsi dengan baik sudo. Yang saya inginkan adalah tidak harus memasukkan sudosetiap waktu.

Petruza
sumber

Jawaban:

34

Di MacOS X, pengguna root dinonaktifkan secara default, karena itu sutidak akan berfungsi. Seperti yang dinyatakan orang lain, yang terbaik adalah menggunakannya sudo.

Jika Anda harus mengaktifkan user root, lihat TECHNOTE Apple: Mengaktifkan dan menggunakan "root" user di Mac OS X .

ghoppe
sumber
13
sudo sumasih berfungsi, jadi tidak benar-benar dinonaktifkan. Itu hanya tidak memiliki kata sandi.
Nama Palsu
@FakeName Ini adalah backdoor paling lucu! Jika Anda bisa lari sudo su, apa gunanya menonaktifkan suitu?
Ngarai Kolob
3
@ KolobCanyon - Intinya bukan untuk "menonaktifkan su", itu untuk mencegah login root . Dengan menolak login sebagai root, Anda mencegah banyak masalah keamanan yang mungkin terjadi. Tidak mengizinkan seseorang yang bisa sudountuk suadalah konyol. Pada dasarnya, sucukup ubah user-id saat ini, dan jalankan perintah (shell, jika tidak ditentukan). Jika user-id sudah 0 (root), seperti ketika dieksekusi dengan sudo, tidak ada yang bisa dilakukan, jadi itu hanya menjalankan shell. Anda bisa mendapatkan efek serupa dengan melakukan sudo bash.
Nama Palsu
1
@FakeName Masih bingung. Apa perbedaan antara masuk sebagai root dan menjalankan 'sudo su'? Bukankah ini level yang sama efektif?
Ngarai Kolob
2
@KolobCanyon - Tidak. Pada dasarnya, jika Anda menonaktifkan login , itu berarti bahwa jika ada kerentanan dalam proses login, seorang hacker tidak dapat menggunakannya untuk mendapatkan root secara langsung. Pada dasarnya, ini memindahkan kompromi root yang diperlukan dari "login login" ke "login login untuk akun pengguna + privesc". Ini pada dasarnya dilakukan sebagai hal pertahanan yang mendalam.
Nama Palsu
14

Anda memiliki dua opsi. Yang pertama adalah menggunakan sudo -s- ini akan memberi Anda akses pengguna super, tetapi Anda akan tetap 'sendiri' (jadi untuk berbicara), jadi hal-hal seperti ~akan tetap menjadi direktori home Anda. Atau, Anda dapat menggunakan sudo su, yang memberi Anda shell sebagai pengguna root aktual Mac Anda.

Kyle Cronin
sumber
5
Apple Way (tm) digunakan sudountuk menjalankan perintah yang membutuhkan hak yang lebih tinggi, bukan untuk beralih ke shell root dan bekerja darinya.
Ian C.
3
@Ian C. - Tidak, itu sebenarnya cara unix. Apple hanya menggunakannya karena berbasis * nix juga.
Nama Palsu
@Fake Name: Apple berusaha keras untuk tidak pernah berbicara atau mengekspos shell root kepada pengguna. Bisa dibilang mereka mengambil sudoetos secara ekstrim. Tapi apa pun: semantik. Jangan gunakan shell root di OS X.
Ian C.
1
@Ian C - Apple tidak melakukan lebih dari yang dilakukan desainer * nix, Apple tidak banyak membicarakannya. Dalam kedua kasus, itu ada, hanya dengan hal-hal seperti linux, mereka memberi tahu Anda cara menggunakannya dengan mudah. Jika itu membuatnya lebih banyak digunakan , itu tidak menunjukkan perbedaan arsitektur yang mendasarinya.
Nama Palsu
1

Misalnya, jika Anda perlu memindahkan file atau menggunakan git menggunakan CLI maka, dalam hal ini, solusi terbaik adalah menggunakan sudo -sperintah. Setelah perintah itu, Anda tidak harus terus memasukkan kata sandi berulang kali.

Kahef Mirza
sumber
1

Saya pikir Anda tidak dapat melakukan ini sebagai pengguna "normal" ...

Jika ada akun pengguna lain dengan hak admin Anda harus menggunakan yang ini

restricted user$ su
Password:(the root password here)
Sorry!

restricted user$ su - (an admin account here)
password:(the admin account password)
$ su - root
Password:(The root password here)
# -> You are root user now
pengguna302849
sumber
1

Solusi modern: sudo -u

Untuk menjalankan sebagai penggunaan lain, gunakan sudo -u.

Misalnya, untuk menjalankan editor teks seperti nano :

sudo -u someuser nano

... dan masukkan kata sandi pengguna admin Mac Anda saat diminta. Pada titik ini, pengguna admin Mac Anda yang memohon sudo, bukan someuserpengguna sehingga Anda tidak memasukkan someuserkata sandi.

  • sudo berarti menjalankan sesuatu menggunakan hak superuser.
  • -u berarti "jalankan perintah yang ditentukan sebagai pengguna yang ditentukan ini".
  • someuser harus diganti dengan nama pengguna yang Anda inginkan.

Untuk mensimulasikan login awal sebagai pengguna tertentu, termasuk menjalankan skrip startup mereka, gunakan -I.

sudo -u someuser -i nano

Ini menjalankan nanoaplikasi sebagai pengguna someusertetapi hanya setelah menjalankan skrip startup untuk pengguna tersebut.

Jika kami memilih untuk tidak menentukan perintah atau aplikasi yang akan dijalankan, kami dapat menjalankan shell interaktif sebagai pengguna itu.

sudo -u someuser -i

Sekolah tua: sudo su someuser

Pendekatan lain menggunakan superintah dalam kombinasi dengan sudo. The superintah berarti “switch user”.

sudo su someuser

Atau, untuk memasukkan menjalankan skrip startup pengguna, tambahkan tanda hubung.

sudo su - someuser

root pengguna

The rootpengguna dalam sistem operasi Unix yang berhubungan memiliki kekuasaan mutlak untuk melakukan apa pun.

Apple telah memilih untuk menonaktifkan rootakun di macOS, untuk menghindari eksploitasi kerentanan keamanan dan untuk melindungi Anda dari menembak diri sendiri. Apple menciptakan gagasan tentang akun pengguna Administrator yang memiliki banyak kekuatan, lebih banyak kekuatan daripada akun pengguna Standar , tetapi bukan kekuatan absolut seperti yang rootdimiliki. Lihat catatan Dukungan Apple ini untuk diskusi.

Jika perlu, Anda dapat mengaktifkan rootpengguna di macOS dan kemudian beralih ke pengguna itu. Ini sangat tidak dianjurkan. Saya akan menempuh jalan ini hanya sebagai jalan terakhir yang putus asa.


Untuk diskusi tentang ini dalam konteks postgrespengguna yang menjalankan sistem database Postgres di macOS, lihat Pertanyaan ini di situs saudara, DBA Stack Exchange .

Basil Bourque
sumber