8 權限管理

8.1 ACL權限

8.1.1 簡介與開啟

用于解決身份不夠用的問題

ACL(access control list)??訪問控制表?

ACL是存在于計算機中的一張表,它使操作系統明白每個用戶對特定系統對象,例如文件目錄或單個文件的存取權限。

這張表對于每個系統用戶有擁有一個訪問權限。

最一般的訪問權限包括讀文件(包括所有目錄中的文件),寫一個或多個文件和執行一個文件(如果它是一個可執行文件或者是程序的時候)。

?

ACL權限是對分區而言的。

查看分區ACL權限是否開啟

1、查看分區情況 ?report file system disk space usage

df -h ?

2、查看分區是否開啟ACL權限

dumpe2fs -h /dev/sda3 ???????dump ext2/ext3/ext4 filesystem information

#dumpe2fs命令是查詢指定分區詳細文件系統的命令

-h ?僅顯示超級塊中信息,而不顯示磁盤塊組的詳細信息

3Default mount options: ???user_xattr acl

分區默認開啟ACL權限

?

臨時開啟分區ACL權限

mount -o remount,acl /

#重新掛載根分區,并掛載加入acl權限

?

永久開啟分區ACL權限 分兩步

1vi /etc/fstab ??#系統的開機自動掛載文件

UUID=ec77....af ?/ ?ext4 ?defaults,acl??1 ?1 ?#加入acldefaults默認開啟acl權限。

2mount -o remount /

#重新掛載文件系統或重啟動系統,使修改生效

?

8.1.2 查看與設定ACL權限

getfacl 文件名

#查看acl權限 ???get file access control lists

?

setfacl 選項 文件名

-m 設定ACL權限 modify

-x 刪除指定的ACL權限 remove

-b 刪除所有的ACL權限 remove all

-d 設定默認ACL權限 default

-k 刪除默認ACL權限 remove default

-R 遞歸設定ACL權限 recursive

?

實驗步驟:

mkdir /project

useradd user1

useradd user2

useradd st

groupadd tgroup

gpasswd -a user1 tgroup

gpasswd -a user2 tgroup

chown root:tgroup /project

chmod 770 /project

setfacl -m u:st:rx /project/

#給用戶st賦予rx權限,使用“u:用戶名:權限”格式

?

給用戶組設定ACL權限

groupadd tgroup2

setfacl -m g:tgroup2:rwx /project/

#為組tgroup2分配ACL權限。使用“g:組名:權限”格式

?

8.1.3 最大有效權限與刪除ACL權限

最大有效權限mask:

mask是用來指定最大有效權限的。

如果給用戶賦予了ACL權限,是需要和mask的權限“相與”才能得到用戶的真正權限

影響ACL權限和所屬組的權限,所有者權限不受影響。

user::rwx

user:st:rwx #真正權限是r-x

group::rwx #真正權限是r-x

mask::r-x

?

setfacl -m m:rx /project/ #設定mask權限為rx。使用“m:權限”格式

?

?

刪除ACL權限:

setfacl -x u:用戶名 文件名

#刪除指定用戶的ACL權限

?

setfacl -x g:組名 文件名

#刪除指定用戶組的ACL權限

?

setfacl -b 文件名

#刪除文件的所有ACl權限

?

8.1.4 默認與遞歸ACL權限?

遞歸ACL權限:

遞歸是父目錄在設定ACL權限時,所有的子文件和子目錄也會擁有相同的ACL權限

setfacl -m u:用戶名:權限 -R 目錄名

?

默認ACL權限:

默認ACL權限的作用是

如果給父目錄設定了默認ACL權限,那么父目錄中所有新建的子文件都會繼承父目錄的ACL權限

setfacl -m d:u:用戶名:權限 目錄名

?

8.2 文件特殊權限

8.2.1 SetUID

SetUID ????#普通用戶在執行此程序時獲得文件所有者身份

只有可執行的二進制程序才能設定SUID權限

命令執行者要對該程序擁有x(執行)權限

命令執行者在執行該程序時獲得該程序文件屬主的身份(在執行程序的過程中靈魂附體的文件的屬主)

SetUID權限只在該程序執行過程中有效,也就是說身份改變只在程序執行過程中有效

?

passwd命令擁有SetUID權限,普通用戶執行時,變成root,所以普通用戶可以修改自己的密碼

cat命令沒有SetUID權限,所以普通用戶不能查看/etc/shadow文件內容

?

設定SetUID的方法:

chmod 4755 文件名 ?#4代表SUID

chmod u+s

?

取消SetUID的方法:

chmod 755 文件名

chmod u-s 文件名

?

危險的SetUID

紅色代表權限不合理的危險文件

不建議用戶自己設定SUID權限

關鍵目錄應嚴格控制寫權限。比如/”、“/usr”等

用戶的密碼設置要嚴格遵守密碼三原則

應該對系統中默認應該具有SetUID權限的文件作一列表,用shell腳本定時檢查有沒有這之外的文件被設置了SetUID權限

?

8.2.2 SetGID

針對文件的作用:

只有可執行的二進制程序才能設置SGID權限

命令執行者要對該程序擁有x(執行)權限

命令執行在執行程序的時候,組身份升級為該程序文件的屬組

SetGID權限同樣只在該程序執行過程中有效,也就是說組身份改變只在程序執行過程中有效

?

例子

/usr/bin/locate

-rwx--s--x ?root slocate ...

/var/lib/mlocate/mlocate.db

-rw-r----- ?root slocate ...

?

/usr/bin/locate是可執行二進制程序,可以賦予SGID

執行用戶lamp/usr/bin/locate命令擁有執行權限

執行/usr/bin/locate命令時,組身份會升級為slocate組,而slocate組對/var/lib/mlocate/mlocate.db數據庫擁有r權限,所以普通用戶可以使用locate命令查詢mlocate.db數據庫

命令結束,lamp用戶的組身份返回為lamp

?

針對目錄的作用:

普通用戶必須對此目錄擁有rx權限,才能進入此目錄

普通用戶在此目錄中的有效組會變成此目錄的屬組

若普通用戶對此目錄擁有w權限時,新建的文件的默認屬組是這個目錄的屬組

?

設定SetGID

2代表SGID

chmod 2755 文件名

chmod g+s 文件名

?

取消SetGID

chmod 755 文件名

chmod g-s 文件名

?

8.2.3 Sticky BIT

SBIT粘著位作用:

粘著位目前只對目錄有效

普通用戶對該目錄擁有wx權限,即普通用戶可以在此目錄擁有寫入權限

如果沒有粘著位,因為普通用戶擁有w權限,所以可以刪除此目錄下所有文件,包括其他用戶建立的文件。

一旦賦予了粘著位,除了root可以刪除所有文件,普通用戶就算擁有w權限,也只能刪除自己建立的文件,但是不能刪除其他用戶建立的文件。

?

例子

/tmp

drwxrwxrwt?root root

?

設置粘著位:

chmod 1755 目錄名

chmod o+t 目錄名

?

取消粘著位:

chmod 777 目錄名

chmod o-t 目錄名

?

8.3 文件系統屬性chattr權限

change file attributes on a Linux file system

修改文件系統屬性:

chattr +-= 選項 文件或目錄名

+ 增加權限

- 刪除權限

= 等于某權限

?

選項

i:(防止誤操作)鎖定命令

如果對文件設置i屬性,那么不允許對文件進行刪除、改名,也不能添加和修改數據,針對root生效

如果對目錄設置i屬性,那么只能修改目錄下文件的數據,但不允許建立和刪除文件

?

a

如果對文件設置a屬性,那么只能在文件中增加數據,但是不能刪除也不能修改數據

如果對目錄設置a屬性,那么只允許在目錄中建立和修改文件,但是不允許刪除

?

?

查看文件系統屬性:

lsattr 選項 文件名

-a 顯示所有文件和目錄

-d 若目標是目錄,僅列出目錄本身的屬性,而不是子文件

?

8.4 系統命令sudo權限

sudo權限:

root把本來只能超級用戶執行的命令賦予普通用戶執行

sudo的操作對象是系統命令

?

sudo使用:

visudo ?#實際修改的是/etc/sudoers文件,即命令vi /etc/sudoers

?

root ALL=(ALL) ALL

#用戶名 被管理主機的地址=(可使用的身份) 授權命令(絕對路徑)

#ALL)可以省略

?

%wheel ALL=(ALL) ALL

#%wheel組名 被管理主機的地址=(可使用的身份) 授權命令(絕對路徑)

?

例子:

賦予user1用戶重啟服務器權限

user1 ALL= /sbin/shutdown -r now

?

普通用戶執行sudo賦予的命令

sudo -l? ? ? #查看可用的sudo命令

sudo /sbin/shutdown -r now? ? ? ?#普通用戶執行sudo賦予的命令

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387291.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387291.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387291.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

windows下GitHub的SSH Key 配置

https://www.jianshu.com/p/9317a927e844轉載于:https://www.cnblogs.com/lishidefengchen/p/10481889.html

PyCharm調試錯誤

JetBrains PyCharm 2017.3.2 這就說明python.exe的環境沒有配,點擊藍色的configure Python Interpreter,然后選擇對應的路徑就可以了

Java06集合

13 集合 實現方法時,不同的數據結構會導致性能有很大差異。 13.1 集合接口 Java集合類庫將接口(interface)與實現(implementation)分離。 可以使用接口類型存放集合的應用,一旦改變了想法,可…

Tensorflow驗證碼識別應用

簡單的Tensorflow驗證碼識別應用,供大家參考,具體內容如下 1.Tensorflow的安裝方式簡單,在此就不贅述了. 2.訓練集訓練集以及測試及如下(純手工打造,所以數量不多): 3.實現代碼部分(參考了網上的一些實現來完成的) main.py(主要的神經網絡代碼) ?123456…

9 文件系統管理

9.1 回顧分區和文件系統 分區類型 主分區:總共最多只能分四個 擴展分區:只能有一個,主分區加擴展分區最多有四個,必須再劃分成邏輯分區才能使用。 邏輯分區:在擴展分區中劃分的 IDE硬盤最多支持59個邏輯分區 SCSI…

Linux 桌面玩家指南:09. X Window 的奧秘

Linux 桌面玩家指南:09. X Window 的奧秘 原文:Linux 桌面玩家指南:09. X Window 的奧秘特別說明:要在我的隨筆后寫評論的小伙伴們請注意了,我的博客開啟了 MathJax 數學公式支持,MathJax 使用$標記數學公式的開始和結…

Storm教程1理論介紹

流式計算的歷史: 早在7、8年前諸如UC伯克利、斯坦福等大學就開始了對流式數據處理的研究,但是由于更多的關注于金融行業的業務場景或者互聯網流量監控的業務場景,以及當時互聯網數據場景的限制,造成了研究多是基于對傳統數據庫處理的流式化&…

梯度下降原理及Python實現

梯度下降算法是一個很基本的算法,在機器學習和優化中有著非常重要的作用,本文首先介紹了梯度下降的基本概念,然后使用python實現了一個基本的梯度下降算法。梯度下降有很多的變種,本文只介紹最基礎的梯度下降,也就是批…

dagger2的初次使用

一、使用前準備 1、打開app的build.gradle文件: 頂部停用apt插件: //添加如下代碼,應用apt插件 apply plugin: com.neenbedankt.android-apt dependencies中添加依賴: //Dagger2compile com.google.dagger:dagger:2.4apt com.goog…

Storm教程2安裝部署

Storm 安裝部署 部署Storm集群需要依次完成的安裝步驟: 1.安裝jdk6及以上版本;   2. 搭建Zookeeper集群;   3. 安裝Storm依賴庫;   4. 下載并解壓Storm發布版本;   5. 修改storm.yaml配置文件;   6…

matplotlib一些常用知識點的整理,

本文作為學習過程中對matplotlib一些常用知識點的整理,方便查找。 強烈推薦ipython 無論你工作在什么項目上,IPython都是值得推薦的。利用ipython --pylab,可以進入PyLab模式,已經導入了matplotlib庫與相關軟件包(例如…

JAVA課程09

package 月份輸出;import java.util.*;public class 月份輸出 {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc new Scanner(System.in);int s sc.nextInt();String a[] {"January","February","March&q…

Storm教程3編程接口

Spouts Spout是Stream的消息產生源,Spout組件的實現可以通過繼承BaseRichSpout類或者其他Spout類來完成,也可以通過實現IRichSpout接口來實現。 需要根據情況實現Spout類中重要的幾個方法有: open方法 當一個Task被初始化的時候會調用此…

梳理操作系統概論

1、用一張圖總結操作系統的結構、功能特征、采用的技術和提供服務方式等。 2、用一張圖描述CPU的工作原理。 3、用一張圖描述系統程序與應用程序、特權指令與非特權指令、CPU狀態、PSW及中斷是如何協同工作的? 轉載于:https://www.cnblogs.com/ljgljg/p/10503190.ht…

機器學習01簡介

Machine Learning 是人工智能的核心,主要使用歸納、綜合而不是演繹。 讓計算機模擬人類行為,以獲取新的知識或技能 重新組織已有的知識結構使之不斷改善自身性能 一個程序能從經驗 E 中學習,解決任務 T,達到性能度量值P&#xf…

位置指紋法的實現(KNN)

基本原理 位置指紋法可以看作是分類或回歸問題(特征是RSS向量,標簽是位置),監督式機器學習方法可以從數據中訓練出一個從特征到標簽的映射關系模型。kNN是一種很簡單的監督式機器學習算法,可以用來做分類或回歸。 對于…

室內定位系列 ——WiFi位置指紋(譯)

摘要 GPS難以解決室內環境下的一些定位問題,大部分室內環境下都存在WiFi,因此利用WiFi進行定位無需額外部署硬件設備,是一個非常節省成本的方法。然而WiFi并不是專門為定位而設計的,傳統的基于時間和角度的定位方法并不適用于WiFi…

機器學習02線性回歸、多項式回歸、正規方程

單變量線性回歸(Linear Regression with One Variable) 預測器表達式: 選擇合適的參數(parameters)θ0 和 θ1,其決定了直線相對于訓練集的準確程度。 建模誤差(modeling error)&a…

最大乘積

給定一個無序數組,包含正數、負數和0,要求從中找出3個數的乘積,使得乘積最大,要求時間復雜度:O(n),空間復雜度:O(1) def solve():n input()a input().split()for i in range(len(a)):a[i] in…

機器學習03Logistic回歸

邏輯回歸 (Logistic Regression) 目前最流行,使用最廣泛的一種學習算法。 分類問題,要預測的變量 y 是離散的值。 邏輯回歸算法的性質是:它的輸出值永遠在 0 到 1 之間。 邏輯回歸模型的假設是: 其中&a…