Linux基礎介紹【第五篇】

来源:http://www.cnblogs.com/yinshoucheng-golden/archive/2016/12/27/6225856.html
-Advertisement-
Play Games

linux許可權位 Linux文件或目錄的許可權位是由9個許可權位來控制,每三位為一組,它們分別是文件屬主許可權、屬組許可權、其他用戶許可權。 r:read可讀許可權,對應數字4; w:write可寫許可權,對應數字2; x:execute執行許可權,對應數字1; -:沒有任何許可權,對應數字0。 #創建一個用戶組 [... ...


linux許可權位

Linux文件或目錄的許可權位是由9個許可權位來控制,每三位為一組,它們分別是文件屬主許可權、屬組許可權、其他用戶許可權。

r:read可讀許可權,對應數字4;

w:write可寫許可權,對應數字2;

x:execute執行許可權,對應數字1;

-:沒有任何許可權,對應數字0。

  1. #創建一個用戶組
  2. [root@oldboy ~]# groupadd incahome
  3. #創建一個用戶指定所屬用戶組
  4. [root@oldboy ~]# useradd -g incahome oldboy
  5. [root@oldboy ~]# useradd -g incahome oldgirl
  6. #創建一個用戶
  7. [root@oldboy ~]# useradd test
  8. #查看用戶
  9. [root@oldboy ~]# id oldboy
  10. uid=502(oldboy) gid=502(incahome) groups=502(incahome)
  11. [root@oldboy ~]# id oldgirl
  12. uid=503(oldgirl) gid=502(incahome) groups=502(incahome)
  13. [root@oldboy ~]# id test
  14. uid=504(test) gid=504(test) groups=504(test)

創建一個test.sh,內容:echo "i am oldboy linux"。查看屬性:

  1. [root@oldboy oldboy]# ls test.sh -l
  2. -rw-r--r-- 1 root root 25 Dec 25 21:10 test.sh

一個家庭(用戶組)incahome,成員oldboy、oldgirl,非家庭用戶test,超級用戶root。

修改文件許可權

  1. [root@oldboy oldboy]# chown oldboy.incahome test.sh
  2. [root@oldboy oldboy]# ls -l test.sh
  3. -rw-r--r-- 1 oldboy incahome 25 Dec 25 21:10 test.sh

分別測試不同用戶對該文件的許可權。

linux普通文件的讀寫執行許可權說明:

可讀r:表示具有讀取、閱讀文件內容的許可權。

可寫w:表示具有新增、修改文件內容的許可權(如果沒有r,那麼vi無法編輯,強制編輯會覆蓋數據,echo可以寫入)

可執行x:表示具有執行文件的許可權(1、文件本身要能夠執行;2、普通用戶同時具備r許可權才能執行;3、root都能執行)。

特別提示:刪除文件(修改文件名等)的許可權是受父目錄的許可權控制,和文件本身的許可權無關。

win下可執行文件:*.exe、*.bat、*.com

linux下可執行文件:*.sh、*.py、*.perl等

有關文件刪除說明

linux中的文件名是存在於父目錄的block裡面,並指向這個文件的inode節點,這個文件的inode節點再標記指向存放這個文件的block的數據塊。我們刪除文件並不清除inode節點和block的數據。只是在這個文件的父目錄裡面的block中刪除這個文件的名字,從而使這個文件名消失,並且無法指定這個文件的inode節點,當沒有文件名指向這個inode節點的時候會同時釋放inode節點和存放這個文件的數據塊,並更新inodeMAP和blockMAP,讓這些位置用於放置其他文件數據。

linux目錄的讀寫執行許可權說明:

可讀r:表示具有瀏覽目錄下麵文件及子目錄的許可權,即ls dir。不能進到目錄里,即無法cd dir。如果沒有x許可權,ls列表時可以看到所有文件名。但是會提示無權訪問目錄下的文件。如果ls -l列表,所有的屬性會帶有問號,也會提示無權訪問目錄下文件,但是可以看到所有文件名。

可寫w:表示具有增加、刪除或修改目錄內文件名的許可權(需要x許可權配合)。

可執行x:表示進入目錄的許可權,例如cd dir。但是沒有r無法列表,沒有w無法新建和刪除。

linux文件與目錄許可權對比說明:

r(read,讀取許可權):

對文件表示具有讀取閱讀文件內容的許可權。

對目錄表示具有瀏覽目錄下麵文件及子目錄的許可權,即ls dir。

w(write,寫入許可權):

對文件表示具有新增、修改文件內容的許可權。

對目錄表示具有新增、刪除、移動目錄內文件名的許可權。

x(execute,執行許可權):

對文件表示具有執行文件的許可權。

對目錄表示具有進入目錄的許可權。

-(無任何許可權):

若對應位置許可權位為字元"-",表示對應用戶沒有讀寫執行的任何許可權。

chmod修改文件許可權

chmod:change mode改變文件許可權

chmod數字式許可權表示法

chmod [數字組合] 文件名

chmod的數字方法的說明:

r:4;w:2;x:1:;-:0。

rwxr-xr-x:755

  1. [root@oldboy oldboy]# chmod 531 test.sh
  2. [root@oldboy oldboy]# ls -l test.sh
  3. -r-x-wx--x 1 oldboy incahome 25 Dec 25 21:10 test.sh

chmod字元式許可權表示法

使用許可權字元設置許可權的命令格式如下。

chmod [用戶類型] [+|-|=] [許可權字元] 文件名,用表格表示如下:

chmod

用戶類型

操作字元

許可權字元

文件或目錄

u(user)

+(加入)

r

g(group)

 

-

o(others)

-(減去)

w

a(all)

=(設置)

x

rw-rw-r-xàrwx--xr-x:chmod u+x,g=x test.sh

  1. [root@oldboy oldboy]# ls -l test.sh
  2. -r-x-wx--x 1 oldboy incahome 25 Dec 25 21:10 test.sh
  3. [root@oldboy oldboy]# chmod u+w,g=rw,o+r test.sh
  4. [root@oldboy oldboy]# ls -l test.sh
  5. -rwxrw-r-x 1 oldboy incahome 25 Dec 25 21:10 test.sh
  6. [root@oldboy oldboy]# chmod u+x,g=x test.sh
  7. [root@oldboy oldboy]# ls -l test.sh
  8. -rwx--xr-x 1 oldboy incahome 25 Dec 25 21:10 test.sh

預設許可權分配的命令umask

  1. [root@oldboy oldboy]# mkdir d755
  2. [root@oldboy oldboy]# touch f644
  3. [root@oldboy oldboy]# ls -lrt
  4. drwxr-xr-x 2 root root 4096 Dec 26 09:15 d755
  5. -rw-r--r-- 1 root root 0 Dec 26 09:15 f644

umask預設值

  1. [root@oldboy oldboy]# umask
  2. 0022

umask的預設值的控制

  1. [root@oldboy oldboy]# sed -n '65,69p' /etc/bashrc
  2.     if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
  3.        umask 002
  4.     else
  5.        umask 022
  6.     fi

根據umask值計算文件許可權

創建文件預設最大許可權為:666-umask,當umask有奇數時,計算許可權需要在奇數位加1。

創建目錄預設最大許可權位:777-umask。

setuid和setgid

setuid介紹

  1. [root@oldboy oldboy]# ls -l `which passwd`
  2. -rwsr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd

setuid使用戶執行該命令的時候臨時獲得屬主用戶的許可權

setuid小結:針對命令和二進位程式

1、用戶或屬主對應的前三位許可權的x位上如果有s就表示setuid許可權。當x位上沒有小寫x執行許可權的時候,setuid的許可權就顯示大寫S;當x位上有x執行許可權的時候,setuid的許可權就顯示小寫s。

2、setuid作業是讓普通用戶可以以root(或其他)的用戶角色運行只有root(或其他)賬號才能運行的程式或命令,或程式命令對應本來沒有許可權操作的文件等。

註意和su及sudo的區別,setuid為某一個命令設置特殊許可權(使用者為所有人)。

3、問題,希望oldboy用戶能夠刪除本來無權刪除的文件。

a、sudo給oldboy授權rm。b、給rm命令設置setuid。c、設置上級目錄許可權。

4、setuid修改的是執行的命令passwd,而不是處理目標文件/etc/shadow。

5、僅對二進位命令程式有效,不能用在shell等類似腳本文件上(因為shell腳本僅僅是調用二進位命令程式而已,因此,具體許可權還需要看二進位命令本身)。

6、二進位命令程式需要有可執行許可權x配合。

7、setuid許可權僅在程式命令執行過程中有效。

8、執行setuid命令的任意系統用戶都可以獲得命令程式在執行期間對應的擁有者的所有許可權。

9、setuid是一把雙刃劍,是一個比較危險的功能,對系統安全有一定的威脅。系統setuid的無用的功能取消setuid權利(安全優化)。

setgid介紹

1、與setuid不同的是,setgid既可以針對文件也可以針對目錄設置。

2、setgid是針對用戶組許可權位修改的。

對於文件來說,setgid的功能如下:

1)、setgid僅對二進位命令程式有效。

2)、二進位命令或程式需要有可執行許可權x。

3)、執行程式的任意用戶可以獲得該命令程式執行期間所屬組的許可權。

對於目錄setgid的功能如下:

1)、linux里預設情況所有用戶創建文件,預設用戶和組都是自身。

2)、setgid可以讓用戶在此目錄下創建的文件和目錄具有和此目錄相同的用戶組設置。

setgid位主要用於在目錄中,當為某個目錄設置了setgid位以後,在該目錄中新創建的文件的所有者許可權,而不是創建該文件的用戶的預設所有者。這樣,使得在多個用戶之間共用一個文件變得簡單。

locate查找命令

案例:

創建共用目錄/home/admins,屬組為adminuser,adminuser組成員對目錄有寫入讀寫和執行的許可權,其他所有用戶沒有任何許可權(root除外),在/home/admins目錄中創建的文件會自動繼承adminuser組。

  1. [root@oldboy oldboy]# mkdir /home/admins -p
  2. [root@oldboy home]# groupadd adminuser
  3. [root@oldboy home]# ls -ld admins/
  4. drwxr-xr-x 2 root root 4096 Dec 26 15:29 admins/
  5. [root@oldboy home]# chgrp adminuser admins/
  6. [root@oldboy home]# ls -ld admins/
  7. drwxr-xr-x 2 root adminuser 4096 Dec 26 15:29 admins/
  8. [root@oldboy home]# touch admins/test.txt
  9. [root@oldboy home]# ls -l admins/test.txt
  10. -rw-r--r-- 1 root root 0 Dec 26 15:36 admins/test.txt
  11. [root@oldboy home]# chmod g+s admins/
  12. [root@oldboy home]# ls -ld admins/
  13. drwxr-sr-x 2 root adminuser 4096 Dec 26 15:36 admins/
  14. [root@oldboy home]# touch admins/test_2.txt
  15. [root@oldboy home]# ls -l admins/
  16. total 0
  17. -rw-r--r-- 1 root adminuser 0 Dec 26 15:39 test_2.txt
  18. -rw-r--r-- 1 root root 0 Dec 26 15:36 test.txt

粘滯位sticky bit(sbit)及設置方法

用途一般是把一個文件夾的許可權都打開,然後來共用文件,例如/tmp目錄一樣。使用方便但是帶來安全隱患,生產環境一般不這樣使用。

sticky比setgid的更安全措施,讓多個用戶具有寫許可權的目錄,每個用戶只能刪除自己的文件。sticky在other位,用t表示,如果沒有執行許可權,那麼就是T表示;如果有執行許可權,那麼就是t表示。

特殊許可權對應的數字小結

setuid 4000 許可權字元s(S),用戶位上的x位上設置。授權方法chmod 4755 oldboy.txt。

setgid 2000 許可權字元s(S),用戶組位的x位上設置。授權方法chmod 2755 oldboy.txt。

粘滯位 1000 許可權字元t(T),其他用戶位的x位上設置。授權方法chmod 1755 /tmp。

如果對應位有x則字元許可權表現為小寫,否則表現為大寫。

推薦設置方法:

chmod g+s test

chmod u+s test

chmod o+t test

chown和chgrp

 

chown 用戶 文件或目錄 à僅僅授權用戶

chown :組 文件或目錄 à僅僅授權組。等同於"chgrp 組 文件或目錄"。

chown 用戶:組 文件或目錄 à表示授權用戶和組

註意:

1、其中的冒號":"可以用點號"."替代。

2、要授權的用戶和組名,必須是linux系統里實際存在的。

文件的屬主和用戶組的特殊情況

  1. [root@oldboy oldboy]# ll
  2. total 12
  3. drwxr-xr-x 2 root root 4096 Dec 26 09:15 d755
  4. -rw-r--r-- 1 root root 0 Dec 26 09:15 f644
  5. drwxr-xr-x 2 root root 4096 Dec 25 23:04 test
  6. --wx--x--x 1 root root 25 Dec 25 21:10 test.sh
  7. [root@oldboy oldboy]# groupadd incahome
  8. [root@oldboy oldboy]# useradd -g incahome oldboy
  9. [root@oldboy oldboy]# chown oldboy:incahome *
  10. [root@oldboy oldboy]# ll
  11. total 12
  12. drwxr-xr-x 2 oldboy incahome 4096 Dec 26 09:15 d755
  13. -rw-r--r-- 1 oldboy incahome 0 Dec 26 09:15 f644
  14. drwxr-xr-x 2 oldboy incahome 4096 Dec 25 23:04 test
  15. --wx--x--x 1 oldboy incahome 25 Dec 25 21:10 test.sh
  16. [root@oldboy oldboy]# userdel -r oldboy
  17. [root@oldboy oldboy]# ll
  18. total 12
  19. drwxr-xr-x 2 505 incahome 4096 Dec 26 09:15 d755
  20. -rw-r--r-- 1 505 incahome 0 Dec 26 09:15 f644
  21. drwxr-xr-x 2 505 incahome 4096 Dec 25 23:04 test
  22. --wx--x--x 1 505 incahome 25 Dec 25 21:10 test.sh
  23. [root@oldboy oldboy]# groupdel incahome
  24. [root@oldboy oldboy]# ll
  25. total 12
  26. drwxr-xr-x 2 505 506 4096 Dec 26 09:15 d755
  27. -rw-r--r-- 1 505 506 0 Dec 26 09:15 f644
  28. drwxr-xr-x 2 505 506 4096 Dec 25 23:04 test
  29. --wx--x--x 1 505 506 25 Dec 25 21:10 test.sh

文件的所屬用戶和屬組變成數字,解決辦法創建一個相同uid的用戶和相同gid的屬組,如果有服務還需要確保創建的用戶名與服務配置的用戶名一致並且對應uid。

  1. [root@oldboy oldboy]# groupadd incahome -g 506
  2. [root@oldboy oldboy]# ll
  3. total 12
  4. drwxr-xr-x 2 505 incahome 4096 Dec 26 09:15 d755
  5. -rw-r--r-- 1 505 incahome 0 Dec 26 09:15 f644
  6. drwxr-xr-x 2 505 incahome 4096 Dec 25 23:04 test
  7. --wx--x--x 1 505 incahome 25 Dec 25 21:10 test.sh
  8. [root@oldboy oldboy]# useradd oldgirl -u 505 -g incahome
  9. [root@oldboy oldboy]# ll
  10. total 12
  11. drwxr-xr-x 2 oldgirl incahome 4096 Dec 26 09:15 d755
  12. -rw-r--r-- 1 oldgirl incahome 0 Dec 26 09:15 f644
  13. drwxr-xr-x 2 oldgirl incahome 4096 Dec 25 23:04 test
  14. --wx--x--x 1 oldgirl incahome 25 Dec 25 21:10 test.sh

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文列舉了史上八大MySQL宕機事件原因、影響以及人們從中學到的經驗,文中用地震級數來類比宕機事件的嚴重性和後果,排在最嚴重層級前兩位的是由於亞馬遜AWS宕機故障(相當於地震十級和九級)。一、Percona網站宕機事件震級:3 發生時長:2011年7月11日 持續時長:數日 地點:加州Pleasan ...
  • 最近使用SQL*Plus命令生成html文件,遇到一些有意思的知識點,順便記錄一下,方便以後需要的時候而這些知識點又忘記而捉急。好記性不如爛筆頭嗎! 為什麼要用SQL*Plus生成html文件? 有些人肯定會問,我使用SQL*Plus為什麼要生成html文件呢? SQL*Plus本身就是一個命令工具... ...
  • Redis緩存伺服器是一款key/value資料庫,讀110000次/s,寫81000次/s,因為是記憶體操作所以速度飛快,常見用法是存用戶token、簡訊驗證碼等 官網顯示Redis本身並沒有Windows版本的,微軟官方開發了基於Windows的Redis伺服器:MSOpenTech/redis ...
  • 觸發器在之前的項目中, 應用的著實不多, 沒有辦法的時候, 才會去用這個. 因為這個東西在後期並不怎麼好維護, 也容易造成紊亂. 我最近的項目中, 由於資料庫設計(別人設計的)原因, 導致一些最簡單功能, 查詢起來, 都很麻煩和複雜. 牽涉表非常多, 表與表之間又互有部分關係. 我想說, 這是我見過 ...
  • 比如有一個表,我們需要些一個語句像SELECT OtherID, SplitData WHERE SomeID = 'abcdef-.......' , 然後就能返回分割成單獨的行。 原表: | SomeID | OtherID | Data + + + | abcdef-..... | cdef1 ...
  • 第六節 Linux系統基礎優化 標簽(空格分隔):Linux實戰教學筆記 陳思齊 第1章 基礎環境 ![QQ20161227 [email protected] 60.5kB][1] 第2章 使用網易163鏡像做yum源 預設國外的yum源速度很慢,所以換成國內的。 第一步:先備份 mkdir backup ...
  • 我們在 "Linux設備管理(一)_kobject, kset,ktype分析" 一文中介紹了kobject的相關知識,在 "Linux設備管理(二)_從cdev_add說起" 和 "Linux設備管理(三)_匯流排設備的掛接" 舉例介紹了內核中是如何進行設備管理的,併在 "Linux設備管理(四)_ ...
  • 本人在官網下的是這個 CentOS-7-x86_64-DVD-1611.iso ,然後用UltraISO 9.6製作的U盤啟動盤,不過在安裝的時候出現了這個錯誤, 然後也是搜了好久,試了一下,下麵這個方法,是正確可行的.在最後我會解釋原因 第一步: 製作完成之後,將U盤的標簽名字改掉,隨便改成什麼, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...