1、文件權限
2、文件和目錄rwx權限說明
文件rwx權限:
r : 可讀,具有讀取文件內容的權限(),如果沒有r,vi/vim編輯器提示無法編輯(可強制編輯),echo可以追加或重定向。
w : 可寫,具有修改文件內容的權限
x : 可執行,具有執行文件的權限。
需滿足:文件本身具有可執行權限;普通用戶還需具有r權限;root用戶只要x權限就可執行。linux中可執行文件:*.sh *.py *.perl等等。
目錄rwx權限:
r : 可讀,查看目錄下面文件及子目錄的權限,即 ls dir
如果沒有x,不能進入到目錄裏,即無法cd dir ;如果沒有x,ls可以看到所有文件名,但會提示無權訪問目錄下的文件。
w : 可寫,具有修改、增加、刪除目錄內文件名的權限(需要x權限配合)
x : 可執行,具有進入目錄的權限。例如cd dir;但是沒有r無法列表文件或目錄,沒有w無法修改、增加、刪除
3、刪除文件(或者修改文件名)受父目錄權限控制,和文件本身權限無關,刪除文件(或者修改文件名)是在操作文件的上級目錄的block中與文件名和inode相關聯的數據,因此和上級目錄權限有關。
4、讀取/data/test的過程
5、常用命令
改變文件或目錄用戶權限: chmod [數字權限或字符權限] [文件名或目錄名] 。
加 -R (遞歸) 表示把目錄中的文件或子目錄權限改變。
數字權限:r :4 w:2 x:1 -:0
字符權限 : u:所屬主 g:所屬組 o:其他人 a:相當於ugo +:添加權限 -:取消權限 =:取消其他權限只添加給定權限
改變文件或目錄所屬主: chown [選項] [屬主] [文件名或目錄名]
選項: -R 表示把指定目錄中的文件或子目錄的所屬主改變。
改變文件或目錄所屬組:chown :[屬組] [文件名或目錄名]
改變文件或目錄的所屬主和所屬組:chown 用戶.用戶組 [文件名或目錄名]
改變文件或目錄所屬組: chgrp [選項] [屬組] [文件名或目錄名]
選項: -R 表示把指定目錄中的文件或子目錄的所屬組改變。
6、默認權限分配命令:umask
每個linux系統終端都擁有一個umask,可以用來確定新創建文件或目錄的默認權限。由於在系統中創建一個文件默認權限666,創建一個目錄默認權限777,權限對外開放比較大,所以設置了umask權限掩碼之後,默認的文件目錄權限減去umask值纔是實際的文件目錄權限。
umask 一共4位數字,第一位用於定義特殊權限,後三位表示權限掩碼。
對於 超級用戶,umask默認值是0022,超級用戶(用戶root及用戶組root)創建目錄默認權限 :777-022=755,創建文件默認權限:666-022= 644,是相對安全的權限。
對於普通用戶, umask默認值是0002,普通用戶創建目錄默認權限:777-002=775,創建文件默認權限:666-002=664.
umask設定值如果有奇數位,777 ( 666 )-umask,對應的奇數位再加1,纔是創建目錄或文件的默認權限。
umask設定值如果全爲偶數,777(666)-umask,就是創建目錄或文件的的默認權限。
查看umask值 : umask
改變umask值 : umask -S [設定值] (臨時設置,重啓無效)
如果需要永久生效,則修改/etc/profile或者/etc/bashrc文件,在文件末尾加上 umask [設定值] 。/etc/profile 和 /etc/bashrc 都可以用於用戶登錄時自動執行某些操作,區別是/etc/profile只是在用戶第一次登錄時被執行,而/etc/bashrc在用戶每次登錄加載bash shell 時都會被執行。因此,修改/etc/profile只能對新創建的用戶生效,/etc/bashrc 對所有登錄用戶都生效。
7、特殊權限
Linux文件的特殊權限是用於彌補一般權限不能實現的功能,是針對於文件設置的一種特殊的功能。
Linux文件的特殊權限:
SUID:讓執行者臨時擁有屬主的權限(僅對擁有執行權限x的二進制程序有效)。s(有x時) , S( 無x時 )。
SGID:讓執行者臨時擁有屬組的權限(對擁有執行權限x的二進制程序設置)。 s(有x時),S(無x時)。
主要用在目錄中,當某個目錄設置了sgid,在該目錄中新創建的文件具有該目錄的所屬組權限,使得在多個用戶之間共享目錄變得簡單。
SBIT(Sticky Bit):只可管理自己的數據而不能刪除他人文件(僅對目錄有效)。 t( 有x時 ) ,T(無x時)。
Linux文件的特殊權限的設置:
SUID:4 SGID:2 SBIT:1
設置SUID: chmod 4755 [文件名或目錄名] 或者 chmod u+s [文件名或目錄名]
設置SGID: chmod 2755 [文件名或目錄名] 或者 chmod g+s [文件名或目錄名]
設置SBIT(粘滯位): chmod 1755 [目錄名]
8、用戶和用戶組管理
用戶管理:
useradd :創建用戶,常會涉及到更改/etc/passwd /etc/shadow /etc/group /etc/gshadow 文件。
userdel :刪除用戶,常會涉及到更改/etc/passwd /etc/shadow /etc/group /etc/gshadow 文件,企業環境中慎用userdel -r!!!。
usermod :修改用戶信息,常會涉及到更改/etc/passwd /etc/shadow /etc/group /etc/gshadow 文件。
passwd :設置或修改密碼,更改/etc/shadow文件。
chage:修改密碼有效期,更改/etc/shadow文件。
id :查看用戶的UID,GID及所屬的用戶組。
w:查看登錄用戶並顯示在做什麼
who:查看登錄用戶
last 或 lastb:查看登錄用戶歷史
lastlog:查看所有用戶最近登錄情況
su:切換用戶
sudo:後接命令,表示不需要root密碼就可以執行只有root纔可以執行的權限。這個權限可以通過visudo命令(推薦用法)或者直接編輯/etc/sudoers(配置完後要用 visudo -c 檢查語法)來實現。
visudo:編輯sudo配置文件,配置完後執行 visudo -c 檢查。
在/etc/sudoers中:別名和具體授權配置的關係,一般應用於多個系統用戶,需要分類、分層次管理,需注意以下:
(1)命令別名下的成員必須是文件或目錄的絕對路徑;
(2)別名名稱包含大寫字母、數字、下劃線;
(3)一個別名下的成員之間要用半角狀態下“,”分隔開,成員必須是有效存在的;
(4)別名成員要與別名一一對應;
(5)別名規則是以每行爲單位,如要換行要用 \來續行;
(6)指定切換的用戶要用()括起來,如無()默認root用戶,(ALL)代表切換到所有用戶;
(7)無需密碼直接運行的命令,應加上 NOPASSWD:參數;
(8)禁止某類命令或程序運行,要在前面加!,放在允許執行的命令的後面;
(9)用戶組前面要加%;
用戶組管理:
groupadd:創建用戶組,常會涉及到更改/etc/group /etc/gshadow 文件。
groupdel :刪除用戶組,常會涉及到更改/etc/group /etc/gshadow 文件。
groupmod:更改用戶組信息,常會涉及到更改/etc/group /etc/gshadow 文件。
用戶和組的關係:一對一,一對多,多對一,多對多。
用戶分類:
超級用戶:UID=0,root
虛擬用戶:UID=1-499,滿足文件或者服務啓動的需要,一般不能登錄系統。
普通用戶:UID=>=500,由超級用戶或者具有超級用戶權限的用戶創建。
與用戶相關的文件:/etc/passwd(需要熟悉內容) /etc/shadow /etc/group /etc/gshadow
/etc/skel:用來存放新用戶配置文件的目錄,當添加用戶時,就會把新用戶的配置文件複製到新添加用戶家目錄中,默認情況下該目錄下所有文件爲隱藏文件,通過修改,添加,刪除/etc/skel下的文件:爲新用戶統一提供初始化用戶環境;添加用戶登錄信息通知。
如:終端提示符顯示的是-bash-4.1
原因是:用戶家目錄下配置文件丟失。root在/root下面的幾個配置文件丟失,丟失文件如下:
1、.bash_profile
2、.bashrc 這兩個文件都是用戶必備的文件。
修復要把這兩個文件重新拷貝到/root下:
cp /etc/skel/.bashrc /root/
cp /etc/skel/.bash_profile /root/
註銷root,重新登錄就可以恢復正常。
/etc/login.defs:用來定義創建用戶時需要的一些用戶配置信息,如:創建用戶的家目錄,UID和GID的範圍,用戶密碼的有效期。(一般不需要修改)
/etc/default/useradd:添加用戶時默認的配置信息。
企業環境:
(1)密碼需8位以上字母數字特殊字符複雜組合;大企業用戶密碼採用LDAP(相當於活動目錄,openldap )對linux用戶統一認證,批量管理;動態密碼,動態口令。
(2)企業環境下刪除用戶,如果不確定有無重要數據不要刪除用戶家目錄(慎用userdel -r),一般通過 vi /etc/passwd 註釋掉要刪除的用戶,觀察一個月,無異常再刪除;或者把登錄shell改成/sbin/nologin;或openldap管理的,在ldap庫裏刪掉用戶即可。
9、chattr、lsattr
chattr: 命令用於改變文件或目錄屬性,通過chattr命令修改屬性能夠提高系統的安全性,但是它並不適合所有的目錄。chattr命令不能保護/、/dev、/tmp、/var目錄。
這兩個命令是用來查看和改變文件、目錄屬性的,與chmod這個命令相比,chmod只是改變文件的讀寫、執行權限,更底層的屬性控制是由chattr來改變的。
如: chattr +i /etc/resolv.conf #用chattr命令防止系統中某個關鍵文件被修改:
參數:
-R :遞歸處理,將指定目錄下的所有文件及子目錄一併處理。
-v<版本編號> :設置文件或目錄版本。
-V :顯示指令執行過程。
+<屬性> : 開啓文件或目錄的該項屬性。
-<屬性> :關閉文件或目錄的該項屬性。
=<屬性> : 指定文件或目錄的該項屬性。
屬性:
a:讓文件或目錄只能追加內容。
b:不更新文件或目錄的最後存取時間。
c:將文件或目錄壓縮後存放。
d:將文件或目錄排除在傾倒操作之外。
i:不得任意更動文件或目錄。
s:保密性刪除文件或目錄。
S:即時更新文件或目錄。
u:預防意外刪除。
lsattr : 顯示chattr命令設置的文件屬性。
lsattr [-adlRvV][文件或目錄...]
參數:
-a 顯示所有文件和目錄,包括以"."爲名稱開頭字符的額外內建,現行目錄"."與上層目錄".."。
-d 顯示,目錄名稱,而非其內容。
-l 此參數目前沒有任何作用。
-R 遞歸處理,將指定目錄下的所有文件及子目錄一併處理。
-v 顯示文件或目錄版本。
-V 顯示版本信息。