GNU/Linux >> Belajar Linux >  >> Linux

Izin Linux 101

Memahami izin Linux dan cara mengontrol pengguna mana yang memiliki akses ke file adalah keterampilan dasar untuk administrasi sistem.

Artikel ini akan membahas izin sistem file Linux standar, menggali lebih jauh tentang izin khusus, dan diakhiri dengan penjelasan tentang izin default menggunakan umask .

Memahami output perintah ls

Sebelum kita dapat berbicara tentang cara mengubah izin, kita perlu tahu cara melihatnya. ls perintah dengan argumen daftar panjang (-l ) memberi kita banyak informasi tentang sebuah file.

$ ls -lAh
total 20K
-rwxr-xr--+ 1 root root    0 Mar  4 19:39 file1
-rw-rw-rw-. 1 root root    0 Mar  4 19:39 file10
-rwxrwxr--+ 1 root root    0 Mar  4 19:39 file2
-rw-rw-rw-. 1 root root    0 Mar  4 19:39 file8
-rw-rw-rw-. 1 root root    0 Mar  4 19:39 file9
drwxrwxrwx. 2 root root 4.0K Mar  4 20:04 testdir

Untuk memahami apa artinya ini, mari kita uraikan output terkait izin ke dalam bagian-bagian individual. Akan lebih mudah untuk merujuk setiap bagian satu per satu.

Lihatlah setiap komponen dari baris terakhir pada output di atas:

drwxrwxrwx. 2 root root 4.0K Mar  4 20:04 testdir
Bagian 1 Bagian 2 Bagian 3 Bagian 4 Bagian 5 Bagian 6 Bagian 7
d rwx rwx rwx  . akar akar

Bagian 1 (di sebelah kiri) mengungkapkan jenis file apa itu.

d Direktori
- Berkas biasa
l Tautan lunak

Halaman info untuk ls memiliki daftar lengkap dari berbagai jenis file.

Setiap file memiliki tiga mode akses:

  • pemilik
  • grup
  • lainnya

Bagian 2, 3, dan 4 merujuk pada izin pengguna, grup, dan "pengguna lain". Dan setiap bagian dapat menyertakan kombinasi r (baca), dengan (tulis), dan x izin (dapat dieksekusi).

Setiap izin juga diberi nilai numerik, yang penting ketika berbicara tentang representasi oktal dari izin.

Izin Nilai Oktal
Baca 4
Tulis 2
Jalankan 1

Bagian 5 merinci metode akses alternatif apa pun, seperti SELinux atau Daftar Kontrol Akses File (FACL).

Metode Karakter
Tidak ada metode lain  -
SELinux  .
FACL  +
Kombinasi metode apa pun  +

Bagian 6 dan 7 masing-masing adalah nama pemilik dan grup.

Menggunakan chown dan chmod

Perintah chown

chown (ubah kepemilikan) perintah digunakan untuk mengubah pengguna file dan kepemilikan grup.

Untuk mengubah kepemilikan pengguna dan grup dari file foo untuk mengakar , kita dapat menggunakan perintah ini:

$ chown root:root foo
$ chown root: foo

Menjalankan perintah dengan pengguna diikuti dengan titik dua (: ) menyetel kepemilikan pengguna dan grup.

Untuk menyetel hanya kepemilikan pengguna dari file foo ke akar pengguna, masukkan:

$ chown root foo

Untuk mengubah hanya kepemilikan grup dari file foo , awali grup dengan titik dua:

$ chown :root foo

Perintah chmod

chmod (ubah mode) perintah mengontrol izin file untuk pemilik, grup, dan semua pengguna lain yang bukan pemilik atau bagian dari grup yang terkait dengan file tersebut.

chmod perintah dapat mengatur izin dalam format oktal (mis., 755, 644, dll.) dan simbolik (mis., u+rwx, g-rwx, o=rw).

Notasi oktal menetapkan 4 "poin" untuk membaca , 2 untuk menulis , dan 1 untuk mengeksekusi . Jika kita ingin menetapkan pengguna baca izin, kami menetapkan 4 ke slot pertama, tetapi jika kami ingin menambahkan tulis izin, kita harus menambahkan 2. Jika kita ingin menambahkan eksekusi , lalu kami menambahkan 1. Kami melakukan ini untuk setiap jenis izin:pemilik, grup, dan lainnya.

Misalnya, jika kita ingin menetapkan baca , tulis , dan jalankan kepada pemilik file, tetapi hanya membaca dan jalankan untuk anggota grup dan semua pengguna lain, kami akan menggunakan 755 dalam format oktal. Itu semua bit izin untuk pemilik (4+2+1), tetapi hanya 4 dan 1 untuk grup dan lainnya (4+1).

Rinciannya adalah:4+2+1=7; 4+1=5; dan 4+1=5.

Jika kami ingin menetapkan baca dan tulis kepada pemilik file tetapi hanya membaca untuk anggota grup dan semua pengguna lain, kami dapat menggunakan chmod sebagai berikut:

$ chmod 644 foo_file

Dalam contoh di bawah ini, kami menggunakan notasi simbolik dalam pengelompokan yang berbeda. Perhatikan huruf u , g , dan o mewakili pengguna , grup , dan lainnya . Kami menggunakan u , g , dan o dalam hubungannya dengan + , - , atau = untuk menambah, menghapus, atau menyetel bit izin.

Untuk menambahkan eksekusi bit ke set izin kepemilikan:

$ chmod u+x foo_file

Untuk menghapus baca , tulis , dan jalankan dari anggota grup:

$ chmod g-rwx foo_file

Untuk menyetel kepemilikan semua pengguna lain ke membaca dan tulis :

$ chmod o=rw

Bit khusus:Mengatur UID, mengatur GID, dan bit lengket

Selain izin standar, ada beberapa bit izin khusus yang memiliki beberapa manfaat berguna.

Tetapkan ID pengguna (suid)

Ketika menyukai diatur pada file, operasi dijalankan sebagai pemilik file, bukan pengguna yang menjalankan file. Contoh bagusnya adalah passwd memerintah. Itu membutuhkan suid bit yang akan disetel agar mengubah sandi berjalan dengan izin root.

$ ls -l /bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10  2014 /bin/passwd

Contoh pengaturan suid sedikit menjadi:

$ chmod u+s /bin/foo_file_name

Tetapkan ID grup (sgid)

sgid bit mirip dengan suid bit dalam arti bahwa operasi dilakukan di bawah kepemilikan grup direktori alih-alih pengguna yang menjalankan perintah.

Contoh penggunaan sgid akan terjadi jika beberapa pengguna bekerja di direktori yang sama, dan setiap file yang dibuat dalam direktori harus memiliki izin grup yang sama. Contoh di bawah membuat direktori bernama collab_dir , menyetel sgid bit, dan mengubah kepemilikan grup menjadi webdev .

$ mkdir collab_dir
$ chmod g+s collab_dir
$ chown :webdev collab_dir

Sekarang file apa pun yang dibuat di direktori akan memiliki kepemilikan grup webdev alih-alih pengguna yang membuat file.

$ cd collab_dir
$ touch file-sgid
$ ls -lah file-sgid
-rw-r--r--. 1 root webdev 0 Jun 12 06:04 file-sgid

Bit "lengket"

Lebih banyak sumber daya Linux

  • Lembar contekan perintah Linux
  • Lembar contekan perintah Linux tingkat lanjut
  • Kursus online gratis:Ikhtisar Teknis RHEL
  • Lembar contekan jaringan Linux
  • Lembar contekan SELinux
  • Lembar contekan perintah umum Linux
  • Apa itu container Linux?
  • Artikel Linux terbaru kami

Bit lengket menunjukkan bahwa hanya pemilik file yang dapat menghapus file, bahkan jika izin grup akan mengizinkannya. Pengaturan ini biasanya paling masuk akal pada direktori umum atau kolaboratif seperti /tmp . Pada contoh di bawah, t di jalankan kolom lainnya set izin menunjukkan bahwa bit lengket telah diterapkan.

$ ls -ld /tmp
drwxrwxrwt. 8 root root 4096 Jun 12 06:07 /tmp/

Ingatlah bahwa ini tidak mencegah seseorang mengedit file; itu hanya mencegah mereka menghapus konten direktori.

Kami mengatur bit lengket dengan:

$ chmod o+t foo_dir

Anda sendiri, coba atur bit lengket pada direktori dan berikan izin grup penuh sehingga banyak pengguna dapat membaca, menulis, dan mengeksekusi di direktori karena mereka berada dalam grup yang sama.

Dari sana, buat file sebagai setiap pengguna, lalu coba hapus sebagai pengguna lainnya.

Jika semuanya dikonfigurasi dengan benar, satu pengguna tidak akan dapat menghapus pengguna dari pengguna lain.

Perhatikan bahwa setiap bit ini juga dapat diatur dalam format oktal dengan SUID=4, SGID=2, dan Sticky=1.

$ chmod 4744
$ chmod 2644
$ chmod 1755

Huruf besar atau kecil?

Jika Anda menyetel bit khusus dan melihat huruf besar S atau T alih-alih huruf kecil (seperti yang telah kita lihat sampai saat ini), itu karena bit eksekusi yang mendasarinya tidak ada. Untuk mendemonstrasikan, contoh berikut membuat file dengan set bit lengket. Kami kemudian dapat menambahkan/menghapus bit eksekusi untuk mendemonstrasikan perubahan kasus.

$ touch file cap-ST-demo
$ chmod 1755 cap-ST-demo
$ ls -l cap-ST-demo
-rwxr-xr-t. 1 root root 0 Jun 12 06:16 cap-ST-demo

$ chmod o-x cap-X-demo
$ ls -l cap-X-demo
-rwxr-xr-T. 1 root root 0 Jun 12 06:16 cap-ST-demo

Mengatur bit eksekusi secara kondisional

Sampai di sini, kami telah menyetel eksekusi bit menggunakan huruf kecil x , yang mengaturnya tanpa mengajukan pertanyaan apa pun. Kami memiliki opsi lain:menggunakan huruf besar X alih-alih huruf kecil akan mengatur eksekusi bit hanya jika sudah ada di suatu tempat di grup izin. Ini bisa menjadi konsep yang sulit untuk dijelaskan, tetapi demo di bawah ini akan membantu mengilustrasikannya. Perhatikan di sini bahwa setelah mencoba menambahkan eksekusi sedikit ke hak istimewa grup, itu tidak diterapkan.

$ touch cap-X-file
$ ls -l cap-X-file
-rw-r--r--. 1 root root 0 Jun 12 06:31 cap-X-file
$ chmod g+X cap-X-file
$ ls -l cap-X-file
-rw-r--r--. 1 root root 0 Jun 12 06:31 cap-X-file

Dalam contoh serupa ini, kami menambahkan bit eksekusi terlebih dahulu ke izin grup menggunakan huruf kecil x lalu gunakan huruf besar X untuk menambahkan izin untuk semua pengguna lain. Kali ini, huruf besar X menyetel izin.

$ touch cap-X-file
$ ls -l cap-X-file
-rw-r--r--. 1 root root 0 Jun 12 06:31 cap-X-file
$ chmod g+x cap-X-file
$ ls -l cap-X-file
-rw-r-xr--. 1 root root 0 Jun 12 06:31 cap-X-file
$ chmod g+x cap-X-file
$ chmod o+X cap-X-file
ls -l cap-X-file
-rw-r-xr-x. 1 root root 0 Jun 12 06:31 cap-X-file

Memahami umask

umask topeng (atau "memblokir") bit dari izin default yang ditetapkan untuk menentukan izin untuk file atau direktori. Misalnya, 2 di umask output menunjukkan itu memblokir tulis bit dari file, setidaknya secara default.

Menggunakan umask perintah tanpa argumen apa pun memungkinkan kita untuk melihat umask saat ini pengaturan. Ada empat kolom:yang pertama disediakan untuk suid, sgid, atau sticky bit khusus, dan tiga lainnya mewakili pemilik, grup, dan izin lainnya.

$ umask
0022

Untuk memahami apa artinya ini, kita dapat menjalankan umask dengan -S (seperti yang ditunjukkan di bawah) untuk mendapatkan hasil masking bit. Misalnya, karena 2 nilai di kolom ketiga, tulis bit tertutup dari grup dan bagian lain; hanya baca dan jalankan dapat ditugaskan untuk itu.

$ umask -S
u=rwx,g=rx,o=rx

Untuk melihat set izin default untuk file dan direktori, mari setel umask ke semua nol. Artinya, kita tidak menutupi bit apa pun saat membuat file.

$ umask 000
$ umask -S
u=rwx,g=rwx,o=rwx

$ touch file-umask-000
$ ls -l file-umask-000
-rw-rw-rw-. 1 root root 0 Jul 17 22:03 file-umask-000

Sekarang ketika kita membuat file, kita melihat izin default adalah baca (4) dan tulis (2) untuk semua bagian, yang akan sama dengan 666 dalam representasi oktal.

Kita dapat melakukan hal yang sama untuk sebuah direktori dan melihat izin defaultnya adalah 777. Kita memerlukan eksekusi bit pada direktori sehingga kami dapat menelusurinya.

$ mkdir dir-umask-000
$ ls -ld dir-umask-000
drwxrwxrwx. 2 root root 4096 Jul 17 22:03 dir-umask-000/

Kesimpulan

Ada banyak cara lain administrator dapat mengontrol akses ke file pada sistem. Izin ini adalah dasar untuk Linux, dan kami dapat membangun aspek-aspek mendasar ini. Jika pekerjaan Anda membawa Anda ke FACL atau SELinux, Anda akan melihat bahwa mereka juga membangun aturan pertama akses file ini.


Linux
  1. Setel Ulang Kata Sandi Root di Linux

  2. Lab Linux:SysAdmin 101

  3. Bagaimana cara menginstal VIM di Linux ketika saya tidak memiliki izin root?

  1. Izin Linux:Pengantar chmod

  2. Linux – Ubah Izin Folder?

  3. Izin File di Linux dengan Contoh

  1. Tambahkan pengguna Linux dengan izin root dokumen

  2. Mengubah izin Linux

  3. Periksa izin file Linux dengan ls