Linux檔案權限

因為 Linux 是多人多工的 OS, 所以, 檔案系統必須要有一套嚴密的保護措施, 以免, 因為有意或無意的人為破壞, 造成混亂及損失.

. Linux 將檔案分成三種身份、四種權限:

三種身份是:

  • u: 自己(user)
  • g: 和自己同一組的人(group)
  • o: 其它人 (other)

而 a 則是代表所有的人.

每種身份皆有四種可能的權限:

  • r : 讀取權 (read)
  • w : 寫入權 (write)
  • x :執行權 (execute)

及: (上面這三種權限用得最多, 以下則較少用, 也請儘量不使用, 除非你確實知道你在做啥麼?!)

  • s : set user id / set group id 及 t : sticky bit (簡稱為 sst 模式) 
    4000 : set user id, 2000 set group id, 1000 set sticky bit

Linux 用 9 個 bits 來代表檔案的權限, 如下所示:

- - - - - - - - - -
- rwx rwx rwx
  擁有人 同組人 其它人

每三個形成一組, 由左至右, 分別代表擁有人、同組人、其它人的權限.

每一組的三個位置, 由左至右為: 讀取,寫入,執行的權限, 若該位置只有一條線, 則表示不具有該權限.

另外, 我們也用數字來代表不同的權限:

  • 讀取: 4
  • 寫入: 2
  • 執行: 1

如果某檔, 其擁有的權限為 rwx 的話, 那麼, 我們便把它們所代表的數字大小加起來, 即 4+2+1 =7

以下是可能的組合:

--- 0
--x 1
-w- 2
r-- 4
-wx 2+1=3
r-x 4+1=5
rw- 4+2=6
rwx 7

因為所有可能的組合, 其權限大小僅 0 ~ 7的範圍,

所以, 我們也將它視為一種八進位的數字系統, 並且常常用數字來表示某一個檔案的權限開放的程度.

例子:

            擁
檔          有
案          檔
種          案                   檔案大小 最近修改的
類 檔案權限 數 擁有人   組別    (byte單位)日期及時間   檔案名稱
drwx--x--x  7 kv   kv    4096  2月  3 14:25 .
drwxr-xr-x  7 root root  4096  2月  1 11:56 ..
-rw-------  1 kv   kv      10  2月  3 14:25 .bash_history
-rw-r--r--  1 kv   kv      24  2月  1 11:50 .bash_logout
-rw-r--r--  1 kv   kv     191  2月  1 11:50 .bash_profile
-rw-r--r--  1 kv   kv     124  2月  1 11:50 .bashrc
-rw-r--r--  1 kv   kv     238  2月  1 11:50 .emacs
-rw-------  1 kv   kv      88  2月  1 21:27 .forward
-rw-r--r--  1 kv   kv     120  2月  1 11:50 .gtkrc
drwxr-xr-x  2 kv   kv    4096  2月  3 14:19 html
drwxr-xr-x  3 kv   kv    4096  2月  1 11:50 .kde
drwx------  2 kv   kv    4096  2月  1 12:36 mail
drwx------  8 kv   kv    4096  2月  1 12:34 .openwebmail
-rw-------  1 kv   kv   12288  2月  1 21:27 .vacation
-rw-------  1 kv   kv     329  2月  1 21:27 .vacation.msg
drwxr-xr-x  2 kv   kv    4096  2月  3 14:23 webdisk

以上圖為例:

webdisk是一個普通的資料夾檔案, 其擁有人是 kv, 組別是kv, 該檔案的權限是:

  • 擁有人: 可讀,可寫,可執行
  • 同組人: 可讀,可執行 (但不可寫)
  • 其它人: 可讀,可執行 (但不可寫)

用八進位數字來表示, 該檔權限為: 755

試問: 以下權限其對應的八進位數字是多少?

rwx--x--x  
r--r--r--  
rw-rw-rw-  
--x--x--x  
rwxrwxrwx  
r-xr-xr-x  

試問: 以下八進位數字其對應的權限為何?

611  
755  
666  
544  
733  
634  

 

2. 改變權限的方法.

有兩種改變檔案權限的方法:

  • 八進位數字模式
  • 符號模式

使用的指令是: chmod (change mode : change the access permissions of files)

方法如下:

chmod  權限  檔案/目錄

例:

  • chmod 666 myfile
  • chmod 777 myfile
  • chmod 755 myfile
  • chmod 111 myfile

以上是採八進位數字模式

  • chmod u+x myfile
  • chmod u-x myfile
  • chmod ug+x myfile
  • chmod g-x myfile
  • chmod o+x myfile
  • chmod o-x myfile
  • chmod a+x myfile
  • chmod a-x myfile
  • chmod a=x myfile
  • chmod u=wr myfile
  • chmod go=rx myfile

以上是採符號模式.

+ 表增加該種權限

- 表去掉該種權限

= 表設定作該種權限

3. 目錄的權限.

目錄的權限, 觀念及設法, 同於檔案的權限, 但其包含的意義則大不相同.

以 "可執行的" 這個權限而言, 對檔案來說, 若該檔設為可執行的話, 其意義很容易了解, 但如果將目錄設為可執行, 那麼難道目錄真的是可以執行的嗎? :-Q

當然不是.

Linux 對於目錄的權限, 另有一套看法:

r 可列出目錄中的檔案名稱, 即 ls 有作用
w 在該目錄中, 可刪檔,改檔名,建新檔
x 可以進入該目錄之中(重要觀念, 用處大)

如果某一個目錄下, 尚有許多檔案和子目錄, 有無方法可以一次改變所有的檔案權限呢?

當然有.

chmod -R 權限 目錄名稱

其中 -R 表示 Recursively change permissions of directories and their contents, 意即遞迴地將其下的所有檔案、目錄全數改變.

4. 改變檔案的擁有者(owner) 或 組別 (group)

通常這只有 root 等級的使用者, 才有此項權力. (否則就天下大亂了! 不過, 某些 Uuix clone 開放有限制的作法)

方法如下:

chown [-R] owner:group 檔案/目錄

例:

chown -R 3slo:hacker /home/ols3

 

5. umask(檔案的安全濾網).

什麼是 umask ? umask 是在新建立一個檔案或目錄時, 檔案權限的遮罩值.

其運作方式是: 將系統的預設值減去 umask 值, 就是最後檔案/目錄的權限.

一般而言, 新建檔案的預設值是 666, 新建目錄的預設值是 777, 如果 umask 定為 022,

那麼一個新的檔案建立時, 其真正的權限應該是 666-022=644

新的目錄建立時, 其權限則是 777-022=755

有了 umask 的話, 新建的檔案及目錄, 會比較安全一點.

如何得知目前的 umask 值是多少呢?

下 umask

原文地址:http://s2.naes.tn.edu.tw/~kv/file.htm

时间: 2025-01-20 16:54:06

Linux檔案權限的相关文章

登錄,檔案,身份,權限

使用 OpenSSH 登录的三种方法: 登录方法一: ssh -l 帐号 主机名称/IP ssh -l root 192.168.4.182 登录方法二: ssh 帐号@主机名称/IP ssh root@192.168.4.182 登录方法三: ssh 主机名称/IP,没有指定帐号会已当前登录系统帐号作为默认帐号 ssh 192.168.4.182 退出:exit 或者 ctrl + D 一.档案目录 在 Unix-like 的作业系统中,档案可以分为以下几种: 形態代碼 檔案形態 - 一般檔案

C++ 檔案、資料夾、路徑處理函式庫:boost::filesystem

原帖:https://tokyo.zxproxy.com/browse.php?u=uG7kXsFlW1ZmaxKEvCzu8HrCJ0bXIAddA1s5dtIUZ%2FYzM1u9JI7jjKLTXvXJlIqeavUo1Ak%3D&b=6   如果要在 C++ 裡對特定的檔案做存取,其實透過 STL 的 fstream(參考)來做,一般是不會有什麼問題的:相對的,問題比較大的部分,可能會是在於對於資料夾(folder.directory)的處理,以及對於路徑的操作上.像是以路徑來說,Win

如何抓取「鼠標或用鍵盤選取中」的檔案清單?

问题描述 想做一个功能按下热键会判断目前所选的档案为哪些之后我要再做一些处理但是查不到如何抓取选取中的档案我觉得理论上应该是可以原因就是否则微软的Ctrl+C跟Ctrl+X,当按下时怎么取的到档案清单但是google查好久,都找不到相关文章如何抓抓取"选取中"的档案清单请问有相关范例,或是我应该找什么关键字吗?现在想到一个笨法方式,按下热键→触发Ctrl+X我在去读取剪贴簿就好了,但是这样会覆盖掉原先的剪贴簿,所以暂时不打算这样做 解决方案 解决方案二:要看控件的,比如TextBox可

Linux 文件同步工具——rsync

1.介绍: rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了--remote sync. Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的"Rsync算法"来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快. Rsync本来是用于替代rcp的一个工具,目前由rsync.samba.org维护,所以rsync

鸟哥的linux私房菜---非常好的linux基础网址【转】

  转自:http://linux.vbird.org/linux_basic/0320bash.php 在 Linux 的環境下,如果你不懂 bash 是什麼,那麼其他的東西就不用學了!因為前面幾章我們使用終端機下達指令的方式, 就是透過 bash 的環境來處理的喔!所以說,他很重要吧!bash 的東西非常的多,包括變數的設定與使用. bash 操作環境的建置.資料流重導向的功能,還有那好用的管線命令!好好清一清腦門,準備用功去囉- ^_^ 這個章節幾乎是所有指令列模式 (command li

电源管理ACPI、及APM、GNU/Linux系统下的对应命令使用

rtc: The Real Time Clock (RTC) unit can be operated by the backup battery when the system power is off. The data include the time by second, minute, hour, date, day, month, and year. The RTC unit works with an external 32.768 KHz crystal and can perf

Linux系统mrtg安装设置教程

MRTG(Multi Router Traffic Grapher)是一套可用来绘出网络流量图的软件,由瑞士奥尔滕的Tobias Oetiker与Dave Rand所开发,此软件以GPL授权. 下面是网卡流量监控图 MRTG最早的版本是在1995年春天所推出,以Perl所写成,因此可以跨平台使用,它利用了SNMP送出带有物件识别码(OIDs)的请求给要查询的网络设备,因此设备本身需支援SNMP.MRTG再以所收集到的资料产生HTML档案并以GIF或PNG格式绘制出图形,并可以日.周.月等单位分别

Linux系统下touch命令的使用方法

  1.命令格式: touch [选项]... 文件... 2.命令参数: -a 或--time=atime或--time=access或--time=use 只更改存取时间. -c 或--no-create 不建立任何文档. -d 使用指定的日期时间,而非现在的时间. -f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题. -m 或--time=mtime或--time=modify 只更改变动时间. -r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相

如何在linux添加一个ftp用户,让其只有上传权限,没有下载权限?

问题描述 如何在linux添加一个ftp用户,让其只有上传权限,没有下载权限? 如何在linux添加一个ftp用户,让其只有上传权限,没有下载权限? 解决方案 首先你要使用一个ftp服务器端,不同的服务器端配置不同. 一般来说上传下载权限都是单独设置的,即分别设置允许上传和禁止下载即可. 参考:http://ming228.blog.51cto.com/421298/112083/ 解决方案二: http://www.cnblogs.com/bienfantaisie/archive/2011/