mycpen

Mycpen

记录学习历程与受益知识
github
telegram
bilibili

16_Linux基礎-文件&目錄權限及歸屬

一。文件 / 目錄的權限#

文件 / 目錄的權限

訪問權限

  • 可讀(read):允許查看文件內容、顯示目錄列表 r
  • 可寫(write):允許修改文件內容,允許在目錄中新建、移動、刪除文件或子目錄 w
  • 可執行(execute):允許運行程序、切換目錄 x

歸屬(所有權)

  • 文件擁有者(owner):擁有該文件或目錄的用戶帳號 # 注:屬主
  • 屬組(group):擁有該文件或目錄的組帳號 # 注:屬組
  • 其他人(others):除了屬主和屬組的其他人 # 注:其他

#注:區分是對於文件而言還是對於目錄而言

ls -al 查看當前目錄下面文件或者文件夾的詳細信息,包括文件的權限
ls -ld 查看當前目錄
示例1:查看文件權限 ls -al
# 注:第三列屬主 第四列屬組
---------------------------------------------------------------------------------------------------------------------------------
[root@sanchuang-linux ~]# ls -al				#注:查看文件權限
總用量 668
-rw-r--r--.  1 root root    211 9月  18 10:31 '!'
dr-xr-x---. 21 root root  12288 11月  6 15:16  .
[root@sanchuang-linux ~]# ls -al zuoye.sh 		# 注:查看單個文件權限
-rw-r--r--. 1 root root 1212 10月 29 20:20 zuoye.sh
[root@sanchuang-linux ~]# ls -al /home			# 注:查看/home目錄下所有文件的權限
總用量 18348
drwxr-xr-x. 43 root         root            4096 11月  6 15:36 .
dr-xr-xr-x. 38 root         root            4096 11月  5 15:12 ..
[root@sanchuang-linux ~]# ls -al *.sh			# 注:查看文件權限
-rw-r--r--. 1 root root    0 9月  25 09:35 backup_log.sh
-rw-r--r--. 1 root root   41 10月 28 20:27 file_test.sh

示例2:查看目錄權限 ls -ld /home
--------------------------------------------------------------------------------------------
[root@sanchuang-linux ~]# ls -ld /home			# 注:查看/home 目錄的權限
drwxr-xr-x. 43 root root 4096 11月  6 15:36 /home

二。文件 / 目錄的權限#

[root@localhost ~]# ls -ld first.py 
-rw-r--r--. 1 root root 1097 10月 13 10:20 first.py
文件類型 訪問權限  所有者  屬組

image-20220816204743513

示例:drwxr-xr-x
--------------------------------------------------------------------------------------------
第一列:表示文件類型與權限
	第一個字符
        -	普通文件 file
        d	表示目錄
        s	表示socket文件			# 注:socket(套接字) 進程之間通信的一種方式。
        p	管道文件 pipe
        c	字符設備文件	tty
        b	塊設備文件	 磁碟(disk)	# 注:跟硬件相關的塊設備文件一般放在 /dev下面
        l	鏈接文件				# 注:/usr/bin/目錄下 有大量 鏈接文件

  #權限 r 可讀  w 可寫  x 可執行
  ·第2-第4個字符
  	  表示屬主的權限
  ·第5-第7個字符
  	  表示屬組的權限
  ·后三個
	  表示其他人的權限
--------------------------------------------------------------------------------------------
敲的所有命令都是在PATH環境變量路徑下查找

創建鏈接文件
# 注:ln -s 源文件 目標文件		symbolic adj. 象徵的;符號的;使用符號的
[root@sanchuang-linux bin]# ln -s python3.6 python			# 注:-s創建軟鏈接
[root@sanchuang-linux bin]# ln -s python3.6 /root/python	# 注:可以在絕對路徑下創建鏈接文件
#注:鏈接文件/root/python 放在了/root目錄下
which查看命令的絕對路徑
[root@sanchuang-linux bin]# which mkdir
/usr/bin/mkdir
[root@sanchuang-linux bin]# mv /usr/bin/mkdir /usr/bin/mkdirbak	# 注:修改名字後 命令找不到了
[root@sanchuang-linux bin]# mkdir
-bash: mkdir: 未找到命令
[root@sanchuang-linux bin]# mkdirbak /tmp/mkdir
[root@sanchuang-linux bin]# mv /usr/bin/mkdirbak /usr/bin/mkdir	# 注:改回來

/usr/bin/下有大量鏈接文件
[root@sanchuang-linux tmp]# cd /usr/bin/						# 注:/usr/bin/下有大量鏈接文件
[root@sanchuang-linux bin]# ls -al python2						# 注:鏈接文件
lrwxrwxrwx. 1 root root 9 6月   5 11:38 python2 -> python2.7
[root@sanchuang-linux bin]# ls -al python3						# 注:鏈接文件
lrwxrwxrwx. 1 root root 25 9月  18 15:47 python3 -> /etc/alternatives/python3

三. socket(套接字)#

#注:socket(套接字) 進程之間通信的一種方式,通常用於不同主機不同進程之間的通信方式(網絡編程)

ftp 有 vsftpd 的服務,vsftpd 服務端服務起來了開啟 21 號端口。ftp 客戶端要想連接這個服務,ftp 客戶端需要開啟一個隨機端口去連接 21 號端口,進行網絡傳輸。通過網絡指定某種特定協議,進行網絡連接。

開啟一個 vsftpd,會產生一個 socket 文件

開放了端口基本上都會有一個 socket 文件

[root@localhost mail]# cd /data/mysql
[root@localhost mysql]# ls -al
srwxrwxrwx  1 mysql mysql        0 10月  7 12:04 mysql.sock		# 注:s socket文件 (粉色)

四. Linux 內核五大子系統#

Linux 內核五大子系統:

  • 1、文件系統
  • 2、內存管理
  • 3、進程通信
  • 4、進程調度
  • 5、網絡接口

五。進程#

進程是系統進行資源分配的基本單位,不同進程之間資源是互相隔離的

進程之間通信(常見的 5 種):

  1. 管道
  2. 信號 (kill -9)
  3. 共享內存
  4. socket 套接字
  5. 消息隊列
示例1:管道				#注:管道是進程之間通信的一種方式
示例
[root@sanchuang-linux ~]# cat /etc/passwd |grep sanchuang	# 注:通過管道把前進程的輸出賦給後進程的輸入
sanchuang:x:1005:1005::/home/sanchuang:/bin/bash
#注:適用於相同主機不同進程
--------------------------------------------------------------------------------------------
示例2:信號				
示例:kill -9 pid
[root@sanchuang-linux ~]# kill -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1………………
[root@sanchuang-linux ~]# ps -ef |grep nginx
root        5868    5691  0 16:29 pts/0    00:00:00 grep --color=auto nginx
[root@sanchuang-linux ~]# kill -9 2868					# 注:發送9這個信號給1209進程
--------------------------------------------------------------------------------------------
示例3:共享內存
#注:A、B之間創建了一片新的內存空間,可以一起去拿
#注:適用於相同主機不同進程
--------------------------------------------------------------------------------------------
示例4:socket套接字
#注:用於不同主機之間不同進程  網絡通信
--------------------------------------------------------------------------------------------
示例5:消息隊列
#注:相當於排隊的 1,2,3,4,5,6
#注:AB共享的內存空間裡,A產生的B去獲取。A產生1,B取出來,1從A裡出去

六. / 根目錄下#

/etc 存放配置文件
/dev 存放設備文件 # 注:硬件相關的 磁碟、網卡、socket
/root # 注:root 用戶家目錄
/home # 注:存放普通用戶的家目錄文件

[root@sanchuang-linux ~]# cd /dev
[root@sanchuang-linux dev]# ls -al
crw-rw-rw-   1 root tty       5,   0 11月  6 11:32 tty		# 注:字符設備文件	tty
crw--w----   1 root tty       4,   0 11月  5 15:12 tty0
crw--w----   1 root tty       4,   1 11月  6 14:28 tty1
brw-rw----   1 root disk      8,   0 11月  5 15:12 sda		# 注:塊設備文件	磁碟

七。可執行權限#

第一列第二到第十個字符
  #權限 r 可取  w 可寫  x 可執行
  第2-第4個字符
  	  表示屬主的權限
  第5-第7個字符
  	  表示屬組的權限
  後三個
	  表示其他人的權限
示例
--------------------------------------------------------------------------------------------
[root@sanchuang-linux ~]# ls -al men_test.sh 
-rw-r--r--. 1 root root 0 10月 30 16:26 men_test.sh
[root@sanchuang-linux ~]# bash men_test.sh 	# 注:使用bash解釋器去執行(生成一個新的bash)
[root@sanchuang-linux ~]# sh men_test.sh 	# 注:使用sh解釋器去執行(生成一個新的sh)
[root@sanchuang-linux ~]# . men_test.sh		# 注:使用當前bash去執行,會繼承當前環境變量
#注:相當於當前bash,當前環境
[root@sanchuang-linux ~]# ./men_test.sh 	# 注:權限不夠,本身沒有可執行權限
-bash: ./men_test.sh: 權限不夠				 # 注:有可執行權限的文件 可以直接./men_test.sh執行

八. Shell 文件執行方式#

Shell 文件執行方式(3 種)
#注:shell 裡面可執行文件後綴沒有要求 不一定非要.sh 結尾

[root@sanchuang-linux ~]# vim test_aa.sh
echo "testaa..."
echo $a
echo $b
[root@sanchuang-linux ~]# a=1
[root@sanchuang-linux ~]# b=2
[root@sanchuang-linux ~]# . test_aa.sh 	# 注:使用當前bash去執行test_aa.sh,會繼承當前 shell 的 環境變量
testaa...								# 注:用.會繼承當前bash裡的一切變量
1
2
[root@sanchuang-linux ~]# bash test_aa.sh 	# 注:創建一個新的bash環境去執行命令
testaa...									# 注:新bash環境中沒有定義a、b變量
											# 注:沒有輸出父bash的a、b
											# 注:沒有獲取到a、b
[root@sanchuang-linux ~]# sh test_aa.sh 		# 注:創建一個新的sh環境去執行命令
testaa...
											# 注:沒有輸出

[root@sanchuang-linux ~]# ./test_aa.sh 		# 注:執行文件本身,看文件本身有沒有執行權限
-bash: ./test_aa.sh: 權限不夠				 # 注:直接執行當前目錄下的這個文件 需要可執行權限
# 注:其他的方式不一定需要可執行權限

總結
. test_aa.sh			不需要可執行權限	當前bash進程執行
bash test_aa.sh			不需要可執行權限	新的bash進程運行
sh test_aa.sh			不需要可執行權限	新的bash進程運行
./test_aa.sh			需要可執行權限	新的bash進程運行

九. chmod 命令#

chmod 命令 # 注:修改文件的訪問權限

格式 1chmod [ugoa] [+-=] [rwx] 文件或目錄...

  • u、g、o、a 分別表示
    u 屬主、g 屬組、o 其他用戶、a 所有用戶

  • +、-、= 分別表示
    + 增加、- 去除、= 設置權限

  • rwx
    對應的權限字符

常用命令選項

  • -R:遞歸修改指定目錄下所有文件、子目錄的權限
示例
--------------------------------------------------------------------------------------------
[root@sanchuang-linux ~]# chmod u+x men_test.sh 		# 注:對屬主+可執行權限
[root@sanchuang-linux ~]# ls -al men_test.sh 
-rwxr--r--. 1 root root 0 10月 30 16:26 men_test.sh		# 注:可執行文件 都是綠的
#注:可執行文件	都是綠的
#注:socket文件	都是粉的
[root@sanchuang-linux ~]# ./men_test.sh 				# 注:可以直接執行了
--------------------------------------------------------------------------------------------
[root@sanchuang-linux lianxi]# chmod a-x sc -R		# 注:-R遞歸,把該目錄和該目錄下的所有子文件都去除可執行權限
[root@sanchuang-linux lianxi]# chmod a+x sc -R		# 注:所有用戶增加可執行權限
============================================================================================
#注:根目錄只有root用戶能用
[root@sanchuang-linux ~]# ls -ld /
dr-xr-xr-x. 38 root root 4096 11月  5 15:12 /
============================================================================================
[root@mysql-binary ~]# chmod u+x group_member.sh 
[root@mysql-binary ~]# ./group_member.sh sanchuang5		# 注:添加了可執行權限後可以 ./運行
sanchuang5,sanchuang11,sanchuang13,sanchuang10,sanchuang12

十. chmod 命令#

chmod 命令 # 注:修改文件的訪問權限

格式 2chmod nnn 文件或目錄... # 注:nnn 表示 3 位八進制數

權限項 讀 寫 執行 讀 寫 執行 讀 寫 執行

字符表示 r w x r w x r w x

數字表示 4 2 1 4 2 1 4 2 1

權限分配 文件所有者 文件所屬組 其他用戶

image-20220816210259355

常用命令選項

  • -R:遞歸修改指定目錄下所有文件、子目錄的權限

#注:root 用戶基本上無論有沒有權限,它都可以使用

示例
--------------------------------------------------------------------------------------------
[root@sanchuang-linux ~]# chmod 777 sc 				# 注:都有讀寫執行的權限
[root@sanchuang-linux ~]# chmod 700 sc 				# 注:屬主有讀寫執行的權限
--------------------------------------------------------------------------------------------
[root@sanchuang-linux home]# ls -ld sanchuang		# 注:查看目錄權限 ls -ld
drwx------. 4 sanchuang sanchuang 122 11月  6 17:10 sanchuang
[root@sanchuang-linux home]# chmod 777 /home/sanchuang		# 注:都有讀寫執行的權限
[root@sanchuang-linux home]# ls -ld sanchuang
drwxrwxrwx. 4 sanchuang sanchuang 122 11月  6 17:10 sanchuang
[root@sanchuang-linux home]# chmod 777 /home/sanchuang -R	# 注:-R:遞歸修改指定目錄下所有文件、子目錄的權限
[root@sanchuang-linux home]# ls -ld sanchuang
drwxrwxrwx. 4 sanchuang sanchuang 122 11月  6 17:10 sanchuang
#注:用戶的家目錄下(如/home/sanchuang)授予所有對象讀寫執行權限,會造成普通用戶sanchuang無法進行遠程登錄

示例:root用戶基本上無論有沒有權限,它都可以使用
[root@sanchuang-linux ~]# ls -ld /etc/shadow
---------- 1 root root 4201 11月  7 12:04 /etc/shadow
[root@sanchuang-linux ~]# vim /etc/shadow

十一。一般情況下普通用戶只能在家目錄下或者 /tmp 目錄下創建文件或者文件夾#

一般情況下普通用戶只能在家目錄下或者 /tmp 目錄下創建文件或者文件夾

#注:/tmp 目錄是一個臨時目錄,一般存放臨時性的東西(如:程序運行中需要記錄的一些東西,程序結束後把 /tmp 目錄下的東西刪掉)

[root@sanchuang-linux ~]# su - sanchuang
上一次登錄:五 11月  6 17:09:41 CST 2020pts/2
[sanchuang@sanchuang-linux ~]$ ls -ld /
dr-xr-xr-x. 38 root root 4096 11月  5 15:12 /
[sanchuang@sanchuang-linux ~]$ ls -ld /etc
drwxr-xr-x. 90 root root 8192 11月  7 15:00 /etc
[sanchuang@sanchuang-linux ~]$ ls -ld ./				# 注:家目錄下 創建文件或者文件夾
drwxrwxrwx. 4 sanchuang sanchuang 122 11月  6 17:10 ./
[sanchuang@sanchuang-linux ~]$ ls -ld /tmp				# 注:/tmp目錄下 創建文件或者文件夾
drwxrwxrwt. 12 root root 264 11月  7 10:36 /tmp

#注:chmod 自己是屬主的時候,才可以修改權限

十二. chmod#

chmod # 注:修改文件的歸屬權限

chmod 使用,必須是文件的屬主,才能改動文件的讀寫執行權限(root 除外)

[root@sanchuang-linux chenpeng]# su - sanchuang11		# 注:加 - 會自動到家目錄下
上一次登錄:六 11月  7 15:10:51 CST 2020pts/0
[sanchuang11@sanchuang-linux ~]$ exit
登出
[root@sanchuang-linux chenpeng]# su sanchuang11			# 注:不加 - 會在當前路徑下
[sanchuang11@sanchuang-linux chenpeng]$ 

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。