在Linux系統中,默認情況下,用戶相關信息都記錄在/etc/passwd這個文件中 ,個人密碼記錄在/etc/shadow中
除此之外,Linux的組Group信息都放在/etc/group內。
user group others 作爲linux的基本常識這裏就不在進行描述了,接下來我們瞭解一下文件的基本信息
文件的基本信息
ls 就是list的縮寫,展示當前目錄下的文件列表,ls -al (可以簡寫成ll) 會額外展示此時用戶對文件的操作權限。
先解釋一下上面的意思:(爲了說明方便,這裏把文件夾和文件統稱爲文件)
drwxr-xr-x. | 17 | root | root | 256 | Apr 26 14:24 | bin |
---|---|---|---|---|---|---|
文件權限 | 鏈接數 | 文件擁有者 | 文件所屬group | 文件容量(字節) | 文件最後修改時間 | 文件名 |
文件權限 eg. drwxr-xr-x
linux用10位字符來表示文件權限, 每位有不同的權限含義,某一位無權限時用 符號' - ' 表示。
第1位:
d 表示該文件是文件目錄,
- 表示該文件是文件
l 表示鏈接文件 (link files)。類型windows的桌面快捷方式
b 表示裝置文件裏可供存儲的接口設備(可隨機存儲裝置)比如硬盤 。軟盤 , eg. /dev/sda
c 表示裝置文件裏的串行端口設備,如鍵盤鼠標等。
s 資料接口文件 (sockets) 在網絡中的數據承接文件 通常在/run 下和/tmo下
p 數據輸送文件 (pipe) FIFO管道文件,用於解決多個程序讀取同一文件的同步性和有序性
接下來的字符每3個爲一組,第2、3、4位爲一組,一般均爲rwx和-的字符組合。(嚴謹的說,x還可以變成s或t)
其中:
文件:r 表示read 可讀權限,w表示write 可寫權限,x表示execute 可執行權限 s(暫時不講,後面說) 若沒有某一個權限則字符爲‘ - ’
目錄:r表示可以讀取目錄中包含的文件名數據,ls w 表示 可以在目錄中創建和刪除文件,改文件名,複製或移動文件 , x表示該目錄是否允許進入。
s: 標誌位可執行文件,且該可執行文件可以使用系統的所有資源。
t: 暫時不描述
第1組:
文件擁有者可具備的權限。 案例文件的擁有者是root,則root便擁有rwx 即讀、寫、執行三個權限
第2組:
羣組Group的可具備的權限,即加入此羣組的用戶可具備的權限。
第3組:
Others的權限,即非本人且沒加入該羣組人的權限。 一般爲 r-- (只給外人可讀權限,可望不可即)
另外,目錄與文件的權限含義有一些區別,這在後續會寫到
鏈接數
表示有多少文件鏈接到這個文件的i-node 節點中, i-node後續會講到,這裏先不詳細講解。
其他的顧名思義即可
特別要說明的的是文件名,如果文件名前面多了一個 “.” ,如.git 表示該文件爲隱藏文件。這種情況下,ls查不到該文件,需要通過 ll 進行查看
ls 的其他參數 請查看 ls --help
改變文件的屬性與權限
改變屬性 :
chgrp 改變文件所屬羣組
chgrp其實是change group的縮寫, 要改變的組名必須在/etc/group中存在,不存在則先需要創建組。
chown 改變文件擁有者
chown 其實是change owner的縮寫,要改變的用戶必須在/etc/passwd中存在,不存在則先需要創建用戶,
chown -R 會進行遞歸變更,即修改目標目錄下的所有文件
chown root:root xxxx 同時修改擁有者和羣組,用:分割
改變權限:
chmod 改變文件權限
chmod 可以通過字符改變權限也可以通過數字改變權限。其對應關係爲:
r | 4 |
w | 2 |
x | 1 |
所以數字可以通過 4+2+1的方式累加,可以得到以下規律:
--- | 0 |
r-- | 4 |
-w - | 2 |
--x | 1 |
rw- | 4+2=6 |
rwx | 4+2+1=7 |
所以 如果要把一組的權限設置成rwx,則設置數字爲7即可。因此。 chmod 777 xxx 表示給文件設置所以權限。
通過字符進行修改這裏就直接略過,格式爲 chmod u=rwx, g=rwx, o=rwq xxx
Tip:Linux文件長度限制
單個文件或目錄的最大文件名大小爲255字節,ASCII英文佔一個字節,最大能容納255個字符的文件名
Linux的目標配置
可分享的(shareable) | 不可分享(unshareable) | |
---|---|---|
不變的(static) | /usr (軟件) | /etc (配置文件) |
/opt (第三方軟件) | /boot (開機啓動有關的文件) | |
可變的(variable) | /var/mail(使用者郵箱信件) | /var/run(程序相關) |
/var/spool/news(新聞組) | /var/lock (程序相關) |
linux系統層面並不強制這樣規定,你可以理解爲一個業內通用的規範。
可不可分享就是指能否掛載給其他系統或者網絡上的其他主機進行訪問,
/
root根目錄,與系統有關
/usr
unix software resource unix軟件源(linux以前爲了兼容unix,許多地方都和unix兼容)與軟件安裝和執行有關
/var
variable 與系統運作過程有關
根目錄
可以理解爲windows系統的C盤,放置着大量的系統文件,分區應儘量小從而減少出錯概率(分區大容易放入其他文件,增加出錯機會)
目錄 | 應放置文件內容 |
---|---|
/bin | 放置許多系統的執行文件,對應着一系列的執行命令,如cat ,chmod,chown,date,mv,mkdir,cp,bash等 |
/boot | 放置開機引導所需要的文件,開機菜單欄和開機配置等 |
/dev | 放置裝置文件和接口設備文件,如硬盤,鼠標,鍵盤等, |
/etc | 放置系統的配置文件,如用戶配置,密碼配置,羣組配置,其他用戶可以查看,但是root纔有權限修改,/etc/opt 放置系統的第三方軟件文件 |
/lib | 放置系統的函式庫,這裏可以簡單理解成windows的驅動程序 |
/lib64 | 放置64位的系統函式庫 |
/media | 可移除裝置的目錄,一般就是掛載的硬盤 |
/mnt | 掛載額外的設備,這個一般用於掛載共享硬盤,比如windows在虛擬機中運行Linux,掛載共享的文件內容則在這個目錄下 |
/opt | 放置第三方軟件,比如桌面管理工具等一系列軟件, 用戶個人下載安裝的軟件建議放在/usr/local中 |
/run | 放置系統開機後產生的各項信息 |
/sbin | 放在開機中需要的系統指令文件 |
/srv | 可以看做service的縮寫,放置的是網絡服務文件 |
/tmp |
放置用戶產生的臨時文件,不能放重要文件,最好定期刪除裏面的內容 |
/usr |
全稱 unix software resource 存放用戶安裝的軟件,可以類比成windows的C:\Program files /usr/bin: centos7以上,該目錄的內容和 /bin一樣,存放着一般用戶能執行的指令文件 /usr/lib: 一般和/lib相同,lib64同理 /usr/local: 一般我們會把linux中下載安裝的軟件放置在這個目錄方便管理 /usr/sbin: 系統指令,一般只有root能執行,和/sbin 相同 /usr/share 放置一些只讀共享文件,比如軟件文件說明,時間有關文件等。 /usr/games 放置遊戲, 雞肋文件...... /usr/include 放置C/C++等程序語言的頭文件 /usr/libexec 放置用戶常用的執行文件或腳本。 /usr/src 一般放置軟件的源碼 |
/var |
放置緩存,日誌文件,軟件產生的持久化文件,比如mysql的數據文件,redis的數據文件,docker的數據文件等等 /var/cache 應用程序運行過程的緩存 /var/lib 放置應用程序運行時需要用到的數據文件 比如 mysql的數據庫文件 放置到 /var/lib/mysql 中 /var/lock 同步鎖文件,保證文件讀寫安全,鏈接到/run 和/run相同 /var/mail 郵箱文件 鏈接到/var/spool/mail中 /var/log 放置登錄文件,日誌文件,特別重要 /var/run 放置系統啓動後產生的文件 ,比如有存儲有關PID的文件 和/run相同 鏈接過去 /var/spool 隊列數據, linux保證文件讀寫安全而創建的隊列文件,原理和同步隊列類似 |
/home | 系統默認的用戶主目錄(家),每個用戶都有一個屬於自己的home目錄 |
/root | 系統管理員(root)的主目錄(家), |
/proc | 這個是個虛擬文件系統,其內容是放置在內存中的,包括系統運行時的信息,網絡信息 |
/sys | 這個是個虛擬文件系統,其內容是放置在內存中的,包括系統核心和系統硬件執行的相關信息 |
現在的linux 已經將/etc /bin /dev /lib /sbin這5個重要的目錄中的重要文件 移動到 /usr中,因爲/usr是隻讀的,能一定程度上保證數據安全。