Linux命令(shell)從入門到精通 學(xué)習(xí)筆記之1 文件安全與權(quán)限

1.ls -l 命令:
最前面的一位表示文件類型:
d 目錄。
l 符號鏈接(指向另一個文件)。
s 套接字文件。
b 塊設(shè)備文件。
c 字符設(shè)備文件。
p 命名管道文件。
- 普通文件,或者更準(zhǔn)確地說,不屬于以上幾種類型的文件。
后面的連續(xù)九位,表示文件的讀寫權(quán)限:
r w x:文件屬主權(quán)限 這是前面三位
r - x:同組用戶權(quán)限 這是中間三位
r - x:其他用戶權(quán)限 這是最后三位
2. 新創(chuàng)建文件(夾)的權(quán)限
目錄:
可以看到,新創(chuàng)建的目錄 myshell 的權(quán)限是:rwx r-x r-x, 即:
onwer 用戶具有 read、write、execute 權(quán)限,group 和其他用戶具有 read、execute權(quán)限。
文件:
可以看到,新創(chuàng)建的文件 myfile 的權(quán)限是:rw- r-- r--。
文件在新創(chuàng)建的狀態(tài)下,不會被賦予執(zhí)行的權(quán)限,這是出于安全性的考慮。
文件權(quán)限修改:
# chmod 777 myfile // 為所有用戶賦予了該文件的所有權(quán)限。
# chmod a-x myfile // 回收所有用戶的執(zhí)行權(quán)限(注意 a-x,-x 前面沒有空格)。
# chmod u+x,go-w myfile // 賦予文件屬主執(zhí)行權(quán)限,同時回收其他用戶的寫權(quán)限
3. chmod 命令兩種模式:符號模式和絕對模式
符號模式:
# u: 文件屬主
# g: 同組用戶
# o: 其他用戶
# a: 所有用戶
+ 增加權(quán)限
- 回收權(quán)限
如:
chmod a-x myfile // 剝奪所有用戶的文件執(zhí)行權(quán)限
chmod og-w myfile
chmod g+w myfile
chmod u+x myfile
chmod go+x myf
chmod u+x,o-w myfile
絕對模式:
004 可讀
002 可寫
001 可執(zhí)行
000 沒有權(quán)限
chmod 750 myfile
對文件myfile增加權(quán)限:
7 = 4 + 2 + 1 (屬主可讀、寫、執(zhí)行)
5 = 4 + 1 (同組用戶可讀、執(zhí)行)
0 = 0 (其他用戶沒有任何權(quán)限)
如果對一個目錄執(zhí)行:
chmod 740 *
表示對該目錄下的所有文件賦予740權(quán)限,但以后新增的目錄,權(quán)限仍是默認的 rw- r-- r--
4. 目錄的權(quán)限
對目錄而言,意味著:
讀權(quán)限:可以列出該目錄中的文件
寫權(quán)限:可以在該目錄中創(chuàng)建或刪除文件
執(zhí)行權(quán)限:可以搜索或進入該目錄
目錄的權(quán)限將會覆蓋該目錄中文件的權(quán)限。例如,如果目錄 docs 具有如下的權(quán)限:
而其中的文件 pay 的權(quán)限為:
那么 admin 組的用戶將無法編輯該文件,因為它所屬的目錄不具有這樣的權(quán)限。
該文件對任何用戶都可讀,但由于它所在的目錄并未給 admin 組的用戶賦予執(zhí)行權(quán)限,所以該組的用戶都將無法訪問該目錄,他們將會得到“訪問受限”的錯誤消息。
5.suid 和 guid(了解)
suid 意味著如果某個用戶對屬于自己的 shell 腳本設(shè)置了這種權(quán)限,那么其他用戶在執(zhí)行這一腳本時也會具有其屬主的相應(yīng)權(quán)限。
如文件 myfile 具有 741 的權(quán)限,要對其設(shè)置suid,只需在其權(quán)限數(shù)字前加 4 (guid 是加 2,兩個都設(shè)置就是 4+2=6),
6. /etc/passwd 文件
該文件中列出了系統(tǒng)合法的用戶相關(guān)信息。
7. chown 和 chgrp
chown:文件的所有者和管理員能用這一命令改變文件的所有權(quán),改變之后,原來的所有者,就不能回收他的權(quán)限了,如果真要回收,必須求助與管理員。
如:
將 myfile 的所有者,從root變更為用戶 zhy (zhy 必須是在 /etc/passwd 中合法的)。
chgrp:改變文件所屬的組。
如:
將 myfile 所屬的組,從 root 改成了 zhy 組。
(
# groups
查看當(dāng)前登錄用戶所在的組內(nèi)所有的成員。
# id
查看當(dāng)前登錄用戶的信息
# whoami
查看系統(tǒng)當(dāng)前是被哪個用戶登錄的。
# groups zhy
查看zhy用戶所在的組,以及組內(nèi)成員。
用戶組的特性在系統(tǒng)管理中為系統(tǒng)管理員提供了極大的方便,但安全性也是值得關(guān)注的,如某個用戶下有對系統(tǒng)管理有最重要的內(nèi)容,最好讓用戶擁有獨立的用戶組,或者是把用戶下的文件的權(quán)限設(shè)置為完全私有;另外root用戶組一般不要輕易把普通用戶加入進去。
8.umask命令
一個用戶登錄到系統(tǒng)之后,他所創(chuàng)建的文件有一個缺省的權(quán)限,這個權(quán)限可以由管理員配置,也可以由用戶登錄之后用 umask 命令自己配置,這種配置在退出該 shell 或使用另外的 umask 命令之前一直有效。
一般來說, umask 命令是在 /etc/profile 文件中設(shè)置的,每個用戶在登錄時都會引用這個文件,所以如果希望改變所有用戶的 umask ,可以在該文件中加入相應(yīng)的條目。如果希望永久性地設(shè)置自己的 umask 值,那么就把它放在自己 $home 目錄下的 .profile或 .bash_profile 文件中。
umask 值與權(quán)位:
通過:
# umask
命令查看當(dāng)前 umask 值(后三位):
可以看到,當(dāng)前 umaks 值為022,通過上面的表,就可以知道,umask 對應(yīng)的文件權(quán)限是 644,目錄權(quán)限是 755。
如果沒有上面的表,還有另外一種計算方法:
777: rwx rwx rwx
022: --- -w- -w-
取上面兩行中沒有匹配的位就是目錄的權(quán)限:
rwx r-x r-x
換成值就是:755(目錄權(quán)限)
再將上面算出的結(jié)果(rwx r-x r-x)中為 x 的位換成 - ,就是文件的權(quán)限:
rw- r-- r--
換成值就是:644(文件權(quán)限)
如果希望改變系統(tǒng)的 umask 值,可以這樣:
# umask 007
例:
可以看到,文件的權(quán)限確實被改變了。
9. 符號鏈接
是一個指向文件的指針,在我理解就是 window 下的快捷方式:
.profile 就是 /usr/local/menus/sales.profile 的快捷方式了,這樣很方便,比如我們有多個用戶,比如 50 個,可以為他們分別創(chuàng)建一個.profile 文件,都指向這同一個 sales.profile 文件,以后我們修改一個 sales.profile 就可以了,不用對每個用戶的 .profile 做修改。
創(chuàng)建符號鏈接的命令格式:
# ln [-s] source_path target_path
source_path 是要指向的文件
target_path 就是指針(快捷方式)
例:
# ln -s /usr/opt/monitor/regstar/reg.log /var/adm/logs/monitor.log
在新安裝的系統(tǒng)上,通常要進行這樣的操作,在/var 目錄中創(chuàng)建一個指向/tmp目錄的鏈接,因為有些應(yīng)用程序認為存在 /var/tmp 目錄(然而它實際上并不存在),有些應(yīng)用程序在該目錄中保存一些臨時文件。為了使所有的臨時文件都放在一個地方,可以使用 ln 命令在 /var目錄下建立一個指向 /tmp 目錄的鏈接:
# ln -s /tmp /var/tmp
以后,如果有應(yīng)用程序試圖將一些臨時文件放在 /var/tmp 下,實際上它是被存放在了 /tmp 目錄下了,因為 /var/tmp 只是一個符號鏈接而已。
相關(guān)文章
Fedora Linux 42 穩(wěn)定版發(fā)布: 帶來大量新功能和軟件更新
Fedora 42昨日發(fā)布,這是 Red Hat 贊助開發(fā)的杰出前沿 Linux 發(fā)行版的最新版,包含大量新功能和軟件更新,使其成為 2025 年上半年發(fā)布的一款出色的 Linux 操作系統(tǒng)之一,內(nèi)2025-04-16如何在Linux查看硬盤信息? 查看Linux硬盤大小類型和硬件信息的5種方法
使用Linux系統(tǒng)的過程中,查看和了解硬盤信息是非常重要的工作,尤其是對于系統(tǒng)管理員而言,那么在Linux系統(tǒng)中如何查看硬盤信息?以下是具體內(nèi)容介紹2025-03-12如何在 Linux 中查看 CPU 詳細信息? 3招輕松查看CPU型號、核心數(shù)和溫度
在日常運維工作中,獲取 CPU 信息是系統(tǒng)運維管理員常見的工作內(nèi)容,無論是為了性能調(diào)優(yōu)、硬件升級還是僅僅滿足好奇心2025-03-11什么是 Arch Linux? 獨樹一幟的Arch Linux發(fā)行版分析
Arch Linux是為簡化,優(yōu)化,現(xiàn)代化,實用主義,用戶中心和多功能性而創(chuàng)建Linux發(fā)行版,究竟是什么讓 Arch 與眾不同?下面我們就來簡要解讀2025-02-19如何在Linux環(huán)境下制作 Win11裝機U盤?
一直用的linux辦公,想要將筆記本電腦從 Linux 系統(tǒng)切換回 Windows 11,我們可以制作一個win11裝機u盤,詳細如下2025-02-17Rsnapshot怎么用? 基于Rsync的強大Linux備份工具使用指南
Rsnapshot 不僅可以備份本地文件,還能通過 SSH 備份遠程文件,接下來詳細介紹如何安裝、配置和使用 Rsnapshot,包括創(chuàng)建每小時、每天、每周和每月的本地備份,以及如何進2025-02-06Linux Kernel 6.13發(fā)布:附更新內(nèi)容及新特性解讀
Linux 內(nèi)核 6.13 正式發(fā)布,新版本引入了惰性搶占支持,簡化內(nèi)核搶占邏輯,通過減少與調(diào)度器相關(guān)的調(diào)用次數(shù),讓內(nèi)核在運行時表現(xiàn)更優(yōu),從而提高效率2025-01-23五大特性引領(lǐng)創(chuàng)新! 深度操作系統(tǒng) deepin 25 Preview預(yù)覽版發(fā)布
今日,深度操作系統(tǒng)正式推出deepin 25 Preview版本,該版本集成了五大核心特性:磐石系統(tǒng)、全新DDE、Treeland窗口合成器、AI For OS以及Distrobox子系統(tǒng)2025-01-18Linux Mint Xia 22.1重磅發(fā)布: 重要更新一覽
Beta 版 Linux Mint“Xia” 22.1 發(fā)布,新版本基于 Ubuntu 24.04,內(nèi)核版本為 Linux 6.8,這次更新帶來了諸多優(yōu)化和改進,進一步鞏固了 Mint 在 Linux 桌面操作系統(tǒng)領(lǐng)域的2025-01-16LinuxMint怎么安裝? Linux Mint22下載安裝圖文教程
Linux Mint22發(fā)布以后,有很多新功能,很多朋友想要下載并安裝,該怎么操作呢?下面我們就來看看詳細安裝指南2025-01-16