Rumah > Artikel > Tutorial sistem > Penjelasan terperinci tentang prinsip operasi shell dan kebenaran Linux
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)处理。 同时,将核心的处理结果翻译给使用者。
"
Nota: shell ialah nama kolektif untuk semua program shell, dan bash ialah shell tertentu. Contohnya: centos 7 shell: bash
”
2.1 Konsep kebenaran
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).
”
2.2 Pengurusan Kebenaran
"
Kebenaran pada dasarnya menentukan sama ada seseorang boleh melakukan sesuatu.
”
"
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)
"
Gunakan arahan ls -l (ll) untuk membezakan jenis fail dengan aksara yang sepadan dengan lajur pertama atribut berbilang lajur yang dipaparkan.
”
“
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.
”
Jenis Fail
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 kebenaran2.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 |
权限更改
$ chmod 777 text.c $ chmod 000 text.c $ chmod 640 text.c
2.4 文件访问权限的相关设置方法
chmod
R -> 递归修改目录文件的权限
说明:只有文件的拥有者和 root 才可以改变文件的权限
① 用户表示符 +/-= 权限字符
示例:
“
注意:chmod 可以给拥有者,所属组,其他用户同时修改权限,中间用逗号隔开
”
“
如果要修改不是自己的文件的时候需要 sudo 临时权限提升或者直接切成 root 身份
”
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// 可以将拥有者、所属组同时修改
chgrp
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组
实例:
$ sudo chgrp root text.c $ sudo chgrp lighthouse text.c
2.4 修改文件的掩码
umask
功能:查看或修改文件掩码
语法:umask 权限值
新建文件夹默认权限 = 0666
新建目录默认权限 = 0777
“
但是我们观察到,新建的文件和目录并不是默认的起始权限,这里是什么原因呢?
”
“
原因就是创建文件或目录的时候还要受到 umask 的影响。假设默认权限是 mask,则实际创建的出来的文件权限是:umask & ~umask
”
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为 0022,普通用户默认为 0002。
2.5 file 指令
file
功能说明:辨识文件类型。
语法:file [选项] 文件或目录…
常用选项:
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容。
面试题:进入一个目录要什么权限?
x r w
新发现:
“
就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.我创建的一个文件, 凭什么被你一个外人可以删掉
”
结论
如果目录本身对 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:
“
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”
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!