Linux-文件許可權

来源:https://www.cnblogs.com/yanjieli/archive/2018/08/27/9541636.html
-Advertisement-
Play Games

Linux文件許可權管理 基本許可權 UGO 文件許可權設置: 可以賦於某個用戶或組 能夠以何種方式 訪問某個文件 ==設置許可權 1. 更改文件是屬主、屬組 2. 更改許可權 設置許可權示例 針對hr部門的訪問目錄設置許可權,要求如下:1. root用戶和hr組的員工可以讀、寫、執行2. 其他用戶沒有任何許可權 ...


Linux文件許可權管理

基本許可權 UGO

文件許可權設置: 可以賦於某個用戶或組 能夠以何種方式 訪問某個文件

文件許可權管理之: UGO設置基本許可權(r、w、x)

rw-r--r-- alice hr install.log
許可權對象:
屬主:         u
屬組:         g
其他人:       o

許可權類型:
讀:r          4
寫:w         2
執行: x        1

==設置許可權

1. 更改文件是屬主、屬組

=chown:
[root@localhost ~]# chown alice.hr file1              //改屬主、屬組
[root@localhost ~]# chown alice     file1             //只改屬主
[root@localhost ~]# chown        .hr file1            //只改屬組
=chgrp:
[root@localhost ~]# chgrp it file1                    //改文件屬組
[root@localhost ~]# chgrp -R it dir1                  //改文件屬組

2. 更改許可權

=a. 使用符號
                    對象        賦值符        許可權類型
                    u                +                r
chmod             g                 -                w          file1
                    o                =                x
                    a
[root@localhost ~]# chmod u+x file1                 //屬主增加執行
[root@localhost ~]# chmod a=rwx file1               //所有人等於讀寫執行
[root@localhost ~]# chmod a=- file1                 //所有人沒有許可權
[root@localhost ~]# chmod ug=rw,o=r file1           //屬主屬組等於讀寫,其他人只讀
[root@localhost ~]# ll file1                        //以長模式方式查看文件許可權
-rw-rw-r-- 1 alice it 17 10-25 16:45 file1          //顯示的結果

=b. 使用數字
[root@localhost ~]# chmod 644 file1
[root@localhost ~]# ll file1
-rw-r--r-- 1 alice it 17 10-25 16:45 file1

===設置許可權示例

針對hr部門的訪問目錄設置許可權,要求如下:
1. root用戶和hr組的員工可以讀、寫、執行
2. 其他用戶沒有任何許可權

[root@localhost ~]# groupadd hr
[root@localhost ~]# useradd hr01 -G hr
[root@localhost ~]# useradd hr02 -G hr
[root@localhost ~]# mkdir /home/hr

[root@localhost ~]# chgrp hr /home/hr
[root@localhost ~]# chmod 770 /home/hr
[root@localhost ~]# ll -d /home/hr/
drwxrwx---. 2 root hr 4096 3月  13 14:26 /home/hr/

重要: r、w、x許可權對文件和目錄的意義

示例1: 對文件的影響

[root@localhost ~]# mkdir /dir10
[root@localhost ~]# touch /dir10/file1
[root@localhost ~]# chmod 777 /dir10/file1 

[root@localhost ~]# ll -d /dir10/
drwxr-xr-x. 2 root root 4096 3月  11 18:37 /dir10/
[root@localhost ~]# ll /dir10/file1 
-rwxrwxrwx. 1 root root 0 3月  11 18:37 /dir10/file1

[alice@tianyun ~]$ cat /dir10/file1 
[alice@tianyun ~]$ rm -rf /dir10/file1 
rm: 無法刪除"/dir10/file1": 許可權不夠

示例2: 對目錄有w許可權

[root@localhost ~]# chmod 777 /dir10/
[root@localhost ~]# chmod 000 /dir10/file1 
[root@localhost ~]# ll -d /dir10/
drwxrwxrwx. 2 root root 4096 3月  11 18:37 /dir10/
[root@localhost ~]# ll /dir10/file1 
----------. 1 root root 0 3月  11 18:37 /dir10/file1

[alice@tianyun ~]$ cat /dir10/file1 
cat: /dir10/file1: 許可權不夠
[alice@tianyun ~]$ rm -rf /dir10/file1 
[alice@tianyun ~]$ touch /dir10/file2

問題1:

[root@localhost ~]# ll /root/install.log
-rw-r--r--. 1 root root 46571 6月   1 23:37 /root/install.log
[alice@tianyun ~]$ cat /root/install.log
cat: /root/install.log: 許可權不夠

問題2: alice能刪除/下的任何文件嗎?

[root@localhost ~]# chmod 777 /
[root@localhost ~]# ll -d /
drwxrwxrwx. 27 root root 4096 6月   4 11:32 /
[alice@tianyun ~]$ rm -rf /etc

再次認識一下文件和目錄:

基本許可權 ACL

文件許可權管理之: ACL設置基本許可權(r、w、x)
UGO設置基本許可權: 只能一個用戶,一個組和其他人
ACL 設置基本許可權: r,w,x

=ACL基本用法=

設置:
[root@localhost ~]# touch /home/test.txt
[root@localhost ~]# ll /home/test.txt    
-rw-r--r-- 1 root root 0 10-26 13:59 /home/test.txt

[root@localhost ~]# getfacl /home/test.txt
[root@localhost ~]# setfacl -m u:alice:rw /home/test.txt              //增加用戶alice許可權
[root@localhost ~]# setfacl -m u:jack:- /home/test.txt                //增加用戶jack許可權
[root@localhost ~]# setfacl -m o::rw /home/test.txt

查看/刪除:
[root@localhost ~]# ll /home/test.txt 
-rw-rw-r--+ 1 root root 0 10-26 13:59 /home/test.txt
[root@localhost ~]# getfacl /home/test.txt

[root@localhost ~]# setfacl -m g:hr:r /home/test.txt
[root@localhost ~]# setfacl -x g:hr /home/test.txt                     //刪除組hr的acl許可權
[root@localhost ~]# setfacl -b /home/test.txt                          //刪除所有acl許可權

=查看幫助=

[root@localhost ~]# man setfacl
/EXAMPLES
[root@localhost ~]# getfacl file1 |setfacl  --set-file=- file2       //複製file1的ACL許可權給file2

=ACL高級用法=

mask:
用於臨時降低用戶或組(除屬主和其他人)的許可權
建議:為了方便管理文件許可權,其他人的許可權置為空
[root@localhost ~]# setfacl -m m::--- /home/file100.txt


default: 繼承(預設)
要求: 希望alice能夠對/home以及以後在/home下新建的文件有讀、寫、執行許可權

思路:
步驟一: 賦予alice對/home讀、寫、執行許可權
[root@localhost ~]# setfacl -m u:alice:rwx /home

步驟二: 賦予alice對以後在/home下新建的文件有讀、寫、執行許可權 (使alice的許可權繼承)
[root@localhost ~]# setfacl -m d:u:alice:rwx /home

高級許可權 suid,sgid,sticky

問題1: 為什麼會失敗!

[root@localhost ~]# ll /root/install.log
-rw-r--r--. 1 root root 46571 6月   1 23:37 /root/install.log
[alice@tianyun ~]$ cat /root/install.log
cat: /root/install.log: 許可權不夠

分析:
alice           /usr/bin/cat (alice)            /root/install.log
alice           /usr/bin/passwd (root)      /etc/shadow

高級許可權的類型
suid 4
sgid 2
sticky 1 粘滯位

設置特殊許可權
a、字元
chmod u+s file
chmod g+s file
chmod g+s dir
chmod o+t dir

b、數字
chmod 4777 file
chmod 7777 file
chmod 2770 dir
chmod 3770 dir

示例1:suid 普通用戶通過suid提權 <針對文件>

在進程文件(二進位,可執行)上增加suid許可權
[root@localhost ~]# chmod u+s /bin/cat
[root@localhost ~]# chmod u+s /bin/rm
[alice@tianyun ~]$ cat /root/install.log
普通用戶可以修改密碼:
alice           /usr/bin/passwd      /etc/shadow

[alice@tianyun ~]$ ll /etc/shadow
---------- 1 root root 1487 6月   4 13:43 /etc/shadow

[alice@tianyun ~]$ ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 2月  17 2012 /usr/bin/passwd

[alice@tianyun ~]$ passwd 
更改用戶 alice 的密碼 。
為 alice 更改 STRESS 密碼。
(當前)UNIX 密碼:

[root@localhost ~]# ps aux |grep passwd
root      3674  0.0  0.0 165764  1884 pts/1    S+   14:34   0:00 passwd

示例2:sticky 用戶只能刪除自己的文件 <針對目錄>

[root@localhost ~]# mkdir /home/dir1
[root@localhost ~]# chmod 777 /home/dir1
測試:user1在/home/dir1建立文件, user2嘗試刪除!

[root@localhost ~]# chmod o+t /home/dir1
[root@localhost ~]# ll -d /home/dir1
rwxrwxrwt 2 root root 4096 09-02 02:26 /home/dir1
誰可以刪除:
root
文件的所有者
目錄的所有者

示例3:sgid 新建文件繼承目錄屬組 <針對目錄>

[root@localhost ~]# mkdir /home/hr
[root@localhost ~]# chgrp hr /home/hr/
[root@localhost ~]# chmod g+s /home/hr
[root@localhost ~]# ll -d /home/hr/
drwxr-sr-x. 2 root hr 4096 Dec  5 16:03 /home/hr/

[root@localhost ~]# touch /home/hr/file9
[root@localhost ~]# ll /home/hr/
-rw-r--r--. 1 root hr   0 Dec  5 16:03 file9

=================================================================
小知識:註意以下目錄的正確許可權,否則會導致程式不能正常運行
[root@wangcy ~]# ll -d /tmp /var/tmp/
drwxrwxrwt 14 root root 4096 07-26 10:15 /tmp
drwxrwxrwt  2 root root 4096 07-24 19:02 /var/tmp/
=================================================================
                文件                                                 目錄
suid      執行的時候以所有者身份執行

sqid                                                                繼承屬組 

sticky                                                              用戶只能刪除自己的文件

進程掩碼 mask umask

mask;
用於臨時降低用戶或組(除屬主和其他人)的許可權
mask決定了他們的最高許可權
建議:為了方便文件管理,其他人的許可權置為空

文件許可權管理之: 進程umask

進程 新建文件、目錄的預設許可權會受到umask的影響,umask表示要減掉的許可權

shell (vim,touch)      =======umask======>    新文件或目錄許可權
vsftpd                  =======umask======>    新文件或目錄許可權 
samba                   =======umask======>    新文件或目錄許可權 
useradd                 =======umask======>    用戶HOME

示例1: 在shell進程中創建文件

[root@localhost ~]# umask                                     //查看當前用戶的umask許可權
0022
[root@localhost ~]# touch file800
[root@localhost ~]# mkdir dir800
[root@localhost ~]# ll -d dir800 file800 
drwxr-xr-x. 2 root root 4096 3月  11 19:40 dir800
-rw-r--r--. 1 root root    0 3月  11 19:40 file800

示例2:修改shell umask值(臨時)

[root@localhost ~]# umask 000
[root@localhost ~]# mkdir dir900
[root@localhost ~]# touch file900
[root@localhost ~]# ll -d dir900 file900 
drwxrwxrwx. 2 root root 4096 3月  11 19:44 dir900
-rw-rw-rw-. 1 root root    0 3月  11 19:44 file900

示例3:修改shell umask值(永久)

[root@localhost ~]# vim /etc/profile   
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
    umask 002
else
    umask 022
fi
[root@localhost ~]# source /etc/profile       //立即在當前shell中生效

示例4:通過umask決定新建用戶HOME目錄的許可權

[root@localhost ~]# vim /etc/login.defs 
UMASK           077
[root@localhost ~]# useradd gougou
[root@localhost ~]# ll -d /home/gougou/
drwx------. 4 gougou gougou 4096 3月  11 19:50 /home/gougou/

[root@localhost ~]# vim /etc/login.defs
UMASK           000
[root@localhost ~]# useradd yangyang
[root@localhost ~]# ll -d /home/yangyang/
drwxrwxrwx. 4 yangyang yangyang 4096 3月  11 19:53 /home/yangyang/

文件屬性 chattr

文件許可權管理之: 文件屬性
註:設置文件屬性(許可權),針對所有用戶,包括root

[root@localhost ~]# touch file100 file200 file300
[root@localhost ~]# lsattr file100 file200 file300 
-------------e- file100
-------------e- file200
-------------e- file300

[root@localhost ~]# man chattr
[root@localhost ~]# chattr +a file100 
[root@localhost ~]# chattr +i file200 
[root@localhost ~]# chattr +A file300

[root@localhost ~]# lsattr file100 file200 file300 
-----a-------e- file100
----i--------e- file200
-------A-----e- file300

[root@localhost ~]# echo 111 > file100                    //以覆蓋的方式寫入
bash: file100: Operation not permitted
[root@localhost ~]# rm -rf file100 
rm: cannot remove `file100': Operation not permitted
[root@localhost ~]# echo 111 >> file100                  //以追加的方式寫入,例如日誌文件

[root@localhost ~]# echo 111 > file200
bash: file200: Permission denied
[root@instructor ~]# echo 111 >> file200
bash: file200: Permission denied
[root@localhost ~]# rm -rf file200 
rm: cannot remove `file200': Operation not permitted

[root@localhost ~]# chattr -a file100
[root@localhost ~]# chattr -i file200
[root@localhost ~]# chattr -A file300

 


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

-Advertisement-
Play Games
更多相關文章
  •     xargs是execute arguments的縮寫,主要作用是 從標準輸入中讀取內容,並將此內容傳遞給它要協助的命令,並作為要協助命令的參數來執行 。 基本語法 其常用選項如下: | 選項 | 說明 | | | | | null , 0 | 允許將NULL作為分隔符 | ...
  • nginx的安裝 官方:http://nginx.org/packages/centos/7/x86_64/RPMS Fedora-EPEL:https://mirrors.aliyun.com/epel/7/x86_64/ 編譯安裝: 1 yum install pcre-devel openss... ...
  • 1. 首先刪除redhat原有的yum rpm -aq | grep yum | xargs rpm -e --nodeps rpm -aq | grep yum | xargs rpm -e --nodeps rpm -aq | grep python-iniparse | xargs rpm - ...
  • #!/bin/bash#Back up the entire tomcat8080-dist to the /backup directorybackuppath=/mnt/tomcat8080-dist/webapps/backpath=/backup/backup-tomcat8080-dist ...
  • 1. 宿主機環境(dell備份伺服器) Ubuntu 14.04 LTS 64位 記憶體:16G 硬碟:2T 2. 確認CPU是否支持硬體虛擬化 root@shwilling:~# egrep -o '(vmx | svm)' /proc/cpuinfo vmx vmx 如果有結果顯示就OK 2. 安 ...
  • 一、選擇nodejs版本 1.nodejs官網查詢當前最新的發佈版本,選擇你需要下載的版本:https://nodejs.org/dist/ 2.我選擇的版本是LTS(長期支持版本)最新版:node-v8.11.4-linux-x64.tar.gz 二、安裝 選擇下載目錄:# cd /usr/loc ...
  • 指定api_url,需要在釘釘群主中添加機器人,然後將Webhook地址複製過來 如果想指定@某人的話,格式為: 其次,在zabbix設置報警媒介時,需要添加這麼一個參數 {ALERT.MESSAGE} ...
  • 在工作學習中我們經常會遇到體積大、頁數多的PDF文件,一般情況下我們所需要的關鍵文檔也就其中幾頁,傳輸、展示和查看文件時,沒有必要用到一整個文檔,所以我們要將PDF進行拆分,提取關鍵幾頁文檔。這時候,有小伙伴第一時間就去度娘一下相關的軟體,下載安裝好幾種試過去;其實根本不用這個麻煩,小編這邊有一種在 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...