tft每日頭條

 > 生活

 > 給文件賦予權限的命令

給文件賦予權限的命令

生活 更新时间:2025-02-11 21:50:36
課程目标:
  • 能夠說出Linux基本權限的作用和用法
  • 能夠說出特殊權限的作用
  • 能夠知道隐藏權限的用法
  • 能夠知道acl權限的使用
==知識點==
  • 基本權限
  • 特殊權限
  • 隐藏權限
  • acl權限
介紹

Linux系統是一個典型的多用戶操作系統,不同的用戶處于不同的地位,為了保護系統的安全性,linux系統對于不同用戶訪問同一個文件或目錄做了不同的訪問控制。而這種控制就是通過權限實現的,本節課我們介紹linux權限的使用

一、基本權限基本權限的介紹

Linux中每個文件或目錄都有3個基本權限位,控制三種訪問級别用戶的讀、寫、執行,所以linux的基本權限位一共有9個。基本權限位和另外3個可以影響可執行程序運行的3個特殊權限位一起構成了文件訪問模式。三個屬性規定了對應三種級别的用戶能夠如何使用這個文件,這三個基本權限位對于文件和目錄的含義有所差别的,我們一起來看一下

字符

權限

對文件的含義

對目錄的含義

r

意味着我們可以查看閱讀

可以列出目錄中的文件列表

w

意味着,對文件可以修改或删除

可以在該目錄中創建、删除文件

x

執行

如果是文件就可以運行,比如二進制文件或腳本。

可以使用cd命令進入該目錄

那三種訪問級别都有哪些呢?每個文件都有三組不同的讀、寫和執行權限,分别适用于三種訪問級别,其中每組中的三個欄位分别使用讀取權限(r)、寫入權限(w)、執行權限(x)或沒有相應的權限(-)來表示,共9位來表示。

給文件賦予權限的命令(linux權限管理)1

第一組:适用于文件的屬主,圖中屬主的權限是rwx。

第二組:适用于文件的屬組,圖中屬組的權限是r-x。

第三組:使用于其它用戶權限位,圖中其它用戶權限位是r-x。

當有人試圖訪問一個文件的時候,linux系統會按順序執行如下步驟:

(1)使用者擁有這個文件嗎?如果是,啟用用戶權限。

(2)用戶是組所有者成員嗎?如果是,啟用組權限

(3)如果以上兩個都不是,啟用其它人權限

上面我們提到的是第一種表示方法,在linux中還有另外一種表示方法,八進制表示法,我們來看下字母和八進制表示方法的對應關系

字符表示法

八進制表示法

含義

r

4

w

2

x

1

執行

所以上面給出的權限rwxr-xr-x換成數字的表示方式就是755,那權限如何設置呢?

基本權限的設置和查看

通過前面的學習我們知道,用戶分為所有者,所有者組,其他人這三類,而每一類有包含三種基本權限,他們的對應關系是

權限位

含義

屬主權限位

用于限制文件或目錄的創建者

屬組權限位

用于限制文件或目錄所屬組的成員

其它用戶的權限

用于限制既不是屬主又不是所屬組的能訪問該文件或目錄的其他人員

當我們使用命令來查看文件或目錄時,會看如下内容

[root@localhost ~]# ls -l 總用量 13804 drwxr-xr-x. 2 root root 6 10月 11 06:36 公共 drwxr-xr-x. 2 root root 6 10月 11 06:36 模闆 drwxr-xr-x. 2 root root 6 10月 11 06:36 視頻 drwxr-xr-x. 2 root root 6 10月 11 06:36 圖片 drwxr-xr-x. 2 root root 6 10月 11 06:36 文檔 drwxr-xr-x. 2 root root 6 10月 11 06:36 下載 drwxr-xr-x. 2 root root 6 10月 11 06:36 音樂 drwxr-xr-x. 2 root root 6 10月 11 06:36 桌面 -rw-------. 1 root root 1214 10月 11 06:12 anaconda-ks.cfg -rw-r--r--. 1 root root 1369 10月 11 06:17 initial-setup-ks.cfg

每一行顯示一個文件或目錄的信息,這些信息包括文件的類型(1位)、文件的權限(9位)、文件的連接數、文件的屬主(第3列)、文件的所屬組(第4列),大小以及相關時間和文件名。其中Linux 文件的權限标志為九個,分為3 組,分别代表文件擁有者的權限,文件所屬用戶組的權限和其它用戶的權限,現在我們知道文件有三種權限((r)讀取、(w)寫入和(x)執行)和三種訪問級别((u)用戶、(g)主要組和(o)其它人)決定文件可以被如何使用。那如何修改?

修改文件權限 chmod

給文件賦予權限的命令(linux權限管理)2

縮寫

含義

u

User(用戶)

g

Group (組)

o

Other(其它)

a

All(所有)

Add(加)

-

Remove(減去)

=

Set (設置)

r

Read (可讀)

w

Write (可寫)

x

Execute (執行)

命令

作用

結果權限

chmod o-r a.File

取消其他人的可讀權限

rw-rw---

chmod g-w a.file

取消組的寫入權限

rw-r--r--

chmod ug w a.file

賦予用戶和組寫入權限

rwxrwxr--

chmod o w a.file

賦予其他人寫入權限

rw-rw-rw-

chmod go-rwx a.file

取消組和其他人的閱讀、寫入和執行權限

rw-------

chmod a-w a.file

取消所有人的寫入權限

r-- r-- r--

chmod uo-r a.file

取消用戶和其它人的閱讀權限

-w-rw--w-

chmod go=rw a.file

将組和其他人的權限設置為閱讀和寫入

rw-rw-rw-

使用數字的表示方式類似chmod 755 a,執行完成後a這個文件的權限對應就是 -rwxr-xr-x,這是文件權限的兩種修改方式,如果你想修改文件的所有者和所有者組需要使用的命令就是chown,chgrp

[root@localhost test]# ll 總用量 0 -rw-r--r-- 1 root root 0 10月 18 01:26 file1 [root@localhost test]# chown oracle file1 [root@localhost test]# ll 總用量 0 -rw-r--r-- 1 oracle root 0 10月 18 01:26 file1 [root@localhost test]# chgrp oracle file1 [root@localhost test]# ll 總用量 0 -rw-r--r-- 1 oracle oracle 0 10月 18 01:26 file1

這裡,我們涉及到了三條與權限修改相關的命令

操作

可以執行的用戶

chmod

Root用戶和文件的所有者

chgrp

Root用戶和文件的所有者(必須是組成員)

chown

隻有root用戶

以上是三種基本權限 -R

文件或目錄的默認權限

每一個新産生的文件都會有一個默認的權限,這個權限是通過系統中的umask來控制的

文件的最大權限是666

目錄的權限是777

使用umask查看

二、特殊權限特殊權限的介紹

之前我們提到了特殊權限有三個,這三個特殊權限是在可執行程序運行時影響操作權限的,它們分别是SUID,SGID,sticky-bit位

特殊權限

說明

SUID

當一個設置了SUID 位的可執行文件被執行時,該文件将以所有者的身份運行,也就是說無論誰來執行這個文件,他都有文件所有者的特權。任意存取該文件擁有者能使用的全部系統資源。如果所有者是 root 的話,那麼執行人就有超級用戶的特權了。

SGID

當一個設置了SGID 位的可執行文件運行時,該文件将具有所屬組的特權,任意存取整個組所能使用的系統資源;若一個目錄設置了SGID,則所有被複制到這個目錄下的文件,其所屬的組都會被重設為和這個目錄一樣,除非在複制文件時保留文件屬性,才能保留原來所屬的群組設置。

stickybit

對一個文件設置了sticky-bit之後,盡管其他用戶有寫權限,也必須由屬主執行删除、移動等操作;對一個目錄設置了sticky-bit之後,存放在該目錄的文件僅準許其屬主執行删除、移動等操作。

一個典型的例子就是passwd命令,這個命令允許用戶修改自己的密碼。我們可以看到本來是rwx的權限表示形式變成了rws,同樣如果/usr/bin/passwd這個文件同時被設置了三個特殊權限,那麼權限的格式就會變成rwsrwsrwt,需要注意的是特殊權限設置的前置要求是可執行,也就是如果沒有x權限位,是不要設置的,即便你使用root用戶設置上了特殊權限,也不會生效。

[root@localhost test]# ll /usr/bin/passwd -rwsr-xr-x. 1 root root 34928 5月 11 11:14 /usr/bin/passwd

特殊權限的設置和查看

特殊權限的設置也是使用chmod

[root@localhost test]# ll 總用量 0 -rwxr-xr-x 1 oracle oracle 0 10月 18 01:26 file1 [root@localhost test]# chmod u s file1 [root@localhost test]# ll 總用量 0 -rwsr-xr-x 1 oracle oracle 0 10月 18 01:26 file1 [root@localhost test]# chmod g s file1 [root@localhost test]# ll 總用量 0 -rwsr-sr-x 1 oracle oracle 0 10月 18 01:26 file1 [root@localhost test]# chmod o t file1 [root@localhost test]# ll 總用量 0 -rwsr-sr-t 1 oracle oracle 0 10月 18 01:26 file1

或者使用數字

[root@localhost test]# chmod u-s,g-s,o-t file1 [root@localhost test]# ll 總用量 0 -rwxr-xr-x 1 oracle oracle 0 10月 18 01:26 file1 [root@localhost test]# chmod 7755 file1 [root@localhost test]# ll 總用量 0 -rwsr-sr-t 1 oracle oracle 0 10月 18 01:26 file1

三、隐藏權限隐藏權限的介紹

有時候你發現即使使用的是root用戶也不能修改某個文件,大部分原因是因為使用過chattr命令鎖定了該文件,這個命令的作用很大,通過chattr可以提高系統的安全性,但是這個命令并不适合所有的目錄,如/dev,/tmp,/var。與我們前面看到的chmod這些命令修改權限不同的是chattr修改的是更底層的屬性,這裡面我們所提到的隐藏權限指的就是使用chattr來設置屬性

隐藏權限的設置和查看

chattr的用戶與我們之前講的chmod,chow這些命令相似,都是直接對需要修改的文件進行操作就可以了

[root@localhost test]# chattr AaiSd file1 [root@localhost test]# lsattr file1 --S-iadA---------- file1 [root@localhost test]# chattr = file1 [root@localhost test]# lsattr file1 ------------------ file1

A 文件或目錄的atime不可被修改S 硬盤I/O同步選項,功能類似sync。a 隻能向文件中添加數據,而不能删除,多用于服務器日志文件安全,隻有root才能設定這個屬性。d 文件不能成為dump程序的備份目标。i 設定文件不能被删除、改名、設定鍊接關系,同時不能寫入或新增内容。

通過上面的例子可以看到查看的時候使用的是lsattr,chattr還有很多參數,各位可以在man手冊中獲取到幫助,另外有些參數的使用是有局限性的。

四、acl權限acl權限的介紹

linux的權限非常重要,我們之前所說的幾種權限中,但是并不能隻針對一個用戶或者一個組進行單獨設置,而ACL權限可以幫助我們實現這個功能,比如說有一個文件的所有者和所有者組都是a,這個文件的權限是660,我可以讓b這個用戶可以對文件進行讀寫的操作,而b這個用戶并不屬于a組的成員。那我們來看下如何使用

acl權限的設置和查看

如果要使用acl權限,首先要确定你的文件系統支持acl權限,如果在Default mount options字段出現acl字樣就意味着你的文件系統支持acl,不過在CentOS8中默認是都支持的。

[root@localhost test]# tune2fs -l /dev/sda1 tune2fs 1.44.3 (10-July-2018) Filesystem volume name: <none> Last mounted on: /boot Filesystem UUID: be03eaec-6474-42ea-8f79-06e7198f5155 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum Filesystem flags: signed_directory_hash Default mount options: user_xattr acl Filesystem state: clean . . .

配置acl權限我們需要使用兩個命令一個是setfacl用來設置acl權限,另一個是getfacl用來查看acl權限

setfacl

-m :設置acl -x :删除指定的acl -b :删除所有的acl

getfacl用來查看文件的acl權限,現在我們來看下如何設置

[root@localhost test]# ls file file1 [root@localhost test]# ll file1 -rw-r--r-- 1 root root 0 10月 18 02:48 file1 [root@localhost test]# setfacl -m u:oracle:rw file1 為指定的用戶配置一個rw的權限 [root@localhost test]# setfacl -m u::rwx file1 如果沒有指定用戶則默認是為該文件的所有者設置 [root@localhost test]# ll file1 -rwxrw-r-- 1 root root 0 10月 18 02:48 file1 所有者權限變成的rwx而且後面多了一個 号

你會發現使用ll(等同于ls -l)命令查看時會發現多了一個 号,這隻是提醒我們此文件被設置了acl權限,但是具體是什麼樣的,我們還需要使用getfacl來查看

[root@localhost test]# getfacl file1 # file: file1 文件名 # owner: root 所有者 # group: root 所有者組 user::rwx user:後面是空的,代表的是所有者的權限 user:oracle:rw- 我們之前給額外用戶設置的權限 group::r-- 所有者組的權限 mask::rw- 默認的有效權限 other::r-- 其他人的權限

以上是我們針對一個額外的用戶設置的權限,同理可以設置針對組和其他人的acl權限

[root@localhost test]# setfacl -m g:oracle:rw file1 [root@localhost test]# setfacl -m o:rw file1 [root@localhost test]# getfacl file1 # file: file1 # owner: root # group: root user::rwx user:oracle:rw- group::r-- group:oracle:rw- mask::rw- other::rw-

删除指定的acl

[root@localhost test]# setfacl -x u:oracle file1 删除用戶acl [root@localhost test]# getfacl file1 # file: file1 # owner: root # group: root user::rwx group::r-- group:oracle:rw- mask::rw- other::rw- [root@localhost test]# setfacl -x g:oracle file1 删除組acl [root@localhost test]# getfacl file1 # file: file1 # owner: root # group: root user::rwx group::r-- mask::r-- other::rw- [root@localhost test]# chmod o=r file1 删除其他人直接使用chmod就可以 [root@localhost test]# ll file1 -rw-r--r-- 1 root root 0 10月 18 04:21 file1 [root@localhost test]# getfacl file1 # file: file1 # owner: root # group: root user::rw- group::r-- other::r--

删除所有acl

[root@localhost test]# setfacl -m u:oracle:rw,g:oracle:rw,o:rwx file1 [root@localhost test]# getfacl file1 # file: file1 # owner: root # group: root user::rw- user:oracle:rw- group::r-- group:oracle:rw- mask::rw- other::rwx [root@localhost test]# setfacl -b file1 [root@localhost test]# getfacl file1 # file: file1 # owner: root # group: root user::rw- group::r-- other::rwx

你沒看錯,權限在指定的時候是可以指定多個的,我們之前提到的chmod也可以這樣使用,好了權限管理我們就說這麼多,現在我們來總結一下

總結

本節課我們學習了linux的權限管理,我們将權限管理分為四個部分

基本權限

特殊權限

隐藏權限

acl權限

其中基本權限和特殊權限的設置方法是類似的,隐藏權限和acl權限都有自己的設置方式,本節課的内容是後面課程的基石,大家要盡快熟悉,靈活應用。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved