Linux中關於useradd、chmod、chown、getfacl、setfact等權限設置
文章目錄:
一、Linux用戶管理
1、用戶(user)、用戶組(group)、其他用戶概念(other)
1. 理解Linux的單用戶多任務
,多用戶多任務
概念
理解Linux的
單用戶多任務
,多用戶多任務
概念
Linux 是一個多用戶
、多任務
的操作系統;我們應該瞭解單用戶多任務
和多用戶多任務
的概念;
- Linux 的
單用戶
、多任務
單用戶
、多任務
:
比如我們以mulaohu用戶爲例。mulaohu登錄系統,進入系後她要打開gedit來寫文檔,但在寫文檔的過程中,她感覺少點音樂,所以又打開xmms來點音樂;當然聽點音樂還不行,MSN還得打開,此時就是一個mulaohu用戶,同時在進行多項任務,就是單用戶多任務
;這樣說來就有點簡單了,一個mulaohu用戶,爲了完成工作,執行了幾個任務;當然mulaohu在工作的同時,其它的用戶還能以遠程登錄過來,也能做其它的工作,這就是下面要將的多用戶、多任務。
- Linux 的
多用戶
、多任務
多用戶
、多任務
:
有時可能是很多用戶同時用同一個系統,但並不所有的用戶都一定都要做同一件事,所以這就有多用戶多任務之說; 舉個例子,比如LinuxSir.Org服務器,上面有FTP用戶、系統管理員、web用戶、常規普通用戶等,在同一時刻,可能有的弟兄正在訪問論壇;有的可能在上傳軟件包管理子站,比如luma或Yuking兄在管理他們的主頁系統和FTP;在與此同時,可能還會有系統管理員在維護系統;瀏覽主頁的用的是nobody用戶,大家都用同一個,而上傳軟件包用的是FTP用戶;管理員的對系統的維護或查看,可能用的是普通帳號或超級權限root帳號;不同用戶所具有的權限也不同,要完成不同的任務得需要不同的用戶,也可以說不同的用戶,可能完成的工作也不一樣; 值得注意的是:多用戶多任務並不是大家同時擠到一接在一臺機器的的鍵盤和顯示器前來操作機器,多用戶可能通過遠程登錄來進行,比如對服務器的遠程控制,只要有用戶權限任何人都是可以上去操作或訪問的。
- 用戶的角色區分
用戶在系統中是分角色的,在Linux系統中,由於角色不同,權限和所完成的任務也不同;值得注意的是用戶的角色是通過
UID(User Identity
)和識別的,特別是UID;在系統管理中,系統管理員一定要堅守UID唯一的特性;
root 用戶
:系統唯一,是真實的,可以登錄系統,可以操作系統任何文件和命令,擁有最高權限;
虛擬用戶
:這類用戶也被稱之爲僞用戶或假用戶,與真實用戶區分開來,這類用戶不具有登錄系統的能力,但卻是系統運行不可缺少的用戶,比如bin、daemon、adm、ftp、mail等
;這類用戶都系統自身擁有的
,而非後來添加的,當然我們也可以添加虛擬用戶;
(下面我使用重啓命令,其實reboot就是一個虛擬用戶)
普通真實用戶
:這類用戶能登錄系統,但只能操作自己家目錄的內容;權限有限;這類用戶都是系統管理員自行添加的;
多用戶操作
系統的安全
多用戶系統從事實來說對系統管理更爲方便。從安全角度來說,多用戶管理的系統更爲安全,比如mulaohu用戶下的某個文件不想讓其它用戶看到,只是設置一下文件的權限,只有mulaohu一個用戶可讀可寫可編輯就行了,這樣一來只有mulaohu一個用戶可以對其私有文件進行操作,Linux在多用戶下表現最佳,Linux能很好的保護每個用戶的安全,但我們也得學會Linux纔是,再安全的系統,如果沒有安全意識的管理員或管理技術,這樣的系統也不是安全的。
從服務器角度來說,多用戶的下的系統安全性也是最爲重要的,我們常用的Windows操作系統,它在系紡權限管理的能力只能說是一般般,根本沒有沒有辦法和Linux或Unix 類系統相比。
2. 用戶(user)和用戶組(group)概念;
1、用戶(user)的概念;
通過前面對Linux
多用戶的理解,我們明白Linux
是真正意義上的多用戶操作系統,所以我們能在Linux系統中建若干用戶(user)。比如我們的同事想用我的計算機,但我不想讓他用我的用戶名登錄,因爲我的用戶名下有不想讓別人看到的資料和信息(也就是隱私內容)這時我就可以給他建一個新的用戶名,讓他用我所開的用戶名去折騰,這從計算機安全角度來說是符合操作規則的;
當然用戶(user)的概念理解還不僅僅於此,在Linux系統中還有一些用戶是用來完成特定任務的,比如nobody和ftp 等,我們訪問LinuxSir.Org
的網頁程序,就是nobody用戶;我們匿名訪問ftp
時,會用到用戶ftp或nobody ;如果您想了解Linux系統的一些帳號,請查看
/etc/passwd ;
2、用戶組(group)的概念;
用戶組(group)就是具有相同特徵的用戶(user)
的集合體;比如有時我們要讓多個用戶具有相同的權限,比如查看、修改某一文件或執行某個命令,這時我們需要用戶組,我們把用戶都定義到同一用戶組,我們通
過修改文件或目錄的權限,讓用戶組具有一定的操作權限,這樣用戶組下的用戶對該文件或目錄都具有相同的權限,這是我們通過定義組和修改文件的權限來實現
的;
舉
例:我們爲了讓一些用戶有權限查看某一文檔,比如是一個時間表,而編寫時間表的人要具有讀寫執行的權限,我們想讓一些用戶知道這個時間表的內容,而不讓他
們修改,所以我們可以把這些用戶都劃到一個組,然後來修改這個文件的權限,讓用戶組可讀,這樣用戶組下面的每個用戶都是可讀的;
用戶和用戶組的對應關係是:一對一、多對一、一對多或多對多;
一對一:某個用戶可以是某個組的唯一成員;
多對一:多個用戶可以是某個唯一的組的成員,不歸屬其它用戶組;比如beinan和linuxsir兩個用戶只歸屬於beinan用戶組;
一對多:某個用戶可以是多個用戶組的成員;比如beinan可以是root組成員,也可以是linuxsir用戶組成員,還可以是adm用戶組成員;
多對多:多個用戶對應多個用戶組,並且幾個用戶可以是歸屬相同的組;其實多對多的關係是前面三條的擴展;理解了上面的三條,這條也能理解;
三、用戶(user)和用戶組(group)相關的配置文件、命令或目錄;
1、與用戶(user)和用戶組(group)相關的配置文件;
1)與用戶(user)相關的配置文件;
/etc/passwd 注:用戶(user)的配置文件;
/etc/shadow 注:用戶(user)影子口令文件;
2)與用戶組(group)相關的配置文件;
/etc/group 注:用戶組(group)配置文件;
/etc/gshadow 注:用戶組(group)的影子文件;
2、管理用戶(user)和用戶組(group)的相關工具或命令;
1)管理用戶(user)的工具或命令;
useradd 注:添加用戶
adduser 注:添加用戶
passwd 注:爲用戶設置密碼
usermod 注:修改用戶命令,可以通過usermod 來修改登錄名、用戶的家目錄等等;
pwcov 注:同步用戶從/etc/passwd 到/etc/shadow
pwck 注:pwck是校驗用戶配置文件/etc/passwd
和/etc/shadow
文件內容是否合法或完整;
pwunconv 注:是pwcov 的立逆向操作,是從/etc/shadow和 /etc/passwd 創建/etc/passwd ,然後會刪除
/etc/shadow 文件;
finger 注:查看用戶信息工具
id 注:查看用戶的UID、GID及所歸屬的用戶組
chfn 注:更改用戶信息工具
su 注:用戶切換工具
sudo 注:sudo 是通過另一個用戶來執行命令(execute
a command as another user),su 是用來切換用戶,然後通過切換到的用戶來完成相應的任務,但sudo
能後面直接執行命令,比如sudo
不需要root
密碼就可以執行root
賦與的執行只有root才能執行相應的命令;但得通過visudo
來編輯/etc/sudoers來實現;
visudo 注:visodo 是編輯 /etc/sudoers 的命令;也可以不用這個命令,直接用vi
來編輯
/etc/sudoers 的效果是一樣的;
sudoedit 注:和sudo 功能差不多;
2)管理用戶組(group)的工具或命令;
groupadd 注:添加用戶組;
groupdel 注:刪除用戶組;
groupmod 注:修改用戶組信息
groups 注:顯示用戶所屬的用戶組
grpck
grpconv 注:通過/etc/group和/etc/gshadow 的文件內容來同步或創建/etc/gshadow
,如果/etc/gshadow
不存在則創建;
grpunconv 注:通過/etc/group 和/etc/gshadow 文件內容來同步或創建/etc/group
,然後刪除gshadow文件;
3、/etc/skel 目錄;
/etc/skel目錄一般是存放用戶啓動文件的目錄,這個目錄是由root權限控制,當我們添加用戶時,這個目錄下的文件自動複製到新添加的用戶的家目錄下;/etc/skel
目錄下的文件都是隱藏文件,也就是類似.file格式的;我們可通過修改、添加、刪除/etc/skel目錄下的文件,來爲用戶提供一個統一、標準的、默認的用戶環境;
[root@localhost beinan]# ls -la /etc/skel/
總用量
92
drwxr-xr-x 3 root root 4096 8月 11 23:32 .
drwxr-xr-x 115 root root 12288 10月 14 13:44 …
-rw-r–r-- 1 root root 24 5月 11 00:15 .bash_logout
-rw-r–r-- 1 root root 191 5月 11 00:15 .bash_profile
-rw-r–r-- 1 root root 124 5月 11 00:15 .bashrc
-rw-r–r-- 1 root root 5619 2005-03-08 .canna
-rw-r–r-- 1 root root 438 5月 18 15:23 .emacs
-rw-r–r-- 1 root root 120 5月 23 05:18 .gtkrc
drwxr-xr-x 3 root root 4096 8月 11 23:16 .kde
-rw-r–r-- 1 root root 658 2005-01-17 .zshrc
/etc/skel 目錄下的文件,一般是我們用useradd 和adduser 命令添加用戶(user)時,系統自動複製到新添加用戶(user)的家目錄下;如果我們通過修改
/etc/passwd 來添加用戶時,我們可以自己創建用戶的家目錄,然後把/etc/skel
下的文件複製到用戶的家目錄下,然後要用chown
來改變新用戶家目錄的屬主;
4、/etc/login.defs 配置文件;
/etc/login.defs 文件是當創建用戶時的一些規劃,比如創建用戶時,是否需要家目錄,UID和GID的範圍;用戶的期限等等,這個文件是可以通過root來定義的;
比如Fedora
的
/etc/logins.defs 文件內容;
# *REQUIRED*
# Directory where mailboxes reside, _or_ name of file,
relative to the
# home directory. If you _do_ define both, MAIL_DIR takes
precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail 注:創建用戶時,要在目錄/var/spool/mail中創建一個用戶mail文件;
#MAIL_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be
used.
# PASS_MIN_DAYS Minimum number of days allowed between
password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a
password expires.
#
PASS_MAX_DAYS 99999 注:用戶的密碼不過期最多的天數;
PASS_MIN_DAYS 0 注:密碼修改之間最小的天數;
PASS_MIN_LEN 5 注:密碼最小長度;
PASS_WARN_AGE 7 注:
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 500 注:最小UID爲500 ,也就是說添加用戶時,UID
是從500開始的;
UID_MAX 60000 注:最大UID爲60000;
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 500 注:GID 是從500開始;
GID_MAX 60000
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
#
# If useradd should create home directories for users by
default
# On RH systems, we do. This option is ORed with the -m
flag on
# useradd command line.
#
CREATE_HOME yes 注:是否創用戶家目錄,要求創建;
5、/etc/default/useradd 文件;
通過useradd
添加用戶時的規則文件;
# useradd defaults file
GROUP=100
HOME=/home 注:把用戶的家目錄建在/home中;
INACTIVE=-1 注:是否啓用帳號過期停權,-1表示不啓用;
EXPIRE= 注:帳號終止日期,不設置表示不啓用;
SHELL=/bin/bash 注:所用SHELL的類型;
SKEL=/etc/skel 注: 默認添加用戶的目錄默認文件存放位置;也就是說,當我們用adduser添加用戶時,用戶家目錄下的文件,都是從這個目錄中複製過去的;
-
超級用戶
: root 具有操作系統的一切權限UID 值爲0
-
普通用戶
:普通用戶具有操作系統有限的權限,UID值 500 -- 6000
-
僞用戶(虛擬用戶)
:是爲了方便系統管理
,滿足相應的系統進程文件屬主
的要求,僞用戶不能登錄系統,UID值 1 -- 499
用戶管理文件:passwd
文件位置: /etc/passwd
可以通過
more /etc/passwd
查看內容
在此文件中,只定義帳號,不定義口令;
文件中每行定義一個用戶,分七個部分:
- 帳號名稱:root
- 用戶密碼:x
用戶
標識碼(用戶ID):0組
標識碼(用戶組ID):0- 用戶相關信息:admin
- 用戶家目錄:/root
- 用戶環境:/bin/bash
用戶口令文件:shadow
文件位置: /etc/passwdcat /etc/shadow
可以通過
more /etc/shadow
命令查看內容
(冒號之間沒有內容的,表示爲空)
此文件只有root用戶能訪問,分九個部分:
用戶名:root
口令:存放加密口令
,如果第一個字符是!
,表示該用戶不能登錄
最後一次修改時間:
最大時間間隔:0 可以隨時改變
最小時間間隔:99999 表示永遠不過期
警告時間:1周
不活動時間:
失效時間:
用戶帳號管理
創建用戶
的兩種方式:
- 手工創建用戶
- 命令創建用戶
手工創建用戶
1.在/etc/passwd中添加一條記錄
2.創建用戶主目錄
3.在用戶主目錄中設置默認的配置文件
4.設置用戶初始口令
命令創建用戶
useradd 或者 adduser(man useradd)
-u -g -G -d -s -c -e -k -m -M -r
用戶帳號的維護
useradd username 創建用戶
passwd username 設置用戶密碼
注意:沒有設置密碼的用戶不能登錄
userdel username 刪除用戶
usermod -l newName username 修改登錄名
usermod -L username 鎖定用戶
usermod -U username 解鎖用戶
passwd -l
passwd -u
passwd -s
用戶組管理
用戶組分兩類:
私有組:
當在創建一個新用戶user時,若沒有指定他所屬於的組,Linux就建立一個和該用戶同名的私有組
標準組:
標準組可以容納多個用戶,若使用標準組,在創建一個新用戶時,就應該指定該用戶所屬於的組
用戶組的管理文件:group /etc/group
分爲四個部分:
組名:用戶登錄時所在的組名
組口令:一般不使用
組標識碼(GID):
組內用戶列表:屬於改組的所有用戶列表
添加用戶組
useradd username (默認建立username用戶組)
groupadd 組帳號名稱
修改組名
groupmod -n newName groupName
刪除組帳號
groupdel 組帳號名稱
注意:刪除的帳號必須存在,且不能是某個用戶的私有組
添加用戶到組
gpasswd -a userName groupName
從組中刪除用戶
gpasswd -d userName groupName
查看某個用戶屬於哪個組
groups userName
查看某個組有哪些用戶
tail 5 /etc/group 最後一行
查看一個用戶的UID和GID
id [options] userName eg: id bruce
id -g userName 只顯示GID
id -G userName 顯示所有組
id -u userName 只顯示UID
查看用戶的相關信息,包括用戶的主目錄,啓動shell,用戶名等
finger [options] userName eg: finger bruce
finger -l userName
finger -s userName
變化用戶身份
su userName
說明:從管理員到普通用戶不用使用密碼;從普通用戶到其他用戶需要使用密碼
這樣,至改變用戶身份,環境變量不變;
su -userName
完全轉變,包括身份和環境變量
只允許root用戶登錄
可以在/etc/目錄下建立一個名爲nologin的文件
touch /etc/nologin
解除方法,刪除nologin文件即可
rm -rf /etc/nologin
二、用戶的權限管理 chmod
基本規則
使用 ll 命令查看文件時,能看到如下信息在首列
drwxrwxrwx
第一個字母:代表文件類型
第2~4字符:表示當前用戶的權限
第5~7字符:表示當前用戶組權限
第8~10字符:表示其他用戶的權限
d:目錄
r[4]:讀權限 w[2]:寫權限 x[1]:可執行權限
chmod命令
a:所有權限/所有用戶
u:用戶
g:用戶組
o:其他用戶
+:加上權限
-:減去權限
=:等於權限
eg:給文件file.txt加上可執行權限
chmod a+x file.txt
八進制的數據表示權限 0 1 2 3 4 5 6 7
0:沒有任何權限
1:x
2:w
3:xw
4:r
5:rx
6:rw
7:rwx
eg: 給文件一個755權限
chmod 755 file.txt
文件/目錄的所屬用戶和所屬用戶組
修改目錄下所有文件、所有子文件、文件夾的權限
chmod -R 755 folder
修改文件的所屬用戶
chown userName file
修改目錄下所有文件、所有子文件、文件夾的所有用戶
chown -R userName folder
修改文件的所屬用戶組
chgrp groupName file
修改目錄下所有文件、所有子文件、文件夾的所有用戶組
chgrp -R userName folder
同時修改文件/目錄的用戶和用戶組
chown -R userName.groupName file/folder
新建文件/目錄的默認權限
設置文件的默認生成掩碼,新建文件/目錄的默認權限
umask nnn
eg: umask 444
目錄的默認權限:777 - 444 = 333 dr-xr-xr-x
文件的默認權限:777 - 444 -111 = 222 -w–w--w-
查看主機名和修改主機名
用戶名@主機名
打開一個終端窗口,字命令提示符中可以看到,@符號之前顯示的是當前的登錄用戶,@符號之後顯示的是主機名稱,如下所示:(shl:用戶名, server:是主機名稱)
- 查看主機名的方法:
- hostname
或- uname -n
- 臨時修改主機名稱
sudo hostname new_name
例如:下面通過sudo hostname hello 把主機名從server改成hello,新主機名可以是任何合法的字符串表示,但是這種方式修改主機名並不保存在系統中,重啓系統後主機名將恢復爲原來的主機名稱, 因此只是臨時修改,
3. 永久修改主機名
主機名存放在 /etc/hostname
文件中,修改主機名時,編輯hostname文件,在文件中輸入新的主機名並保存該文件即可。在終端中按照以下步驟操作:
su
需要root權限(然後輸入密碼)
echo “new_hostname” > /etc/hostname
(將上面的new_hostname換成你想修改的新用戶名即可)
從上面可以看出,雖然我們已經臨時將主機改成hello了,但時/etc/hostname文件中存放的還是之前的主機名server
有些人說還需要修改/etc/hosts文件:
修改命令:
sudo vi /etc/hosts
記得要加管理員權限,這都是系統的文件,一般用戶是沒有權限進行修改的
(我修改了一下,當然你也可以不修改,後面我會查詢一下這個hosts文件的作用,存放的是什麼配置信息!)
查詢有關hosts配置文件的介紹
重啓系統後,用hostname查看主機名有沒有修改成功,通過修改hostname文件,每次重啓後都會從hostname文件讀取新的主機名,實現永久修改。
2.1 創建用戶
Linux創建用戶有兩種方式:
方式一:
adduser
範式二:useradd
(常用)
二者的區別:
adduser: 會自動爲創建的用戶指定主目錄、系統shell版本,會在創建時輸入用戶密碼。
useradd:需要使用參數選項指定上述基本設置,如果不使用任何參數,則創建的用戶無密碼、無主目錄、沒有指定shell版本。
2.1.1 用adduser創建用戶
例如:
adduser使用:
sudo adduser tangx
創建一個叫tangx的用戶,密碼可以自己設置,後面的可以選擇跳過,用默認
用more /etc/passwd
可以查看,已經創建成功
用創建的用戶登錄一下,已經創建成功,但是有些權限普通用戶是沒有的
這樣在創建用戶名時,就創建了用戶的主目錄
以及密碼
。默認情況下:
adduser在創建用戶時會主動調用 /etc/adduser.conf;
在創建用戶主目錄時默認在/home下,而且創建爲 /home/用戶名
如果主目錄已經存在,就不再創建,但是此主目錄雖然作爲新用戶的主目錄,而且默認登錄時會進入這個目錄下,但是這個目錄並不是屬於新用戶,當使用userdel刪除新用戶時,並不會刪除這個主目錄,因爲這個主目錄在創建前已經存在且並不屬於這個用戶。
爲用戶指定shell版本爲:/bin/bash
因此常用參數選項爲(參數爲雙下劃線
):
序號 | 參數 | 參數功能 |
---|---|---|
(1) | –home | 指定創建主目錄的路徑,默認是在/home目錄下創建用戶名同名的目錄,這裏可以指定;如果主目錄同名目錄存在,則不再創建,僅在登錄時進入主目錄。 |
(2) | –quiet | 即只打印警告和錯誤信息,忽略其他信息。 |
(3) | –debug | 定位錯誤信息。 |
(4) | –conf | 在創建用戶時使用指定的configuration文件。 |
(5) | –force-badname: | 默認在創建用戶時會進行/etc/adduser.conf中的正則表達式檢查用戶名是否合法,如果想使用弱檢查,則使用這個選項,如果不想檢查,可以將/etc/adduser.conf中相關選項屏蔽。如: |
添加txin用戶如下
sudo useradd -d /home/mosheng/work2/project/shliang/tx txin
刪除用戶:
sudo userdel 用戶名
sudo userdel -r 用戶名
常用的選項是 -r,它的作用是把用戶的主目錄一起刪除。
此時用more /etc/passed
查看已經沒有用戶txin的信息了
3、刪除用戶
mosheng:mosheng (這種一般就是前面的是用戶名,後面的是用戶組,二者的名字一致而已)
查看用戶的命令:
cat /etc/passwd
是,你會發現,在使用上面的 cat 命令所打印出來的東西太雜亂了,於是網上找到下面的這個命令:
#對於 cat /etc/passwd 的替換(但是這個命令太長,並不實用)
cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more
查看用戶列表
查看用戶組的命令:
cat /etc/group
查看當前活躍的用戶列表的命令:
w
(小寫的w)
修改用戶名和密碼
1、修改用戶名
2、修改用戶密碼
3、用戶密碼管理
二、用戶權限管理
1、chmod設置讀、寫、執行權限
在root用戶登錄的情況,賦予opt目錄給liuhai這個用戶權限 示例代碼:
將目錄/opt 及其下面的所有文件、子目錄的文件主改成 liuhai
chown -R liuhai:liuhai /opt
#給目錄opt設置權限
chmod 760 /opt
chown 命令
語法
chown(選項)(參數)
選項
-c或——changes:效果類似“-v”參數,但僅回報更改的部分;
-f或–quite或——silent:不顯示錯誤信息;
-h或–no-dereference:只對符號連接的文件作修改,而不更改其他任何相關文件;
-R或——recursive:遞歸處理,將指定目錄下的所有文件及子目錄一併處理;
-v或——version:顯示指令執行過程;
–dereference:效果和“-h”參數相同;
–help:在線幫助;
–reference=<參考文件或目錄>:把指定文件或目錄的擁有者與所屬羣組全部設成和參考文件或目錄的擁有者與所屬羣組相同;
–version:顯示版本信息。
參數
用戶:組:指定所有者和所屬工作組。當省略“:組”,僅改變文件所有者;
文件:指定要改變所有者和工作組的文件列表。支持多個文件和目標,支持shell通配符。
** 實例 **
將目錄/opt 及其下面的所有文件、子目錄的文件主改成 liuhai
chown -R liuhai:liuhai /opt
chmod命令
Linux/Unix 的文件調用權限分爲三級 : 文件擁有者、羣組、其他。利用 chmod 可以藉以控制文件如何被他人所調用。
使用權限 : 所有使用者
語法
chmod [-cfvR] [–help] [–version] mode file…
參數說明
mode : 權限設定字串,格式如下 :
[ugoa…][[±=][rwxX]…][,…]
其中:
u 表示該文件的擁有者,g 表示與該文件的擁有者屬於同一個羣體(group)者,o 表示其他以外的人,a 表示這三者皆是。
‘+’ 表示增加權限、’-’ 表示取消權限、’=’ 表示唯一設定權限。
r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示只有當該文件是個子目錄或者該文件已經被設定過爲可執行。
其他參數說明:
-c : 若該文件權限確實已經更改,才顯示其更改動作
-f : 若該文件權限無法被更改也不要顯示錯誤訊息
-v : 顯示權限變更的詳細資料
-R : 對目前目錄下的所有文件與子目錄進行相同的權限變更(即以遞迴的方式逐個變更)
–help : 顯示輔助說明
–version : 顯示版本
實例
將文件 file1.txt 設爲所有人皆可讀取 :
chmod ugo+r file1.txt
將文件 file1.txt 設爲所有人皆可讀取 :
chmod a+r file1.txt
將文件 file1.txt 與 file2.txt 設爲該文件擁有者,與其所屬同一個羣體者可寫入,但其他以外的人則不可寫入 :
chmod ug+w,o-w file1.txt file2.txt
將 ex1.py 設定爲只有該文件擁有者可以執行 :
chmod u+x ex1.py
將目前目錄下的所有文件與子目錄皆設爲任何人可讀取 :
chmod -R a+r *
此外chmod也可以用數字來表示權限如 :
chmod 777 file
語法爲:
chmod abc file
其中a,b,c各爲一個數字,分別表示User、Group、及Other的權限。 r=4,w=2,x=1 若要rwx屬性則4+2+1=7; 若要rw-屬性則4+2=6; 若要r-x屬性則4+1=5。
chmod a=rwx file
和
chmod 777 file
效果相同
chmod ug=rwx,o=x file
和
chmod 771 file
效果相同
若用chmod 4755 filename可使此程序具有root的權限
2、chown設置文案擁有權限
三、setfacl
setfacl命令可以用來細分linux下的文件權限。
chmod命令可以把文件權限分爲u,g,o三個組,而setfacl可以對每一個文件或目錄設置更精確的文件權限。
換句話說,setfacl可以更精確的控制權限的分配。
比如:讓某一個用戶對某一個文件具有某種權限。
這種獨立於傳統的u,g,o的rwx權限之外的具體權限設置叫ACL(Access Control List)
ACL可以針對單一用戶、單一文件或目錄來進行r,w,x的權限控制,對於需要特殊權限的使用狀況有一定幫助。
如,某一個文件,不讓單一的某個用戶訪問。
setfacl – 設定文件訪問控制列表
用法: setfacl [-bkndRLP] { -m|-M|-x|-X … } file …
參數 | 參數全稱 | 參數功能 |
---|---|---|
-m | –modify=acl | 更改文件的訪問控制列表 |
-M | –modify-file=file | 從文件讀取訪問控制列表條目更改 |
-x | –remove=acl | 根據文件中訪問控制列表移除條目 |
-X | –remove-file=file | 從文件讀取訪問控制列表條目並刪除 |
-b | –remove-all | 刪除所有擴展訪問控制列表條目 |
-k | –remove-default | 移除默認訪問控制列表 |
空 | –set=acl | 設定替換當前的文件訪問控制列表 |
空 | –set-file=file | 從文件中讀取訪問控制列表條目設定 |
空 | –mask | 重新計算有效權限掩碼 |
-n | –no-mask | 不重新計算有效權限掩碼 |
-d | –default | 應用到默認訪問控制列表的操作 |
-R | –recursive | 遞歸操作子目錄 |
-L | –logical | 依照系統邏輯,跟隨符號鏈接 |
-P | –physical | 依照自然邏輯,不跟隨符號鏈接 |
空 | –restore=file | 恢復訪問控制列表,和“getfacl -R”作用相反 |
空 | –test 測試模式, | 並不真正修改訪問控制列表屬性 |
-v | –version | 顯示版本並退出 |
-h | –help | 顯示本幫助信息 |
更過詳細內容可以參考
sudo setfacl -m u:xl:rwx ffmpeg-4.1.tar.bz2
給用戶xl賦予對ffmpeg-4.1.tar.bz2文件的rwx權限
Reference:
1、https://blog.csdn.net/boybruce/article/details/17198601