Mengapa saya harus melakukan sudo untuk melakukan sesuatu di luar direktori home saya?

2

Saya baru saja menginstal desktop Linux pertama saya (64-bit Ubuntu 12.04) dan saya bermain-main dengannya:

myUser@myMachine:~$ cd /opt/
myUser@myMachine:/opt$ mkdir lemmiwinks
mkdir: cannot create directory `lemmiwinks': Permission denied
myUser@myMachine:/opt$

Ini berfungsi jika saya pertama kali mencoba sudosebagai root:

myUser@myMachine:/opt$ sudo mkdir lemmiwinks
[sudo] password for myUser: 
myUser@myMachine:/opt$ ls
lemmiwinks
myUser@myMachine:/opt$ 

Apa yang terjadi di sini? Mengapa saya harus sudomendapatkan akses ke /opt(atau /home/myUserdirektori lain mana pun ?

Bagaimana cara saya membuat dan memberikan izin kepada pengguna baru yang dapat mengakses /opt? Bisakah saya melakukan ini myUserjuga? Terima kasih sebelumnya!

pnongrata
sumber

Jawaban:

6

Direktori / opt kemungkinan besar dimiliki oleh root yang merupakan pengguna super pada sistem. Di sistem linux ubuntu saya, yang akan sangat mirip dengan milik Anda, rasanya seperti itu ketika saya melakukan daftar panjang untuk / memilih sebagai pengguna non-root:

~ $ ls -l /|grep opt
drwxr-xr-x   8 root root  4096 Jan  6  2012 opt

izin linux pada umumnya memiliki tiga kategori izin: untuk pemilik, sekelompok orang lain yang juga memiliki izin khusus untuk direktori / file tersebut, dan terakhir semua orang lainnya.

bagian pertama dari daftar di atas 'drwxr-xr-x' menunjukkan izin kemudian 'root root' menunjukkan pemilik (root) dan grup (root), kemudian ukuran dan tanggal, diikuti oleh nama (opt)

dari situ drwxr-xr-x menunjukkan terlebih dahulu jenis sumber daya, dalam hal ini 'd' untuk direktori kemudian membaca | menulis | mengeksekusi (rwx) izin untuk masing-masing pemilik, grup, dan lainnya dalam urutan itu.

Jadi dalam hal ini pemilik (root) telah membaca, menulis, dan mengeksekusi izin pada / opt tetapi anggota grup (root) hanya membaca dan mengeksekusi izin seperti yang dilakukan orang lain.

Itu karena tidak ada izin menulis untuk grup dan lainnya (bagian r-xr-x) yang mencegah Anda berjalan sebagai 'pengguna saya' dari membuat direktori baru di / opt

/ opt biasanya merupakan tempat di mana perangkat lunak pihak ketiga diinstal, jadi tidak jelas mengapa Anda ingin pengguna baru dapat menulis / memilih karena mereka kemudian dapat misalnya memodifikasi perangkat lunak lain di / opt.

Semua pengguna dapat secara default, diberikan izin rx untuk semua orang di / opt seperti yang ditunjukkan, akses / opt dan baca dari itu tetapi tidak menulis untuk itu.

Namun jika Anda benar-benar ingin 'pengguna baru' dapat menulis / memilih, Anda memiliki setidaknya beberapa opsi:

  • Anda dapat mengubah izin semua orang di / opt to rwx (tidak disarankan); atau
  • Anda dapat mengubah kepemilikan grup dari / opt ke sesuatu yang lain katakan 'optgroup' dan membuat izin grup rwx (meninggalkan semua orang di rx) dan kemudian menambahkan pengguna baru Anda ke grup 'optgroup' yang Anda buat;

Berhati -hatilah dalam memberikan izin kepada pengguna baru untuk tempat yang seharusnya tidak dapat mereka ubah.

Baca lebih lanjut tentang izin file linux di http://www.tuxfiles.org/linuxhelp/filepermissions.html

sdjuan
sumber
Terima kasih @sdjuan (+1) - jawaban yang luar biasa Bisakah Anda melihat komentar saya di bawah jawaban AthomSteve? Saya memiliki pertanyaan yang sama untuk Anda! Terima kasih lagi!
pnongrata
@pnongrata contohnya adalah menulis ke / memilih dengan izin yang diatur seperti dijelaskan di atas, membutuhkan izin yang lebih tinggi yang bisa Anda dapatkan dengan melakukan sudo untuk menggunakan izin pengguna super untuk melakukan tugas itu. Ketika Anda sudo Anda kemudian dapat menggunakan izin root. Satu hal yang harus dicoba adalah lakukan whoami ketika masuk sebagai pengguna normal Anda dan kemudian lakukan sudo whoami untuk melihat Anda menjadi siapa dengan sudo. Saya harap itu membantu.
sdjuan
5

sudo pada dasarnya adalah hal yang sama dengan mengklik OK di Windows 7, atau Vista UAC. Anda memberi diri Anda atas permintaan admin.

Untuk memberikan pengguna lain akses ke folder (edit, buat dll) maka berikan saja tingkat akses yang Anda inginkan, atau admin juga. Harus sudo juga.

Anda dapat menonaktifkan sudo, dengan selalu berjalan sebagai pengguna yang ditinggikan, tetapi tidak disarankan. Bagian dari keamanan Linux, OS X dan Windows 6+ adalah bahwa Anda seharusnya tidak pernah menjalankan sebagai admin, ketika Anda mendapatkan prompt untuk elevasi, Anda harus tahu bahwa Anda meminta operasi dan kemudian menyetujui atau menolaknya. Tanpa ini, maka Anda mungkin memiliki menginstal atau menjalankan perangkat lunak aneh tanpa izin atau pengetahuan eksplisit Anda. Ini bisa berupa malware, virus, atau hanya plugin untuk kata, atau browser Anda yang tidak ingin Anda jalankan atau instal. Juga, sekali sesuatu telah menemukan cara untuk berjalan pada sistem tanpa izin tertulis, malware tertentu kemudian dapat menggunakan informasi tingkat rendah ini untuk meningkatkan dirinya atau perangkat lunak lain. Peretasan oleh rekayasa sosial misalnya dapat dimulai pada tingkat akses ini.

Juga, Windows adalah sama, secara default Anda memiliki akses penuh ke% UserProfile% * tetapi tidak ke pengguna lain atau root C: \ tanpa meninggikan dan mengizinkan operasi.

Austin T French
sumber
Terima kasih @AthomSteve (+1) - bisa tolong jelaskan apa yang Anda maksud dengan " ... Tanpa ini, maka Anda mungkin memiliki [an] menginstal perangkat lunak aneh ... " dan mungkin memberikan contoh konkret juga? Terima kasih lagi!
pnongrata
@pnongrata, menambahkan maksud saya.
Austin T French
2

Anda harus menjadi root (superuser) untuk mengacaukan file sistem dan folder dengan cara yang sama Anda harus memberikan izin administratif untuk melakukan hal yang sama di Windows. sudosingkatan superuser do, tetapi Anda bisa sumenggunakan terminal (dan setiap program yang Anda mulai darinya) sebagai root, dengan cara itu Anda tidak perlu mengetik sudosebelum setiap perintah tingkat tinggi. exituntuk kembali ke myUser. Saya tidak yakin tentang distro Anda, tetapi di Debian ada terminal root juga, yang, untuk maksud dan tujuan Anda, memiliki efek yang sama dengan menggunakan su.

Begitulah cara kerjanya. Linux selalu dimaksudkan sebagai sistem multi-pengguna, sehingga Anda dapat menganggapnya sebagai konsekuensi dari itu, tetapi itu juga untuk kebaikan Anda sendiri, karena menggunakan akun root untuk melakukan hal-hal sehari-hari mungkin berakhir buruk .

Alex
sumber
Terima kasih @Alex (+1) - Bisakah Anda melihat komentar saya di bawah jawaban AthomSteve? Saya memiliki pertanyaan yang sama untuk Anda! Terima kasih lagi!
pnongrata
@pnongrata Jika Anda membiarkan sepupu kecil Anda duduk di depan komputer Anda, apa yang Anda ingin dia lakukan? Saya ingin dia dapat menggunakan perangkat lunak di komputer saya, mendengarkan lagu-lagu saya dan menulis dokumen, melakukan lukisan dll ... Namun, saya tidak ingin dia mengacaukan pengaturan sistem dan melakukan hal-hal yang dapat menyebabkan kerusakan komputer saya. Saya yakin dia tidak akan melakukannya dengan sengaja, tetapi dia mungkin melakukannya secara tidak sengaja. Dengan perangkat lunak, ini adalah hal yang sama - Saya ingin dapat berkomunikasi dengan perangkat lunak dan file lain, tetapi saya tidak ingin itu mengacaukan pengaturan sistem dan semacamnya.
Alex
1

Beberapa warna:

Sistem /opt/file biasanya digunakan untuk paket pihak ketiga. Paket lengkap diinstal /opt/packagenameatau apa pun. Ini sedikit berbeda dari, katakanlah, / usr atau / usr / local, di mana banyak file yang dicampur.

Jadi, mengapa /opt/terkunci? Secara umum, area biner bersama dikunci. Jika saya benci bob, saya tidak ingin menginstal paket 'resmi' yang menghapus dir rumahnya.

Alasan lainnya adalah ruang disk. Jika saya seorang sysadmin, saya tidak ingin siapa pun menginstal hal-hal yang dapat merusak komputer saya. Apakah Anda percaya semua orang yang dapat menulis /optbahwa mereka tidak akan merusak hal-hal lain? Dapatkah pengguna menulis terlalu banyak dan melimpahi partisi / opt? Atau bahkan tidak sengaja menghapus file lain dan merusak aplikasi lain?

Jika Anda ingin memberikan akses kepada orang lain /opt, saya akan membuat grup UNIX, Idunno optadm atau apa pun, dan membuat grup tersebut mengizinkan / memilih, kemudian memberikan keanggotaan pengguna tertentu dalam grup itu jika Anda percaya mereka tidak akan sering-sering membukanya. Juga, pastikan /optada di partisi itu sendiri. Anda tidak ingin ada orang yang bermain di / opt yang membuat Anda melanggar bagian lain dari sistem karena mereka memasang beberapa permainan.

Homolka yang kaya
sumber
Terima kasih @Rich Homolka (+1) - 2 tindak lanjut untuk Anda: (1) selain meletakkan /optdi partisi sendiri, strategi partisi (umum) apa yang ada untuk sistem Linux tipikal (praktik terbaik)? Dan (2) dapatkah Anda melihat komentar saya di bawah jawaban AthomSteve? Saya memiliki pertanyaan yang sama untuk Anda! Terima kasih lagi!
pnongrata
@pnongrata oleh "instalasi perangkat lunak aneh" ... file hilang, file penting dihapus. File-file lain ditimpa. Jika Anda memberi orang izin untuk menginstal, Anda memberi mereka izin untuk berubah.
Rich Homolka