亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解linux中的文件權限識別及修改

 更新時間:2023年08月16日 14:24:10   作者:岳來  
在?Linux?系統(tǒng)中,一切皆文件,這篇文章主要來和大家介紹一下linux中的文件權限識別以及修改,感興趣的小伙伴可以跟隨小編一起學習一下

一、文件權限認識

在 Linux 系統(tǒng)中,一切皆文件,目錄也是一種文件形式叫目錄文件,它們的屬性主要包含: 索引節(jié)點(inode),類型、權限屬性、鏈接數(shù)、所歸屬的用戶和用戶組、最近修改時間 等內(nèi)容。如下為根目錄下目錄:

$ ls -lih
total 60K
 263121 lrwxrwxrwx   1 root root    7 Jun  2  2017 bin -> usr/bin
 263122 dr-xr-xr-x   2 root root 4.0K Dec  7  2017 boot
      1 drwxr-xr-x   5 root root  360 Aug 11 14:36 dev
1315847 drwxr-xr-x   1 root root 4.0K Aug 11 14:36 etc
 263621 drwxr-xr-x   5 root root 4.0K Nov 29  2019 home
 264862 lrwxrwxrwx   1 root root    7 Jun  2  2017 lib -> usr/lib
 264863 lrwxrwxrwx   1 root root    9 Jun  2  2017 lib64 -> usr/lib64
 264864 drwx------   2 root root 4.0K Jun  2  2017 lost+found
 264865 drwxr-xr-x   2 root root 4.0K Dec 13  2015 media
 264866 drwxr-xr-x   2 root root 4.0K Dec 13  2015 mnt
 264867 drwxr-xr-x   3 root root 4.0K Nov 29  2019 opt
      1 dr-xr-xr-x 373 root root    0 Aug 11 14:36 proc
4851238 dr-xr-x---   1 root root 4.0K Dec 11  2019 root
4851241 drwxr-xr-x   1 root root 4.0K Feb 14 11:17 run
 264881 lrwxrwxrwx   1 root root    8 Jun  2  2017 sbin -> usr/sbin
 264882 drwxr-xr-x   2 root root 4.0K Dec 13  2015 srv
      1 dr-xr-xr-x  13 root root    0 Aug 11 14:36 sys
4851264 drwxrwxrwx   1 root root 4.0K Feb 14 11:17 tmp
4851265 drwxr-xr-x   1 root root 4.0K Nov 29  2019 usr
4852397 drwxr-xr-x   1 root root 4.0K Jun  4  2019 var

1.1、索引節(jié)點

在 Linux 文件系統(tǒng)中,每個文件都有一個用于標識和管理它的唯一索引節(jié)點號(inode number)。索引節(jié)點位于文件系統(tǒng)的元數(shù)據(jù)區(qū)域,包含了文件的所有元數(shù)據(jù)信息,例如文件的所有者、權限、大小、創(chuàng)建時間、修改時間、訪問時間等。

索引節(jié)點號是一個唯一的數(shù)字,用于標識一個文件。在 Linux 文件系統(tǒng)中,每個文件和目錄都有一個唯一的索引節(jié)點號,這個號碼在文件系統(tǒng)中是唯一的。

使用如下命令查看文件目錄索引節(jié)點:

$ ls -i
total 12528
266890 locale-archive
# 266890 即為文件locale-archive的索引節(jié)點

一個文件可以有多個硬鏈接(hard link),每個硬鏈接都有一個不同的文件名,但它們共享同一個索引節(jié)點號。因此,通過硬鏈接可以讓多個文件名指向同一個物理文件。

硬鏈接和軟鏈接

硬鏈接(Hard Link)是指多個文件名指向同一個物理文件的鏈接。多個硬鏈接共享同一個索引節(jié)點號(inode number),因此它們在文件系統(tǒng)中的位置相同,且沒有任何區(qū)別。每個硬鏈接都是一個完整的文件名,都可以作為原始文件名使用,并且都可以對文件進行讀寫操作。

符號鏈接(Symbolic Link,也稱軟鏈接)是指一個特殊類型的文件,它包含了指向另一個文件的路徑名。符號鏈接本身是一個文件,其中包含的路徑名指向另一個文件。當訪問符號鏈接時,實際上是訪問鏈接所指向的文件。與硬鏈接不同,符號鏈接指向的是文件名,而不是物理文件。

硬鏈接和符號鏈接的主要區(qū)別如下:

  • 硬鏈接只能鏈接同一文件系統(tǒng)中的文件,而符號鏈接可以跨越文件系統(tǒng)。
  • 硬鏈接會共享同一個索引節(jié)點,因此它們必須指向同一個物理文件,而符號鏈接可以指向任意文件或目錄。
  • 刪除原始文件對硬鏈接沒有任何影響,因為它們共享同一個索引節(jié)點,而刪除原始文件會導致符號鏈接失效。

示例如下:

# 新建文件file.txt, 寫入“Hello World!”
$ vim file.txt
# 分別對file.txt 建立硬鏈接和軟鏈接
$ ln file.txt hard_file.txt
$ ln -s file.txt soft_file.txt  # 與硬鏈接區(qū)別在于加 -s
$ ll
total 8
-rw-r--r-- 2 root root 13 Aug 11 16:35 file.txt
-rw-r--r-- 2 root root 13 Aug 11 16:35 hard_file.txt
lrwxrwxrwx 1 root root  8 Aug 11 16:36 soft_file.txt -> file.txt
# 查看文件內(nèi)容
$ cat file.txt 
Hello World!
$ cat hard_file.txt 
Hello World!
$ cat soft_file.txt # 有文章說符號鏈接無法查看內(nèi)容,只是顯示文件名,這里無法確認 
Hello World!
# 刪除原始文件后查看文件內(nèi)容
$ rm -rf file.txt 
$ cat hard_file.txt 
Hello World!
$ cat soft_file
cat: soft_file: No such file or directory

1.2、類型

1.2.1、普通文件:

- 代表普通文件,如下:

$ ll /etc/passwd
-rw-r--r-- 1 root root 1690 Aug 14 04:46 /etc/passwd

1.2.2、目錄文件

d 代表目錄文件,如下:

$ ll /home/
drwx------   3 admin       admin 4096 Mar 21 10:32 admin

1.2.3、塊設備文件

b 代表目錄文件,如下:

brw-rw----  1 root disk    253,   0 Nov 30  2022 vda
brw-rw----  1 root disk    253,   1 Nov 30  2022 vda1
brw-rw----  1 root disk    253,   2 Nov 30  2022 vda2
brw-rw----  1 root disk    253,  16 Nov 30  2022 vdb

在Linux系統(tǒng)中,塊設備文件是一種特殊的文件類型,用于訪問磁盤、光盤等塊設備。塊設備文件通常以 /dev/sdX /dev/hdX 的形式存在,其中X表示驅(qū)動器的字母編號,從a開始遞增。例如, /dev/sda 表示系統(tǒng)中的第一個硬盤, /dev/sdb 表示系統(tǒng)中的第二個硬盤,以此類推。

塊設備文件是一種原始的設備文件,可以直接讀寫設備的扇區(qū)數(shù)據(jù)。在Linux系統(tǒng)中,塊設備驅(qū)動程序會把塊設備映射到文件系統(tǒng)中,從而使用戶可以通過文件系統(tǒng)來管理磁盤。

塊設備文件通常被用于分區(qū)、格式化、掛載、卸載硬盤等操作。例如,通過fdisk命令可以對塊設備文件進行分區(qū)操作,使用mkfs命令可以對分區(qū)進行格式化,使用mount和umount命令可以將文件系統(tǒng)掛載到塊設備上,并在不需要訪問文件系統(tǒng)時將其卸載。

1.2.4、字符設備文件

c 代表字符設備文件,如下:

crw-rw-rw-  1 root tty       5,   0 Aug  4 14:25 tty
crw--w----  1 root tty       4,   0 Nov 30  2022 tty0
crw--w----  1 root tty       4,   1 Nov 30  2022 tty1
crw--w----  1 root tty       4,  10 Nov 30  2022 tty10

在Linux系統(tǒng)中,字符設備文件是一種特殊的文件類型,用于訪問字符設備,例如鍵盤、鼠標、串口等。字符設備文件通常以 /dev/ttyX /dev/ttySX 的形式存在,其中X表示設備的編號。

與塊設備文件不同,字符設備文件以字符為單位進行讀寫,而不是以塊為單位。因此,字符設備文件通常用于處理流數(shù)據(jù),例如文本文件、串口數(shù)據(jù)等。字符設備文件具有緩存機制,可以提高文件讀寫速度,并且支持隨機訪問。

在Linux系統(tǒng)中,字符設備文件的操作方式與普通文件類似,可以使用open、read、write、ioctl等系統(tǒng)調(diào)用來訪問設備。例如,使用cat命令可以讀取鍵盤輸入的字符,使用echo命令可以向串口發(fā)送數(shù)據(jù)。

1.2.5、符號鏈接文件

l 代表符號鏈接文件,如下:

lrwxrwxrwx. 1 root root  7 Nov 11 2020 python -> python2
lrwxrwxrwx. 1 root root  9 Nov 11 2020 python2 -> python2.7
lrwxrwxrwx  1 root root  16 Nov 11 2020 python2-config -> python2.7-config
lrwxrwxrwx. 1 root root  9 Apr 12 2022 python3 -> python3.6

1.2.6、管道文件

p 代表管道文件,如下:

prw-------  1 root  root    0 Nov 30  2022 dmeventd-client
prw-------  1 root  root    0 Nov 30  2022 dmeventd-server

管道文件是一種特殊的文件類型,用于進程之間的通信。管道文件又被稱為命名管道文件(Named pipe),與普通文件不同的是,管道文件不能用于存儲數(shù)據(jù),而是用于流式傳輸數(shù)據(jù)。

管道文件可以通過mkfifo命令創(chuàng)建,并且可以使用rm命令刪除。管道文件的創(chuàng)建和刪除不會影響到已經(jīng)存在的進程,但是如果所有進程都關閉了管道文件,那么管道文件也會被刪除。

在Linux系統(tǒng)中,管道文件通常用于進程之間的數(shù)據(jù)傳輸,例如通過管道將一個進程的輸出直接傳遞給另一個進程的輸入,從而實現(xiàn)數(shù)據(jù)處理。例如,可以使用以下命令將一個進程的輸出傳遞給另一個進程:

$ command1 | command2

這樣,command1的輸出將被傳遞給command2的輸入,從而實現(xiàn)數(shù)據(jù)處理。

1.2.7、套接字文件

s 代表套接字文件,如下:

srwxr-xr-x  1 root  root     0 Apr 12 16:43 dockershim.sock
srw-rw----  1 root  docker   0 Jul 27 16:47 docker.sock

在Linux系統(tǒng)中,套接字文件是一種特殊的文件類型,用于進程之間的網(wǎng)絡通信。套接字文件通常以文件路徑的形式存在,例如 /var/run/docker.sock 。

套接字文件可以被多個進程共享,因此可以用于實現(xiàn)進程之間的通信和協(xié)調(diào)。在Linux系統(tǒng)中,套接字文件通常用于實現(xiàn)網(wǎng)絡服務,例如Web服務器、數(shù)據(jù)庫服務器等。

套接字文件的創(chuàng)建和使用需要借助 Socket API ,這是一組用于網(wǎng)絡編程的系統(tǒng)調(diào)用。在Socket API中,可以使用 socket、bind、listen、accept 等函數(shù)來創(chuàng)建和操作套接字文件。

套接字文件還可以分為兩種類型:流套接字(Stream socket)和數(shù)據(jù)報套接字(Datagram socket)。流套接字是一種面向連接的套接字,用于可靠的傳輸數(shù)據(jù)。數(shù)據(jù)報套接字是一種無連接的套接字,用于快速傳輸小型數(shù)據(jù)包。

總之,套接字文件是Linux系統(tǒng)中非常重要的文件類型,用于進程之間的網(wǎng)絡通信和協(xié)調(diào)。了解套接字文件的工作原理和使用方法,對于系統(tǒng)管理員和開發(fā)人員來說都是非常重要的。

1.3、權限

文件權限以 3 位為一組,分成 3 組,分別表示文件所有者的權限,文件所有者所屬組的權限及其他用戶的權限。

權限與數(shù)字對應關系表:

數(shù)字符號權限
0沒有權限
1–x執(zhí)行
2-w-寫入
3-wx寫入和執(zhí)行
4r–讀取
5r-x讀取和執(zhí)行
6rw-讀取和寫入
7rwx讀取、寫入和執(zhí)行

1.4、鏈接數(shù)

鏈接數(shù)表示指向該文件的硬鏈接數(shù)量。當一個新的硬鏈接被創(chuàng)建時,文件的鏈接數(shù)會自動增加,當硬鏈接被刪除時,鏈接數(shù)會相應減少。

例如,如果有一個名為 file.txt 的文件,并創(chuàng)建了兩個硬鏈接 link1 和 link2,那么該文件的鏈接數(shù)就是 3(原始文件名 file.txt 和兩個硬鏈接 link1 和 link2)。

鏈接數(shù)是 Linux 文件系統(tǒng)中一個重要的概念,它有以下幾個作用:

1)確定文件是否可以被刪除

鏈接數(shù)為 0 表示沒有任何硬鏈接指向該文件,該文件可以被刪除。

2)確定文件是否可以被修改

只有文件的所有硬鏈接都被刪除之后,才能對文件進行修改。在硬鏈接存在的情況下,修改任何一個鏈接都會影響到其他鏈接。

3)確定文件是否可以被重命名

如果一個文件有多個硬鏈接,重命名其中一個硬鏈接會影響到其他硬鏈接。因此,只有當文件的所有硬鏈接都被刪除后,才能將該文件重命名。

4)確定文件占用的磁盤空間

鏈接數(shù)的值等于文件的硬鏈接數(shù)加 1,其中加 1 表示文件本身所占用的空間。因此,當一個文件有多個硬鏈接時,它實際上只占用了一次磁盤空間。

如何查看文件鏈接數(shù)

ls -l

$ ls -l
total 4
-rw-r--r-- 1 root root 5 Aug 14 14:11 test.txt
# 其中鏈接數(shù)為 1

stat 命令

stat test.txt 
  File: ‘test.txt'
  Size: 5         	Blocks: 8          IO Block: 4096   regular file
Device: 2000d8h/2097368d	Inode: 1315730     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2023-08-14 14:11:57.865926283 +0800
Modify: 2023-08-14 14:11:57.865926283 +0800
Change: 2023-08-14 14:11:57.865926283 +0800
 Birth: -

二、修改文件權限

2.1、 chmod 命令

2.1.1、數(shù)字方式

使用數(shù)字方式時,每個權限都由三個數(shù)字表示,分別代表所有者、所屬組和其他用戶的權限。結(jié)合1.3,使用命令 chmod 700 file.txt ,給文件file.txt 加權限為 rwx------

2.1.2、符號方式

可以使用 + - 來添加或刪除權限,通過 u 、 g o 分別表示所有者、所屬組和其他用戶。

$ chmod u+rw file.txt
# 此命令以為著給所有者增加讀寫權限,所屬組合其他用戶權限不變。

2.2、 chown 命令

chown 命令用于修改文件的所有者。它可以通過用戶名或用戶 ID 指定新的所有者。

$ chown admin test.py 
$ ll | grep test.py
-rw-r--r-- 1 admin root    1997 Jun 27 16:59 test.py

2.3、 chgrp 命令

chgrp 命令用于修改文件的所屬組。它可以通過組名或組 ID 指定新的所屬組。

$ chgrp admin test.py 
$ ll | grep test.py
-rw-r--r-- 1 admin admin    1997 Jun 27 16:59 test.py

2.4、 umask 命令

Linux 操作系統(tǒng)中,umask 命令用于設置新建文件或目錄的默認權限。umask 命令是用戶級別的命令,通過該命令可以設置當前用戶的 umask 值,即默認權限掩碼。

umask 值是三個八進制數(shù)的形式,如 022,每個數(shù)字分別表示文件權限掩碼的三個位的值。其中,第一個數(shù)字表示新建文件的權限掩碼的所有者部分,第二個數(shù)字表示所屬組部分,第三個數(shù)字表示其他用戶部分。

默認情況下,umask 值通常為 022,即新建文件的默認權限為 -rw-r--r-- ,新建目錄的默認權限為 drwxr-xr-x 。

例如,當 umask 值為 002 時,新建文件的默認權限為 -rw-rw-r-- ,新建目錄的默認權限為 drwxrwxr-x 。

umask 值可以使用 umask 命令進行修改,該命令的語法如下:

$ umask [mode]

其中,mode 參數(shù)可以是一個八進制數(shù)或者一個符號模式。如果沒有指定 mode 參數(shù),則 umask 命令將會顯示當前的 umask 值

$ umask
0022

和chmod類似,也可以使用符號模式設置默認權限,如果要將默認權限掩碼設置為 -rwxr-xr-x ,那么可以使用以下命令:

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

上述命令中,u 表示所有者,g 表示所屬組,o 表示其他用戶,= 表示設置權限。因此,u=rwx 表示設置所有者的權限為可讀可寫可執(zhí)行,g=rx 表示設置所屬組的權限為可讀可執(zhí)行,o=rx 表示設置其他用戶的權限為可讀可執(zhí)行。

需要注意的是,umask 值是在當前會話中設置的,它不會影響已經(jīng)存在的文件或目錄的權限,只會影響新建文件或目錄的默認權限。

如果要永久修改 umask 值,可以將其添加到 shell 配置文件中,如 ~/.bashrc、~/.bash_profile 或 /etc/profile 等。

總之,umask 命令用于設置新建文件或目錄的默認權限掩碼。umask 值是三個八進制數(shù)的形式,可以使用八進制數(shù)或符號模式進行修改。默認情況下,umask 值通常為 022。

到此這篇關于詳解linux中的文件權限識別及修改的文章就介紹到這了,更多相關linux文件權限內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • shell 腳本安裝PHP擴展的簡單方法

    shell 腳本安裝PHP擴展的簡單方法

    下面小編就為大家?guī)硪黄猻hell 腳本安裝PHP擴展的簡單方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • shell結(jié)構化命令if-then-else語句

    shell結(jié)構化命令if-then-else語句

    在Shell腳本編程中,if-then-else語句提供了基于條件執(zhí)行不同命令的能力,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-11-11
  • shell腳本快速檢查192.168.1網(wǎng)段ip是否在用的方法

    shell腳本快速檢查192.168.1網(wǎng)段ip是否在用的方法

    該Shell腳本通過并發(fā)ping命令檢查192.168.1網(wǎng)段中哪些IP地址正在使用,腳本定義了網(wǎng)絡段、超時時間和并行掃描數(shù)量,并使用不同顏色的日志區(qū)分在線和離線的IP地址,本文介紹shell腳本快速檢查192.168.1網(wǎng)段ip是否在用,感興趣的朋友一起看看吧
    2025-01-01
  • Linux中的service命令與systemctl命令有何區(qū)別

    Linux中的service命令與systemctl命令有何區(qū)別

    在Linux中,service?和?systemctl?是兩個至關重要且極其相似的命令,它們?nèi)绱讼嗨疲灾劣谌藗兒苋菀紫胫浪鼈冎g有何不同,是否可以互換使用,下面我們就來看看之前的區(qū)別到底有哪些吧
    2023-08-08
  • Linux Shell 生成隨機數(shù)和隨機字符串的方法示例

    Linux Shell 生成隨機數(shù)和隨機字符串的方法示例

    這篇文章主要介紹了Linux Shell 生成隨機數(shù)和隨機字符串的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • shell腳本一鍵同時推送代碼至github和gitee的解決辦法

    shell腳本一鍵同時推送代碼至github和gitee的解決辦法

    這篇文章主要介紹了shell腳本一鍵同時推送代碼至github和gitee的解決辦法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • Shell腳本中判斷輸入?yún)?shù)個數(shù)的方法

    Shell腳本中判斷輸入?yún)?shù)個數(shù)的方法

    這篇文章主要介紹了Shell腳本中判斷輸入?yún)?shù)個數(shù)的方法,使用內(nèi)置變量$#即可實現(xiàn)判斷輸入了多少個參數(shù),需要的朋友可以參考下
    2014-10-10
  • linux幾個沒用但是有趣的命令(收藏)

    linux幾個沒用但是有趣的命令(收藏)

    今天給大家分享一些linux幾個沒用但是有趣的命令,非常不錯,喜歡的朋友快快收藏吧
    2021-11-11
  • shell高級學習之正則表達式

    shell高級學習之正則表達式

    這篇文章主要給大家介紹了關于shell高級學習之正則表達式的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用shell具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-05-05
  • Shell腳本實現(xiàn)自動安裝zookeeper

    Shell腳本實現(xiàn)自動安裝zookeeper

    這篇文章主要介紹了Shell腳本實現(xiàn)自動安裝zookeeper,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下
    2015-01-01

最新評論