Rumah  >  Artikel  >  Tutorial sistem  >  Penjelasan terperinci tentang prinsip operasi shell dan kebenaran Linux

Penjelasan terperinci tentang prinsip operasi shell dan kebenaran Linux

王林
王林ke hadapan
2024-02-09 14:39:13685semak imbas

Linux, secara tegasnya, adalah teras sistem pengendalian. Dalam erti kata lain, pengguna biasa tidak boleh memanggil teras secara langsung. Untuk berkomunikasi dengan teras, kita perlu melalui program "shell" teras, juga dikenali sebagai shell. Shell ialah penterjemah baris arahan yang menerima arahan yang dimasukkan oleh pengguna dan menukarkannya kepada kod operasi yang dilaksanakan oleh sistem. Shell boleh memanggil fungsi sistem yang berbeza untuk menyelesaikan operasi yang berbeza bergantung pada jenis arahan. Oleh itu, kita boleh menggunakan Shell untuk melaksanakan pelbagai arahan dan operasi untuk mengawal dan mengurus sistem. Ringkasnya, Shell bertindak sebagai jambatan antara pengguna dan kernel asas.

Bagaimana untuk memahami? Mengapa kita tidak boleh menggunakan kernel secara langsung?

Dari perspektif teknikal, takrifan Shell yang paling mudah: jurubahasa arahan (jurubahasa arahan) terutamanya termasuk:

将使用者的命令翻译给核心(kernel)处理。
同时,将核心的处理结果翻译给使用者。
shell 运行原理和 Linux 权限详解

"

Nota: shell ialah nama kolektif untuk semua program shell, dan bash ialah shell tertentu. Contohnya: centos 7 shell: bash

  • Berbanding dengan GUI Windows, apabila kami mengendalikan Windows, kami tidak mengendalikan kernel Windows secara langsung, tetapi klik melalui antara muka grafik untuk menyelesaikan operasi kami (contohnya, untuk memasuki pemacu D, kami biasanya mengklik dua kali huruf pemacu D. Atau jalankan aplikasi) .
  • Cangkang mempunyai fungsi yang sama untuk Linux, terutamanya menghuraikan arahan kami dan menghuraikan arahan ke kernel Linux. Hasil maklum balas dijalankan melalui kernel dan dihuraikan kepada pengguna melalui shell.
  • Cara shell berfungsi
rreeee
  • Bantu pemahaman:
  • Jika anda seorang pengaturcara yang membosankan dan pemalu, maka shell adalah seperti pencari jodoh
  • Kernel sistem pengendalian ialah bunga cantik di kampung anda yang membuatkan jantung anda berdegup kencang.
  • Anda telah jatuh cinta dengan Xiaohua, tetapi anda terlalu malu untuk mengaku terus, kemudian biarkan keluarga anda mencari jodoh untuk membantu anda melamar perkahwinan
  • Anda berkomunikasi secara langsung dengan pencari jodoh tentang segala-galanya, dan pencari jodoh akan menyampaikan fikiran anda kepada Xiaohua
  • Dan kami mendapati bahawa nama keluarga pembuat jodoh itu ialah Wang, jadi kami memanggilnya Wang Po, yang sepadan dengan bash yang sering kami gunakan.
  1. Keizinan Linux

2.1 Konsep kebenaran

  • Terdapat dua jenis pengguna di bawah Linux: pengguna super (root) dan pengguna biasa.
  • Pengguna super: boleh melakukan apa sahaja di bawah sistem linux tanpa sekatan
  • Pengguna biasa: Lakukan perkara terhad di bawah linux.
  • Gesaan arahan pengguna super ialah "#", dan gesaan arahan pengguna biasa ialah "$".
shell 运行原理和 Linux 权限详解
  • Perintah menukar pengguna

Arahan: su [nama pengguna]

Fungsi: Tukar pengguna.

Sebagai contoh, untuk bertukar daripada pengguna akar kepada pengguna biasa, gunakan pengguna su. Untuk bertukar daripada pengguna pengguna biasa kepada pengguna root, gunakan suroot (root boleh ditiadakan Pada masa ini, sistem akan meminta anda memasukkan kata laluan pengguna root).

shell 运行原理和 Linux 权限详解
  • Tukar kepada root: Gunakan su -, kita boleh bertukar kepada pengguna root (masukkan kata laluan akaun root pada masa ini, kata laluan tidak akan digemakan pada skrin)
  • Beralih kembali kepada pengguna biasa: Gunakan su – nama pengguna untuk bertukar kembali kepada pengguna biasa (tidak perlu memasukkan kata laluan pada masa ini, tetapi kami tidak mengesyorkan menukar kembali seperti ini, kerana apabila menggunakan arahan su –, lebih banyak proses bash akan tercipta)
  • Adalah disyorkan untuk bertukar kembali kepada pengguna biasa: masukkan keluar atau tekan Ctrl+d untuk kembali kepada pengguna biasa

2.2 Pengurusan Kebenaran

  • Apakah kebenaran

"

Kebenaran pada dasarnya menentukan sama ada seseorang boleh melakukan sesuatu.

  • Untuk orang: Contohnya, saya pemilik rumah ini, jadi saya boleh keluar masuk rumah dengan bebas
  • Menyasarkan perkara: Saya mahu makan komputer, saya mahu bermain League of Legends dengan roti, dan menonton filem. Anda boleh makan roti, tetapi komputer tidak boleh makan roti, tetapi anda tidak boleh makan komputer ini termasuk dua sifat.

"

Fail dipengaruhi oleh orang dan fail dipengaruhi oleh ciri mereka sendiri (sifat sesuatu), jadi kebenaran fail = orang + atribut benda

Atribut kebenaran fail: r (baca), w (tulis), x (kebenaran pelaksanaan)

Orang (bukan orang tertentu, tetapi peranan): pemilik, kumpulan, lain (lain)

  • Klasifikasi pelawat fail (orang)
  • Pemilik fail dan direktori fail: u—Pengguna (isu undang-undang awam China)
  • Pengguna kumpulan yang dimiliki oleh pemilik fail dan direktori fail: g—Kumpulan (tidak banyak yang perlu diperkatakan)
  • Pengguna lain: o—Lain-lain (orang asing)
  • Jenis fail dan kebenaran akses (sifat benda)
shell 运行原理和 Linux 权限详解

"

Gunakan arahan ls -l (ll) untuk membezakan jenis fail dengan aksara yang sepadan dengan lajur pertama atribut berbilang lajur yang dipaparkan.

shell 运行原理和 Linux 权限详解

Tidak perlu menyenaraikan lain, kerana lain jika bukan pemilik atau kumpulan miliknya

Bantu faham – pemilik dan kumpulan

Mari kita ambil contoh mudah Dalam sebuah syarikat, dua pasukan projek perlu menyelesaikan tugasan kod yang sama, tetapi syarikat hanya menyediakan satu pelayan kepada mereka anda menulis, ia mesti hanya untuk anda dan ketua pasukan anda untuk melihatnya, bukan untuk kumpulan pesaing anda melihatnya, yang menimbulkan konsep kumpulan kepunyaan.

shell 运行原理和 Linux 权限详解

Jenis Fail

  • d: folder
  • -: Fail biasa
  • l: Pautan lembut (serupa dengan pintasan Windows)
  • b: Sekat fail peranti (seperti cakera keras, pemacu optik, dll.)
  • p: fail paip
  • c: fail peranti aksara (seperti skrin dan peranti bersiri lain)
  • s: fail soket
shell 运行原理和 Linux 权限详解
  • Keizinan asas

i. Baca (r/4): Untuk fail, Read mempunyai kebenaran untuk membaca kandungan fail untuk direktori, ia mempunyai kebenaran untuk menyemak imbas maklumat direktori

ii. Tulis (w/2): Untuk fail, Write mempunyai kebenaran untuk mengubah suai kandungan fail untuk direktori, ia mempunyai kebenaran untuk memadam fail dalam direktori yang dipindahkan

iii. Laksanakan (x/1): Untuk fail, execute mempunyai kebenaran untuk melaksanakan fail;

iv. “—” bermakna anda tidak mempunyai kebenaran

shell 运行原理和 Linux 权限详解2.3 Kaedah perwakilan nilai kebenaran fail

Perwakilan watak

Linux bermaksud Arahan Linux Arahan
r – – Baca sahaja – w – Tulis sahaja
– – x Boleh laksana sahaja r w – Boleh dibaca dan ditulis
– w x Boleh ditulis dan boleh dilaksanakan r – x Boleh dibaca dan boleh dilaksanakan
r w x Boleh dibaca, boleh ditulis dan boleh dilaksanakan ––– Tiada kebenaran

Bagaimana untuk mewakili nilai perlapanan

Simbol kebenaran (baca, tulis, laksana) Oktal binari
r 4 1 0 0
w 2 0 1 0
x 1 0 0 1
r w 6 1 1 0
r x 5 1 0 1
w x 3 0 1 1
r w x 7 1 1 1
– – – 0 0 0 0
shell 运行原理和 Linux 权限详解

权限更改

$ chmod 777 text.c
$ chmod 000 text.c
$ chmod 640 text.c
shell 运行原理和 Linux 权限详解

2.4 文件访问权限的相关设置方法

chmod

  • 功能:设置文件的访问权限
  • 格式:chmod [参数] 权限 文件名
  • 常用选项:

R -> 递归修改目录文件的权限

说明:只有文件的拥有者和 root 才可以改变文件的权限

  • chmod 命令权限值得格式

① 用户表示符 +/-= 权限字符

  • +: 向权限范围增加权限代号所表示的权限
  • -: 向权限范围取消权限代号所表示的权限
  • =: 向权限范围赋予权限代号所表示的权限
    用户符号:
  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户

示例:

shell 运行原理和 Linux 权限详解

注意:chmod 可以给拥有者,所属组,其他用户同时修改权限,中间用逗号隔开

如果要修改不是自己的文件的时候需要 sudo 临时权限提升或者直接切成 root 身份

  • sudo chmod 用户表示符 +/-= 权限字符 文件名

chown

功能:修改文件的拥有者

格式:chown [参数] 用户名 文件名

实例:

$ sudo chown root test.c// 修改拥有者
$ sudo chown lighthouse test.c// 修改拥有者
$ sudo chown :lighthouse test.c// 修改所属组
$ sudo chown lighthouse:lighthouse test.c// 可以将拥有者、所属组同时修改
$ sudo chown root:root test.c// 可以将拥有者、所属组同时修改
shell 运行原理和 Linux 权限详解

chgrp

功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组

实例:

$ sudo chgrp root text.c
$ sudo chgrp lighthouse text.c
shell 运行原理和 Linux 权限详解

2.4 修改文件的掩码

umask

功能:查看或修改文件掩码

语法:umask 权限值

shell 运行原理和 Linux 权限详解

新建文件夹默认权限 = 0666

新建目录默认权限 = 0777

shell 运行原理和 Linux 权限详解

但是我们观察到,新建的文件和目录并不是默认的起始权限,这里是什么原因呢?

原因就是创建文件或目录的时候还要受到 umask 的影响。假设默认权限是 mask,则实际创建的出来的文件权限是:umask & ~umask

shell 运行原理和 Linux 权限详解
  • 我们也可以通过修改文件的 umask 码值来修改文件的权限:
shell 运行原理和 Linux 权限详解

说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为 0022,普通用户默认为 0002。

2.5 file 指令

file

功能说明:辨识文件类型。

语法:file [选项] 文件或目录…

常用选项:

-c 详细显示指令执行过程,便于排错或分析程序执行的情形。

-z 尝试去解读压缩文件的内容。

shell 运行原理和 Linux 权限详解
  1. 目录权限

面试题:进入一个目录要什么权限?

  • 可读权限: 如果目录没有可读权限,则无法用 ls 等命令查看目录中的文件内容.
  • 可写权限: 如果目录没有可写权限,则无法在目录中创建文件, 也无法在目录中删除文件.
  • 可执行权限:如果没有目录可执行权限,则无法 cd 到目录中
x
r
w
  1. 粘滞位

新发现:

就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.我创建的一个文件, 凭什么被你一个外人可以删掉

shell 运行原理和 Linux 权限详解

结论

如果目录本身对 other 具有 w 权限,other 可以删掉任何目录下的东西
如果目录本身对 other 没有 w 权限,other 则不可以删除

我们的需求:other 可以在特定的目录下创建文件并写入,但是不想让任何人删除掉自己的文件

这里为了解决这个不科学的问题,Linux 引入了粘滞位的概念

粘滞位

语法:chmod +t 目录名

功能:给目录加上粘滞位

注意

Ia hanya boleh ditetapkan untuk direktori, secara amnya mengehadkan kebenaran lain Untuk direktori dengan set bit melekit, hanya pemilik fail dan pengguna root boleh memadamkannya dalam direktori ini, dan orang lain tidak boleh memadamkannya

.

Contoh:

shell 运行原理和 Linux 权限详解

Jika terdapat berbilang orang atau sistem akan mempunyai banyak data sementara, semua fail sementara diletakkan dalam direktori /tmp sistem. Semua kebenaran perlu dikeluarkan, tetapi anda hanya mahu pemilik fail memadamkan fail mereka sendiri. Ini memerlukan penetapan bit melekat

  1. Ringkasan
  • Keizinan boleh laku bagi direktori menunjukkan sama ada anda boleh melaksanakan arahan dalam direktori.
  • Jika direktori tidak mempunyai – )
  • Dan jika direktori mempunyai keizinan -x tetapi bukan keizinan -r, pengguna boleh melaksanakan arahan dan boleh cd ke dalam direktori. Tetapi kerana tiada kebenaran membaca kepada direktori
  • Oleh itu, walaupun anda boleh melaksanakan arahan ls dalam direktori, anda masih tidak mempunyai kebenaran untuk membaca dokumen dalam direktori.

Atas ialah kandungan terperinci Penjelasan terperinci tentang prinsip operasi shell dan kebenaran Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:lxlinux.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam