1. 程式人生 > 其它 >Linux基礎(1)

Linux基礎(1)

內容概要

  • 檔案型別
  • 軟連結&硬連結
  • 使用者與使用者組

內容概要

一、檔案型別

1、Linux檔案型別簡介

檢視檔案詳細資訊

# 命令:
	ls -li  # -i 顯示檔案的 inode 數字
	
[root@localhost ~]# ls -li
total 12
134319695 -rw-------. 1 root root 1691 Dec  8 17:25 anaconda-ks.cfg
135085785 -rw-r--r--. 1 root root  678 Dec 11 19:02 elijah.txt
134319703 -rw-r--r--  1 root root    0 Dec 14 10:11 hard_index
135085801 -rw-r--r--  1 root root 1504 Dec 12 22:04 niu.txt
# 詳解
134319695		 # 檔案的inode,表示該檔案的記憶體地址
-rw-------.		 # ‘-’ 表示檔案型別為普通檔案,rw------- 是許可權
1				# 表示檔案的硬連結數
root			# 檔案所屬使用者
root			# 檔案所屬組
1691			# 檔案大小,單位為位元組
Dec  8 17:25	 # 表示修改日期
anaconda-ks.cfg	 # 檔名

2、Linux 檔案型別

# 如何判斷檔案型別
-rw-r--r--    檢視這裡的第一個字元

1、普通文字			f(-)
2、資料夾			 d    	 # directory
3、連結檔案		l    		# link
4、裝置檔案			b		# 磁碟檔案
					c		# 字元檔案
5、管道檔案			P		
6、套接字檔案			s		# socket
	yum install mariadb* -y

注意:不能以顏色判斷檔案型別。

二、軟連結 & 硬連結

簡介

	在 Linux 中,每個檔案都有對應的獨一無二的 inode 號,用於作為檔案的標識,檔名只是便於記憶,inode 號指向
的是檔案記憶體的地址

	# 硬連結(hard link)
	可以將它理解為一個 “指向原始檔案 inode 的指標”,系統不為他新增獨立的 inode,所以,硬連結檔案與原始檔案其實
是同一個檔案,只是名字不同。每新增一個硬連結,檔案的硬連結數就會加1
	
	# 軟連結
	等同於 Windows 系統下的快捷方式。僅僅包括所含連結檔案的路徑名字。因此能連結目錄,也能跨檔案系統連結。但是,
當刪除原始檔案後,連結檔案也將失效。

刪除檔案

	每新增一個硬連結,檔案的硬連結數就會加 1 ,當刪除原檔案或者硬連結檔案的時候,硬連結數就會減 1 ,當硬連結數
達到 0 的時候,檔案就算是被刪除了

	刪除檔案的底層邏輯
        1、刪除的是硬連結
        2、判斷該檔案硬連結數是否為0
        3、如果為0,則在磁碟中將其刪除
        4、如果不為0,則只刪除一個硬連結

操作命令

[root@localhost ~]# ll -i
total 12
134319703 -rw-r--r--  1 root root    0 Dec 14 15:36 index.txt

# 建立硬連結
	ln [引數] [原檔案路徑] [硬連結檔案路徑]

[root@localhost ~]# ln index.txt hard_link
[root@localhost ~]# ll -i
total 12
134319703 -rw-r--r--  2 root root    0 Dec 14 15:36 hard_link	# 硬連結數從 1 變成了 2,檔案的inode號與原檔案一致
134319703 -rw-r--r--  2 root root    0 Dec 14 15:36 index.txt

# 建立軟連結
	ln -s [原檔案路徑] [硬連結檔案路徑]

[root@localhost ~]# ln -s index.txt soft_link
[root@localhost ~]# ll -i
total 12
134319703 -rw-r--r--  2 root root    0 Dec 14 15:36 hard_link
134319703 -rw-r--r--  2 root root    0 Dec 14 15:36 index.txt
134319708 lrwxrwxrwx  1 root root    9 Dec 14 15:40 soft_link -> index.txt

	可以看到軟連結是個單獨的檔案,連結數為 1,檔案型別是連結檔案,而且儲存的只是原檔案的路徑資訊

# 刪除原檔案
[root@localhost ~]# rm index.txt
[root@localhost ~]# ll -i
total 12
134319703 -rw-r--r--  1 root root    0 Dec 14 15:36 hard_link
134319708 lrwxrwxrwx  1 root root    9 Dec 14 15:40 soft_link -> index.txt
	
	檔案的硬連結數變為 1,軟連結提示也變紅了,表示無法識別原檔案

圖示

1、原檔案

2、新增硬連結

3、刪除原檔案

4、建立軟連結


3、使用者與使用者組

簡介

使用者:相當於賬號
	root   test
使用者組:某些具有相同屬性的賬號的集合
	root

使用者分類

系統使用者:uid在 0 - 999 之間的使用者,我們就看作系統使用者
	系統使用者一般用在啟動應用程式上,一般不需要登入系統。

普通使用者:uid在 1000及以上的使用者,我們就看作普通使用者
	一般用在登入上。

建立使用者和建立組

建立使用者的命令:useradd
    引數:
        -g : 指定使用者組(使用者必須存在)
        -r : 建立系統使用者
        -M :不建立家目錄
        -u :指定建立使用者的ID的

# 建立普通使用者
	useradd [使用者名稱]
	[root@localhost home]# useradd user01
	
	每建立一個普通使用者,就會在 /home 目錄下建立一個使用者資料夾
[root@localhost ~]# cd /home
[root@localhost home]# ll -i
total 0
1215668 drwx------ 2 elijah elijah 99 Dec 13 17:38 elijah
1223338 drwx------ 2 user01 user01 62 Dec 14 16:16 user01

# 建立系統使用者
	[root@localhost home]# useradd -r root01

# 建立使用者組
	[root@localhost home]# groupadd mygroup
	組資訊存放的目錄: /etc.group

# 刪除使用者
	[root@localhost home]# userdel user01
	[root@localhost home]# userdel -r user01     連同使用者主目錄一起刪除

[root@localhost home]# userdel -r elijah
[root@localhost home]# ls
user01
[root@localhost home]#

切換使用者

su - [使用者名稱]
su [使用者名稱]

[root@localhost home]# su elijah
[elijah@localhost home]$
	
	注意看使用者名稱已經從 root 變為了 elijah, 符號 # 變為了 $

檢視使用者 ID

# 檢視使用者的ID和組的ID
    id [使用者名稱]

[root@localhost home]# id elijah
uid=1000(elijah) gid=1000(elijah) groups=1000(elijah)

檢視使用者詳情檔案

目錄 : /etc/passwd

[root@localhost home]# cat /etc/passwd

elijah:x:1000:1000: 使用者簡介 :/home/elijah:/bin/bash

使用者名稱		  : elijah
密碼佔位符    :x
1000		: userid
1000		: 組id
/home/elijah : 家目錄
/bin/bash	:預設的解析器	

# 檢視使用者組
目錄 : /etc/group

[root@localhost etc]# cat group

root01:x:996:
mygroup:x:1002:
elijah:x:1000:
使用者組名 --> elijah
使用者組id --> 1000

4、不使用 useradd 建立使用者

須知


     一個標準的使用者在如下檔案中擁有自己的資訊:

      /etc/passwd  使用者的賬戶資訊  格式是              名字:密碼:ID:GroupID:描述符:家目錄:shell
      /etc/shadow  使用者的密碼資訊  格式是              $加密方式$干擾值$密碼:密碼可以隔多久該更改一次:          
      /etc/group     組資訊
      /home/使用者名稱    一個標準的使用者還會擁有自己的家目錄,家目錄中還會有一定的資源
	/etc/skel/ 中的隱藏檔案是家目錄中的模版

1、建立使用者家目錄

[root@localhost home]# ls
elijah  user01
# 建立使用者 user02
[root@localhost home]# mkdir user02
[root@localhost home]# ls
elijah  user01  user02

2、新增使用者組資訊

[root@localhost etc]# vim group

mygroup:x:1002:
elijah:x:1000:
user02:x:1001:

3、新增使用者賬戶資訊

[root@localhost etc]# cat passwd
elijah:x:1000:1000::/home/elijah:/bin/bash
# 新增使用者賬戶資訊
[root@localhost etc]# vim passwd
[root@localhost etc]# cat passwd
elijah:x:1000:1000::/home/elijah:/bin/bash
user02:x:1001:1001::/home/user02:/bin/bash

4、新增使用者密碼資訊

[root@localhost etc]# cat shadow
elijah:!!:18975:0:99999:7:::
# 新增使用者密碼資訊
[root@localhost etc]# vim shadow
[root@localhost etc]# cat shadow
root01:!!:18975::::::
elijah:!!:18975:0:99999:7:::
user02:!!:18975:0:99999:7:::

5、修改家目錄及子目錄的所有者和屬組以及修改使用者許可權

# 修改家目錄及子目錄的所有者和屬組
chown -R user_name:user_name /home/user_name   # 模板 修改所屬使用者與組(包括下面的目錄)

[root@localhost etc]# chown -R user02:user02 /home/user02


# 修改許可權
 chmod 700 <目標檔案> : 修改使用者的許可權為: 只有擁有者可以讀寫開啟
 或者
 chmod -R go= /home/user_name
 
 [root@localhost etc]# chmod 700 /home/user02
 

6、拷貝家目錄隱藏檔案

/etc/skel/ 中的隱藏檔案是家目錄中的模版
[root@localhost skel]# ll -a
total 24
drwxr-xr-x.  2 root root   62 Dec  8 17:17 .
drwxr-xr-x. 82 root root 8192 Dec 14 16:44 ..
-rw-r--r--.  1 root root   18 Apr  1  2020 .bash_logout
-rw-r--r--.  1 root root  193 Apr  1  2020 .bash_profile
-rw-r--r--.  1 root root  231 Apr  1  2020 .bashrc

cp -r /etc/skel/. <家目錄路徑>  把模版拷貝到你的家目錄中
或
cp -r /etc/skel/* <家目錄路徑>

# 下面這個是把整個 skel 資料夾都拷貝過來了
[root@localhost etc]# cp -r /etc/skel /home/user02

# 正確用這個:
[root@localhost user02]# cp -r /etc/skel/. /home/user02

[root@localhost user02]# ll -ai
total 12
135096541 drwx------  3 user02 user02  74 Dec 14 19:10 .
134418322 drwxr-xr-x. 5 root   root    48 Dec 14 17:39 ..
135096537 -rw-r--r--  1 root   root    18 Dec 14 19:10 .bash_logout
135096542 -rw-r--r--  1 root   root   193 Dec 14 19:10 .bash_profile
135096543 -rw-r--r--  1 root   root   231 Dec 14 19:10 .bashrc

測試

# 使用者 user02 建立成功!

[root@localhost /]# su user02
[user02@localhost /]$ 
[user02@localhost /]$ 
[user02@localhost /]$