前言
今日,同事問我,服務器上拷貝過來的tomcat,怎么執行不了./startup.sh。於是,我一想,那肯定是沒有權限的問題了。於是使用chmod命令更改了權限后,就可以執行了。項目正常啟動。我想這個問題應該很多人都會遇到,遂寫下了這篇文章。詳細的介紹一下。linux 的文件權限。本文由權限開始,會擴展到一些其他的點。
1、ls和ls -a和ls -l和ls -al的區別
看到這的讀者會問了,不是講權限嗎,怎么講起了區別。首先通過這幾個命令,了解一下區別,也可以了解到如何看一個文件的權限問題。
- ls:顯示沒有隱藏的文件和文件夾
- ls -a:顯示當前目錄下的所有文件和文件夾,包括隱藏的文件
- ls -l:顯示沒有隱藏的文件和文件夾的詳細信息
- ls -al:顯示當前目錄下的所有文件和文件夾的詳細信息
2、文件詳細信息詳解
我們隨便進入一個文件夾,執行ls -l。
- 第1列:代表文件的類型。我們常見的是d和-。d代表是目錄文件。-代表是普通文件。其他不常見的有。l代表鏈接文件,b代表塊設備。c代表字符設備文件。
- 第2-10列:代表該文件的權限。三個為一組。第一組代表文件所有者的權限,第二組代表同用戶組的權限,第三組代表其他用戶非本用戶組的權限。
每組權限中的rwx,分別代表讀,寫,可執行的意思。 - 第11列數字,圖中的1,5,3,2這列,代表有多少文件名連接到此節點。
每個文件都會將它的權限與屬性記錄到文件系統的i-node中,不過我們使用的目錄樹卻是使用文件名來記錄,因此每個文件名就會連接到一個i-node,這個屬性記錄的就是有多少不同的文件名連接到相同的一個i-node號碼。 - 第12列的root:所屬者用戶名
- 第13列的root:所屬用戶組
- 第14列:容量大小,默認為B
- 后面為創建或修改日期,最后為文件名。
3、文件權限介紹
每一文件或目錄的訪問權限都有三組,每組用三位表示,分別為文件屬主的讀、寫和執行權限;與屬主同組的用戶的讀、寫和執行權限;系統中其他用戶的讀、寫和執行權限。
如之前的圖所示,-代表空許可,r代表只讀,w代表只寫,x代表可執行。
4、chmod命令重寫權限
該命令用於改變文件或目錄的訪問權限。
該命令有兩種寫法:1、包含字母和操作符的方式。2、包含數字的設定方式。
4.1、文字設定法
4.1.1、命令
chmod [who] [+ | - | =] [mode] 文件名
4.1.2、命令中各選項的含義
- 操作對象who可是下述字母中的任一個或者它們的組合:
u 表示“用戶(user)”,即文件或目錄的所有者。
g 表示“同組(group)用戶”,即與文件屬主有相同組ID的所有用戶。
o 表示“其他(others)用戶”。
a 表示“所有(all)用戶”。它是系統默認值。 - 操作符號可以是:
+添加某個權限。
-取消某個權限。
=賦予給定權限並取消其他所有權限(如果有的話)。 - 設置mode所表示的權限可用下述字母的任意組合:
r 可讀。
w 可寫。
x 可執行。
u 與文件屬主擁有一樣的權限。
g 與和文件屬主同組的用戶擁有一樣的權限。
o 與其他用戶擁有一樣的權限。 - 文件名:以空格分開的要改變權限的文件列表,支持通配符。
在一個命令行中可給出多個權限方式,其間用逗號隔開。
例如:chmod g+r,o+r example
使同組和其他用戶對文件example 有讀權限。
例如:chmod u+x startup.sh
給當前用戶增加對startup.sh的執行權限。
4.2、數字設定法
4.2.1、命令
chmod [mode] 文件名
4.2.2、概述
我們將之前的rwx用數字進行替代。
0表示沒有權限,1表示可執行權限,2表示可寫權限,4表示可讀權限。
數字之和,即為該文件的權限。
使用文字的方式,有三組文字,數字即為3組數字之和。
4.2.3、例子
1、chmod 644 a.txt
文件屬主具有讀,寫權限,因為6=4+2。
文件組具有讀權限。
其他用戶具有讀權限。
5、chgrp命令
5.1、概述
改變文件或目錄所屬的組
5.2、命令
chgrp [選項] group filename
- R 遞歸式地改變指定目錄及其下的所有子目錄和文件的屬組。
group為用戶組id或者為/etc/group中用戶的用戶組名。如果用戶不是文件的屬主或者超級用戶,則不能改變。
5.3、例子
chgrp - R jichi /etc
將etc及etc下所有文件和目錄的屬組都改為jichi。
6、chown命令
6.1、概述
更改某個文件或目錄的屬主和屬組。
6.2、命令
chown [選項] 用戶或組 文件
- R 遞歸式地改變指定目錄及其下的所有子目錄和文件的擁有者。
- v 顯示chown命令所做的工作。
6.3、例子
把文件a.txt的所有者改為jichi。
chown jichi a.txt
把目錄/b及其下的所有文件和子目錄的屬主改成jichi,屬組改成jingdian。
chown - R jichi.jingdian /b