Apakah ada cara untuk berhenti harus menulis 'sudo' untuk setiap hal kecil di Linux?


59

Saya akan melakukan sejumlah besar pekerjaan PHP sebentar lagi, dan saya tertarik untuk belajar RoR, jadi saya menginstal Linux Mint 12 di VirtualBox saya.

Aspek yang paling membuat frustrasi dari switch, sejauh ini, telah berurusan dengan izin Linux. Sepertinya saya tidak dapat melakukan sesuatu yang berguna (seperti, katakanlah, salin tarball Symfony2 dari direktori Downloads saya ke root dokumen saya dan ekstrak) tanpa berpose sebagai root via sudo.

Apakah ada cara mudah untuk memberitahu linux untuk memberi saya akses tanpa batas ke direktori tertentu tanpa hanya membuka semua izin mereka?


1
Banyak distirubution akan memiliki grup yang diberdayakan untuk mengedit konfigurasi untuk berbagai utilitas sistem. Tempatkan diri Anda dalam grup itu dan buka shell baru.
dmckee

Apakah lebih baik mengarahkan root dokumen ke sesuatu di direktori Beranda saya?

3
'Sudo' adalah salah satu dari perintah konyol yang digunakan dan disalahgunakan terlalu sering oleh pengguna Linux baru. Seringkali saya akan melihat tutorial di web di mana 15 perintah berturut-turut akan menggunakan sudo? Dalam situasi normal, Anda seharusnya tidak memerlukan izin khusus saat masuk sebagai pengguna biasa (disarankan). Saya berada di sebuah perusahaan tempat semua yang mereka lakukan menggunakan sudo. Ketika saya mencoba untuk melarangnya (untuk alasan keamanan), mereka mengeluh. Setelah memeriksa file konfigurasi sudo rahasia, saya melihat sebuah cacat (seperti biasa) yang memungkinkan saya untuk 'me-root' sistem dari pengguna biasa itu. Sudo sangat berbahaya !!
Jeach

Jawaban:


77

Dua pilihan muncul di benak saya:

  1. Miliki direktori yang Anda inginkan dengan menggunakan chown:

    sudo chown your_username directory 
    

    (ganti nama_Anda dengan nama pengguna dan direktori dengan direktori yang Anda inginkan.)

  2. Hal lain yang dapat Anda lakukan adalah bekerja sebagai root selama Anda TAHU APA YANG ANDA LAKUKAN . Untuk menggunakan root lakukan:

    sudo -s
    

    dan kemudian Anda bisa melakukan apa saja tanpa harus mengetik sudosebelum setiap perintah.


"Hal lain yang dapat Anda lakukan adalah bekerja sebagai root selama Anda TAHU APA YANG ANDA LAKUKAN. Untuk menggunakan root lakukan ..." - Yah, itu membatalkan praktik terbaik yang distro dan komunitas keamanan telah coba ajarkan kepada pengguna. Terkait: "apa prinsip hak istimewa" .

16

Secara umum, selalu bekerja sebagai pengguna Anda sendiri kecuali jika Anda melakukan sesuatu dengan dampak seluruh sistem.

Jika ada file yang ingin Anda pasang di server web Anda, bekerja sebagai pengguna Anda sendiri dan kemudian gunakan sudountuk meletakkan file di tempat di area penyajian web dari sistem file Anda. Biasanya, itu akan dilakukan oleh skrip instalasi, dan Anda akan menjalankan sesuatu seperti sudo -u webmaster install-webserver-files, atau lebih baik sudo -u webmaster git update(atau sistem kontrol versi pilihan Anda).

Jika Anda bekerja pada server pengembangan dan ingin file Anda dapat diakses secara instan, buat direktori di area server web dan buatlah itu dimiliki atau setidaknya dapat ditulisi oleh Anda. Setelah operasi satu kali ( sudo chown …atau sudo -u webmaster setfacl …), Anda tidak akan memerlukan hak tinggi untuk operasi sehari-hari.

Kadang-kadang nyaman untuk memungkinkan banyak pengguna menulis dalam direktori, atau memiliki izin berbeda untuk beberapa pengguna selain pemilik atau untuk beberapa grup. Daftar kontrol akses memberi Anda kemampuan ini. Lihat Masalah izin untuk direktori bersama di server atau Masalah izin skrip cadangan .


3

Ya, login sebagai root yang memberi Anda kontrol akses pengguna super.
Konsep yang sama di windows, Anda dapat masuk ke terminal Anda menggunakan administrator.


Saya sadar Anda langsung menjawab pertanyaan pengirim asli. Tetapi ini adalah saran yang buruk, yang menjelaskan tentang pemilihan suara.
bignose

Seperti yang Anda kaitkan ke Windows.
LeWoody

3

Itu selalu menjadi ideologi saya bahwa, sebagai pengguna Anda dapat melakukan apa pun yang Anda inginkan di Linux dan untuk yang lainnya, selalu ada sudo. sudomemungkinkan untuk mengeksekusi beberapa hal seperti beberapa pengguna lain, paling sering kasus seperti rootuntuk administrasi sistem. sudotelah menjadi sumber daya keuntungan yang lebih besar untuk mendelegasikan beberapa tugas rutin dan hak istimewa saya sebagai pengguna (root) ke beberapa orang lain dan membantu mengatur waktu saya dan waktu orang lain dengan lebih baik tanpa meningkatkan hak istimewa lebih dari apa yang diperlukan. Pada saat yang sama, kepercayaan saya pada mereka yang membuat entri mereka tetap ada disudoersfile konfigurasi. Saya tidak yakin apakah itu dapat dikaitkan tetapi yang dapat saya katakan adalah bahwa, sudo memang memberi Anda perspektif keamanan yang lebih baik tentang siapa semua dan apa yang dapat mereka lakukan dengan hak istimewa tepercaya mereka. Bahkan jika terjadi kesalahan, mereka tetap bertanggung jawab. (Saya selalu dapat melakukan beberapa licik dengan informasi log sudoers untuk menemukan penyebabnya juga). Teman-teman saya selalu menyatakan keprihatinan mereka kepada saya bahwa mereka harus mengetikkan sudo untuk semua yang ingin mereka lakukan dengan hak istimewa yang tinggi di lingkungan Linux. Di sini saya menemukan pertanyaan yang sama juga.

Untuk melihat solusi dan pencarian saya untuk menemukan alternatif, saya menemukan Kontrol Akses Berbasis Sumberdaya RBAC tetapi di tanah petualangan lain Solarisdengan alat-alat seperti pfexecdll. Pendekatan ini lebih baik karena ini akan menjaga hak-hak pengguna yang sudah meningkat dan akan percaya pada hati nurani dan kewaspadaan dari apa yang sysadmin ingin lakukan dengan hak istimewa mereka.

Mempertimbangkan solusi yang tersedia dari RBAC dan implementasinya di dunia Linux, saya tersandung

SELinux http://www.ibm.com/developerworks/linux/library/l-rbac-selinux/

grsecurity http://en.wikipedia.org/wiki/Grsecurity

dan sementara ada beberapa implementasi lain, saya akan mempertimbangkan mereka di urutan teratas daftar. Menerapkan RBAC adalah banyak pekerjaan dalam suatu organisasi, terutama ketika ada banyak pengguna. RBAC akan terdengar solusi yang lebih besar di lingkungan yang homogen. Namun, ketika ada instalasi Unix heterogen di jaringan dan database pengguna adalah umum, maka ini mungkin akan gagal. Karena SELinux tidak scalable / diimplementasikan pada Solaris dan alat RBAC / pfexec tidak diimplementasikan di Linux. Ada berbagai pendekatan untuk melakukan satu hal. Misalnya: http://blogs.oracle.com/darren/entry/opensolaris_rbac_vs_sudo_howto

Instalasi jaringan yang berbeda mungkin tidak mendukung pendekatan ini (namun openrbac dapat dianggap sebagai pendekatan implementasi umum) seperti sudoers adalah pendekatan host tunggal atau tidak mampu melakukan konfigurasi terpusat dalam jaringan / domain./etc/sudoersperlu disinkronkan setiap kali ada perubahan. Selain itu, ada persyaratan basis pengetahuan saat mengoperasikan file sudoers, diperlukan untuk memahami bahasa kebijakan dari konfigurasi sudoers untuk tidak membuat kesalahan dan mengizinkan hibah. RBAC dapat menawarkan pendekatan terpusat sampai batas tertentu, sementara profil keamanan dapat umum, menambah / menghapus pengguna dari peran yang diberikan dapat dilakukan dari satu tempat (yaitu tempat penyimpanan informasi pengguna / sandi / grup untuk domain seperti LDAP, NIS atau AD). Ini juga secara implisit perlu memahami perintah yang diperlukan untuk beroperasi pada basis data RBAC seperti smexec, smmultiuser, menjadi sedikit.

Sudo mungkin menawarkan lebih banyak pendekatan lintas-platform di sini yang masih berfungsi pada semua platform Unix / like yang menawarkan fitur setuid. Baik sudodan RBACberhasil memberi pengguna non-root beberapa hak istimewa yang dapat dilakukan tanpa memberikan rootkata sandi itu sendiri. Sudo dapat memberikan pendekatan yang lebih halus / granular pada argumen baris perintah yang dapat digunakan saat menjalankan perintah dan membatasi murni pada perintah apa dengan argumen yang dapat dijalankan dengan hak istimewa yang ditingkatkan. Sementara RBAC dapat membatasi untuk menggunakan hingga perintah atau binari yang diinstal tetapi tidak memiliki kontrol atas argumen baris perintah. Audit jauh lebih baik dan terintegrasi di lingkungan RBACsudo, itu tergantung pada konfigurasi dan juga kendala keamanan yang diambil (seperti tidak memberikan shell dan terutama host diizinkan untuk masuk ke host lain tanpa masalah). Ini hanya beberapa perbedaan yang bisa saya kutip dan saya pribadi memiliki kecenderungan untuk menggunakan sudo daripada RBAC, walaupun dengan keterbatasan tersebut saya bisa datang mengimplementasikan beberapa pekerjaan di sekitar. Sampai semua masalah ditangani oleh RBAC untuk keuntungan sudo yang lebih baik, saya tidak berpikir sudo akan hilang karena itu sederhana.


1

Saya akan menemukan root dokumen tempat Anda bekerja, sehingga Anda memiliki akses penuh ke sana.

Untuk menghindari keharusan mengetikkan sudo setiap kali Anda memasang Permata, ikuti artikel ini di sini: http://forums.site5.com/showthread.php?t=11954

Saya juga sangat merekomendasikan menginstal RVM untuk mengelola versi Ruby dan Rails. http://beginrescueend.com/

Ini akan membuat hidup Anda jauh lebih mudah ketika Anda menemukan host yang ingin Anda gunakan untuk menggunakan aplikasi yang berbeda dari versi yang Anda kembangkan.


Tahu tentang rvm, tapi terima kasih atas tautan forum.
Produksi Besar

0

Jalankan perintah.

sudo su root

Anda sekarang dapat menjalankan perintah sebagai pengguna root. Hati-hati! Perintah apa pun yang dijalankan adalah sebagai pengguna root. Anda dapat mengacaukan segalanya dengan serius jika Anda tidak berhati-hati.

Atau Anda mengubah izin direktori untuk memungkinkan pengguna Anda menyimpan dan mengedit file.


4
Kenapa tidak adil sudo -s?
sarnold

1
Atau sudo -ikarena ini disimulasikan sebagai shell login. Ini mungkin sedikit lebih dekat dengan login root lokal asli daripada menjalankan bash atau shell lain melalui sudo.
Bastian Ebeling

1
kenapa tidak adil su? Apa obsesi dengan sudo ini? Anda tidak perlu sudo. Pernah.
orion

2
afaik, tidak mungkin hanya menggunakan sujika kata sandi root tidak diketahui. menambahkan pengguna ke sudoers dan menjalankan sudo sumemungkinkan pengguna untuk menggunakan kata sandi pengguna yang ada dan dikenal untuk meningkat
Luke

0

Edit / etc / passwd file dan beri izin root ke pengguna "yourUserName" dengan mengubah ID Pengguna dan Grup menjadi UID 0 dan GID 0:

yourUserName: 0: 0 :: / home / yourUserName: / bin / sh


2
Jangan rekomendasikan mimpi buruk keamanan! Ini adalah praktik yang paling buruk.
countermode

Saya menggunakan solusi ini untuk pi raspberry saya di mana saya tidak memiliki akun pengguna lain dan terhubung ke jaringan rumah saya
Ufuk özkanlı

0

Seperti yang ditunjukkan oleh jawaban lain, solusi terbersih adalah mengubah kepemilikan file dan direktori yang perlu Anda akses. Anda juga bisa membuat grup khusus baru, mengubah kepemilikan grup atas file dan direktori ke grup ini, dan mengatur grup menulis izin untuk file dan direktori ini. Terakhir, atur bit SGID pada direktori sehingga jika Anda membuat file baru, itu akan mewarisi kepemilikan grup dari direktori yang berisi (yaitu grup khusus).


-1

user @ server: ~ $ sudo passwd root
[sudo] kata sandi untuk pengguna:
Masukkan kata sandi UNIX baru:
Ketik ulang kata sandi UNIX baru:
passwd: kata sandi berhasil diperbarui
pengguna @ server: ~ $ su
Kata sandi:
root @ server: / home / pengguna #

Apakah "#" bisikan itu bukan sesuatu yang indah?

Saya menggunakan "sudo" hanya sekali untuk mencapai kemampuan

user @ server: ~ $ su
Kata sandi:
root @ server: / home / user #

untuk kehidupan server.

Untuk membuatnya aman lagi,

root @ server: / home / user # keluar
keluar
user @ server: ~ $

Sysadmin telah melakukan ini selama bertahun-tahun ketika "sudo" bukan bagian dari tren mollycoddling.

Ketika Anda melakukan ini, itu adalah tanggung jawab Anda untuk berhati-hati, bukan milik saya.

Ian


Benar-benar biola. Coba sudo -s. Pekerjaan selesai
roaima
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.