1、 Linux上的文件管理類命令都有哪些,其經常使用的使用方法及其相關示例演示。node
一、 文件查看類命令cat,tac, head, tail, more, less, ls ,file:linux
-ls : list,列出指定目錄下的內容git
使用語法:ls [option]… [file]…shell
參數:-a 顯示全部文件,包括隱藏文件;安全
-A 顯示除.和..以外的全部文件;bash
-l –long,長葛市列表,即顯示文件的詳細屬性信息;app
例:-rw-r--r--. 1 root root 8957 10月 14 19:34 boot.logless
l:文件類型,-:常規文件;即f;socket
d: directory,目錄文件;工具
b: block device,塊設備文件,支持以「block」爲單位進行隨機訪問
c:character device,字符設備文件,支持以「character」爲單位進行線性訪問
major number:主設備號,用於標識設備類型,進而肯定要加載的驅動程序
minor number:次設備號,用於標識同一類型中的不一樣的設備;
8位二進制:0-255
l:symbolic link,符號連接文件;
p: pipe,命名管道;
s: socket,套接字文件;
rw-r--r--
rw-:文件屬主的權限;
r--:文件屬組的權限;
r--:其它用戶(非屬主、屬組)的權限;
1:數字表示文件被硬連接的次數;
root:文件的屬主;
root:文件的屬組;
8957:數字表示文件的大小,單位是字節;
10月 14 19:34 :文件最近一次被修改的時間;
boot.log:文件名
-h, --human-readable:對文件大小單位換算;換算後結構可能會非精確值。
-d 查看目錄自身而非其內部的文件列表;
-r reverse,逆序顯示;
-R recursive,遞歸顯示;
-cat: 正向查看文件內容
使用語法:cat [option]… [file]…
參數:-n 給顯示的文本行編號;
-E 顯示行結束符$;
例:cat -n /etc/passwd
cat –E /etc/shadow
-tac:逆向查看文件內容
使用語法:tac [OPTION]... [FILE]...
參數:-n 給顯示的文本行編號;
-E 顯示行結束符$;
例:tac -n /etc/passwd
tac –E /etc/shadow
-file:查看文件內容類型
使用語法:file [file]…
例:
[root@localhost ~]# file /etc/passwd
/etc/passwd: ASCII text
分屏查看文件內容命令:more , less
-more命令:分屏顯示文本內容,每次顯示一屏顯示完中止;
語法:more [option] file
Space鍵:顯示文本下一屏內容;
Enter鍵:顯示文本下一行內容;
b鍵:顯示文本上一屏內容;
q鍵:退出;
特色:翻屏至文件尾部自動退出
-less命令:分屏顯示文本內容,不主動退出
語法:less [option] file
Space鍵:顯示文本下一屏內容;
Enter鍵:顯示文本下一行內容;
b鍵:顯示文本上一屏內容;
q鍵:退出;
-head命令:查看文件的前n行;(默認顯示前10行)
語法:head [option] file
參數:-n 查看文件的前n行
-tail命令:查看文件的後n行:(默認顯示後10行)
語法:tail [option] file
參數:-n查看文件的後n行
-f 查看文件尾部內容結束後不退出,跟隨顯示新增的行。
二、 建立目錄、文件:
-mkdir :建立目錄;
語法:mkdir [option]… directory…
參數:-p 自動按需建立父目錄;
-m 建立目錄是給定權限;
-v verbose,顯示詳細過程;
注意:路徑基名方爲命令的做用對象;基名以前的路徑必須得存在;
例:[root@localhost ~]# mkdir -p -m 755 /tmp/mktest/test1/test
-touch : 1、用於把已存在文件的時間標籤更新爲系統當前的時間(默認方式),它們的數據將原封不動地保留下來;
2、是用來建立新的空文件。
語法:touch [option]… [file]
參數:-c 制定的文件路徑不存在時不予建立
-a 僅修改access time
-m:僅修改modify time;
-t:使用指定的日期時間,格式[[CC]YY]MMDDhhmm[.ss](access time和modify time爲指定時間,change time爲當前系統時間)
-rmdir :刪除空目錄
語法:rmdir [option]… [directory]
參數:-p 刪除目錄後,若是其父目錄爲空,則一併刪除;
-v 顯示過程
例1:如何建立/tmp/x/y1, /tmp/x/y2, /tmp/x/y1/a, /tmp/x/y1/b?
[root@localhost ~]# mkdir -pv /tmp/x/{y1/{a,b},y2}/
mkdir: created directory ‘/tmp/x’
mkdir: created directory ‘/tmp/x/y1’
mkdir: created directory ‘/tmp/x/y1/a/’
mkdir: created directory ‘/tmp/x/y1/b/’
mkdir: created directory ‘/tmp/x/y2/’
例2:如何建立a_c, a_d, b_c, b_d;
[root@localhost ~]# mkdir -v /tmp/{a,b}_{c,d}
mkdir: created directory ‘/tmp/a_c’
mkdir: created directory ‘/tmp/a_d’
mkdir: created directory ‘/tmp/b_c’
mkdir: created directory ‘/tmp/b_d’
例3:如何刪除例2中建立的目錄;
[root@localhost ~]# cd /tmp
[root@localhost tmp]# rmdir -pv {a,b}_{c,d}
rmdir: removing directory, ‘a_c’
rmdir: removing directory, ‘a_d’
rmdir: removing directory, ‘b_c’
rmdir: removing directory, ‘b_d’
三、 文件管理工具:cp 、mv 、rm
-cp 命令:複製copy
語法:單源複製:cp [OPTION]... [-T] SOURCE DEST
多源複製:cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
單源複製:cp [OPTION]... [-T] SOURCE DEST
若是DEST不存在:則事先建立此文件,並複製源文件的數據流至DEST中;
若是DEST存在:
若是DEST是非目錄文件:則覆蓋目標文件;
若是DEST是目錄文件:則先在DEST目錄下建立一個與源文件同名的文件,並複製其數據流;
多源複製:cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
若是DEST不存在:錯誤;
若是DEST存在:
若是DEST是非目錄文件:錯誤;
若是DEST是目錄文件:分別複製每一個文件至目標目錄中,並保持原名;
經常使用選項:
-i:交互式複製,即覆蓋以前提醒用戶確認;
-f:強制覆蓋目標文件;
-r, -R:遞歸複製目錄;
-d:複製符號連接文件自己,而非其指向的源文件;
-a:-dR --preserve=all, archive,用於實現歸檔;
--preserv=
mode:權限
ownership:屬主和屬組
timestamps: 時間戳
context:安全標籤
xattr:擴展屬性
links:符號連接
all:上述全部屬性
-mv 命令:移動或重命名
語法:單源複製:mv [OPTION]... [-T] SOURCE DEST(若是DEST不存在則建立,存在則覆蓋)
多源複製:mv [OPTION]... SOURCE... DIRECTORY(DEST必須爲directory)
參數:-i:交互式複製,即覆蓋前提醒用戶確認
-f:強制覆蓋目標文件
例:mv -i /data/[1-3].txt /practice #把/data目錄下三個txt文件剪切到/practice下
-rm 命令:刪除
語法:rm [option]… [file]…
參數:-i交互式刪除,即刪除前提醒用戶確認
-f 強制刪除目標文件
-r -R:遞歸處理,將制定目錄下的全部文件包括目錄一併刪除
例:rm -rf /PATH/TO/DIR
危險操做:rm -rf /*
二、使用命令行展開功能,建立/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b,在/tmp目錄下建立目錄:x_y, x_z, q_y, q_z
[root@localhost tmp]# mkdir -vp /tmp/{a1/{a,b},a2}
mkdir: created directory ‘/tmp/a1’
mkdir: created directory ‘/tmp/a1/a’
mkdir: created directory ‘/tmp/a1/b’
[root@localhost tmp]# mkdir -vp /tmp/{x,y}_{q,z}
mkdir: created directory ‘/tmp/x_q’
mkdir: created directory ‘/tmp/x_z’
mkdir: created directory ‘/tmp/y_q’
mkdir: created directory ‘/tmp/y_z’
2、文件的元數據信息有哪些,分別表示什麼含義,如何查看?如何修改文件的時間戳信息。
一、Linux文件的數據分爲兩類,一類爲數據,即文件的實際內容(數據);一類爲元數據,用來描述文件的特徵(描述數據的屬性);
二、查看文件的元數據命令:stat,以下圖例:
[root@localhost tmp]# stat /etc/shadow
File: ‘/etc/shadow’
Size: 1341 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 1195163 Links: 1
Access: (0000/----------) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:shadow_t:s0
Access: 2018-11-26 00:11:03.342000329 +0800
Modify: 2018-11-19 00:21:57.403464776 +0800
Change: 2018-11-19 00:21:57.406464776 +0800
Birth: -
解釋:文件的元數據包括:文件名(File)、大小(Size)、數據塊(Blocks)、IO塊(IO Block)、設備(Device)、節點號(Inode)、硬連接(Links)、權限(Access)、文件所屬主(Uid)、文件所屬組(Gid)、最近訪問時間(Access Time)、最近文件修改時間(Modify Time)、最近文件屬性更改時間(Change Time);
三、 修改文件的時間戳可以使用-touch 命令
-touch : 1、用於把已存在文件的時間標籤更新爲系統當前的時間(默認方式),它們的數據將原封不動地保留下來;
2、是用來建立新的空文件。
語法:touch [option]… [file]
參數:-c 指定的文件路徑不存在時不予建立
-a 僅修改access time
-m:僅修改modify time;
-t:使用指定的日期時間,格式[[CC]YY]MMDDhhmm[.ss](access time和modify time爲指定時間,change time爲當前系統時間)
例一、經過添加用戶,系統自動修改了passwd的Access Time、Modify Time、Change Time
[root@localhost tmp]# stat /etc/passwd
File: ‘/etc/passwd’
Size: 2333 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 1195160 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:passwd_file_t:s0
Access: 2018-11-25 11:06:28.278012816 +0800
Modify: 2018-11-19 00:21:57.399464775 +0800
Change: 2018-11-19 00:21:57.402464776 +0800
Birth: -
[root@localhost tmp]# useradd magedu
[root@localhost tmp]# stat /etc/passwd
File: ‘/etc/passwd’
Size: 2376 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 1195159 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:passwd_file_t:s0
Access: 2018-11-26 03:47:33.715883162 +0800
Modify: 2018-11-26 03:47:33.128883122 +0800
Change: 2018-11-26 03:47:33.131883123 +0800
Birth: -
例二、使用touch命令修改文件時間戳
[root@localhost tmp]# stat /tmp/x #修改前查看文件時間戳
File: ‘/tmp/x’
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 802h/2050d Inode: 786463 Links: 4
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2018-11-26 01:04:55.450219985 +0800
Modify: 2018-11-26 01:04:55.451219985 +0800
Change: 2018-11-26 01:04:55.451219985 +0800
Birth: -
[root@localhost tmp]# touch -a -c /tmp/x #修改文件的的最近一次訪問時間、修改時間戳
[root@localhost tmp]# stat /tmp/x #查看修改文件後的時間戳
File: ‘/tmp/x’
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 802h/2050d Inode: 786463 Links: 4
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2018-11-26 03:57:39.565924336 +0800
Modify: 2018-11-26 01:04:55.451219985 +0800
Change: 2018-11-26 03:57:39.565924336 +0800
Birth: -
[root@localhost tmp]# touch -t 1811250333.00 /tmp/x #修改文件的的最近一次修改文件屬性的時間戳
[root@localhost tmp]# stat /tmp/x #查看修改文件後的時間戳
File: ‘/tmp/x’
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 802h/2050d Inode: 786463 Links: 4
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2018-11-25 03:33:00.000000000 +0800
Modify: 2018-11-25 03:33:00.000000000 +0800
Change: 2018-11-26 04:01:37.965940538 +0800
Birth: -
例、在/tmp目錄下建立以tfile開頭,後跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
[root@localhost tmp]# touch /tmp/tfile-$(date '+%Y-%m-%d-%H-%M-%S')
例、 複製/etc目錄下全部以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
[root@localhost tmp]# mkdir /tmp/mytest1
[root@localhost tmp]# cp -r /etc/p*[^[:digit:]] /tmp/mytest1
例、 建立用戶tom,指定UID爲5001,指定家目錄爲/tmp/tom, 指定shell爲/bin/zsh, 指定基本組爲tom,附加組爲jack
[root@localhost tmp]# groupadd tom
[root@localhost tmp]# groupadd jack
[root@localhost tmp]# useradd -u 5001 -d /tmp/tom -s /bin/zsh -g tom -G jack tom
注意:當建立用戶時,指定家目錄時報「useradd: cannot set SELinux context for home directory /tmp/test」錯,可以使用如下方案解決:
如何關閉linux裏的selinux
[root@localhost ~]# setenforce 0
[root@localhost ~]# useradd -d /tmp/moonne moonne
setenforce是Linux的selinux防火牆配置命令 執行setenforce 0 表示關閉selinux防火牆。
setenforce命令是單詞set(設置)和enforce(執行)連寫,另外一個命令getenforce可查看selinux的狀態。
3、 經常使用的用戶以及文件管理命令有哪些,並演示命令以及用法。
用戶管理:
Linux中的用戶分爲兩類:管理員和普通用戶,普通用戶又分爲系統用戶和登陸用戶
每一個用戶都有惟一的用戶標識符UserID即UID,由16bits二進制的數字組成:0-65535
管理員的UID爲:0
普通用戶的UID爲:1-65535
系統用戶的UID:1-499(CentOS6),1-999(CentOS7)
登陸用戶的UID:500-60000(CentOS6),1000-60000(CentOS7)
用戶名userName與UID一一對應
用戶的相關信息可在/etc/passwd文件中查看
/etc/passwd :用戶的信息庫
[root@localhost /]# tail -3 /etc/passwd
hadoop:x:4006:4006::/home/hadoop:/bin/bash
magedu:x:4007:4007::/home/magedu:/bin/bash
tom:x:5001:5007::/tmp/tom:/bin/zsh
解釋:
name:password:UID:GID:GECOS:directory:shell
name: 用戶名
password:能夠是加密的密碼,也但是佔位符x;
UID:
GID:用戶所屬的主組的ID號;
GECOS:註釋信息
directory:用戶的家目錄;
shell:用戶的默認shell,登陸時默認shell程序;
/etc/shadow:用戶密碼
[root@localhost /]# tail -3 /etc/shadow
hadoop:!!:17853:0:99999:7:::
magedu:!!:17860:0:99999:7:::
tom:!!:17860:0:99999:7:::
用戶名:加密的密碼:最近一次修改密碼的時間:最短使用期限:最長使用期限:警告期段:過時期限:保留字段
組管理:
組:在linux 中的每一個用戶都必須有一個組,不能獨立與組外。在Linux中每一個文件有全部者、所在組、其餘組的概念。
文件所在組:當某個用建立了文件後,這個文件的所在組就是該用戶的所在組
查看文件所在組命令:ls –ahl file_Name
修改文件全部組命令:chgrp group_Name file_Name
其餘組:除文件的全部者和所在組的用戶外,系統的其餘用戶都是文件的其餘組;
組的類別1:
管理員組和普通用戶組
普通用戶組又分爲系統組和登陸組。
組的類別2:
用戶的基本組、用戶的附加組
租的類別3:
私有組:組名同用戶名,且只包含一個用戶
共有組:組內包含了多個用戶
每一個組都有惟一的組標識符GroupID即GID,由16bits二進制的數字組成:0-65635
管理員組的GID爲:0
普通用戶組的ID爲:1-65535
系統組的GID:1-499(CentOS6),1-999(CentOS7)
登陸組的GID:500-60000(CentOS6),1000-60000(CentOS7)
組名groupName與GID一一對應;
組的相關信息可在/etc/group文件中查看
/etc/group:組的信息庫
[root@localhost /]# tail -3 /etc/group
magedu:x:4007:
tom:x:5007:
jack:x:5008:tom
group_name:password:GID:user_list
user_list:該組的用戶成員;以此組爲附加組的用戶的用戶列表;
Linux用戶和組管理命令:
組管理命令:
-groupadd 命令:添加組
語法:groupadd [option]… group_Name
選項:-g GID :指定GID;默認是上一個組的GID+1;
-r :建立系統組;
-groupmod 命令:修改組屬性
語法:groupmod [option] group_Name
選項:-g GID:修改GID
-n new_name:修改組名;groupmod –n new_name old_name
-groupdel 命令:刪除組
語法:groupdel [option] group
用戶管理命令:
-useradd 命令:建立命令
語法:useradd [option] userName
選項:-u, --uid UID:指定UID;
-g, --gid GROUP:指定基本組ID,此組得事先存在;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用戶所屬的附加組,多個組之間用逗號分隔;
-c, --comment COMMENT:指明註釋信息;
-d, --home HOME_DIR:以指定的路徑爲用戶的家目錄;經過複製/etc/skel此目錄並重命名實現;指定的家目錄路徑若是事先存在,則不會爲用戶複製環境配置文件;
-s, --shell SHELL:指定用戶的默認shell,可用的全部shell列表存儲在/etc/shells文件中;
-r, --system:建立系統用戶;
l useradd -s /sbin/nologin:該用戶不能登陸,還記得咱們上面說到的系統用戶不能登陸吧?咱們能夠看到系統用戶的 shell 字段也是 /sbin/nologin
l echo $SHELL :查看當前用戶的 shell 類型
l useradd -M USERNAME:建立用戶但不建立家目錄
l useradd -mk USERNAME:建立用戶的同時建立家目錄,並複製 /etc/skel 中的內容到家目錄中。關於 /etc/skel 目錄會在下一篇 Linux 權限管理中再次講解。
l 若是用戶沒有家目錄,那麼不能切換到該用戶
注意:建立用戶時的諸多默認設定配置文件爲 etc/longin.defs
Useradd –D:顯示建立用戶的默認配置
Useradd –D 選項:修改默認選項的值;
修改的結果保存於/etc/default/useradd 文件中;
-usermod 命令:修改用戶屬性
語法:usermod [option]… userName
選項:-u, --uid UID:修改用戶的ID爲此處指定的新UID;
-g, --gid GROUP:修改用戶所屬的基本組;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用戶所屬的附加組;原來的附加組會被覆蓋;
-a, --append:與-G一同使用,用於爲用戶追加新的附加組;
-c, --comment COMMENT:修改註釋信息;
-d, --home HOME_DIR:修改用戶的家目錄;用戶原有的文件不會被轉移至新位置;
-m, --move-home:只能與-d選項一同使用,用於將原來的家目錄移動爲新的家目錄;
例:Usermod –d /tmp/newhome –m user_name
-l, --login NEW_LOGIN:修改用戶名;
-s, --shell SHELL:修改用戶的默認shell;
-L, --lock:鎖定用戶密碼;即在用戶原來的密碼字符串以前添加一個"!";
-U, --unlock:解鎖用戶的密碼;
l usermod -G -a GROUPS USERNAME:在原有附加組的基礎上追加附加組
l usermod -d PATH USERNAME:修改家目錄。修改後原先家目錄中的文件不能訪問了,由於在當前的家目錄中並不存在這些文件。
-userdel命令:刪除用戶
語法:userdel [option] userName
選項:-r:刪除用戶時一併刪除其家目錄;
例1:建立用戶gentoo,UID爲4001,基本組爲gentoo,附加組爲distro(GID爲5000)和peguin(GID爲5001);
[root@localhost ~]# useradd -u 4001 -g 1001 -G distro,peguin gentoo
[root@localhost ~]# id gentoo
uid=4001(gentoo) gid=1001(gentoo) groups=1001(gentoo),5002(distro),5001(peguin)
例2:建立用戶fedora,其註釋信息爲"Fedora Core",默認shell爲/bin/tcsh;
[root@localhost ~]# useradd -c "Fedora Core" -s /bin/tcsh fedora
[root@localhost ~]# id fedora
uid=4002(fedora) gid=4002(fedora) groups=4002(fedora)
例3:修改gentoo用戶的家目錄爲/var/tmp/gentoo;要求其原有文件仍能被用戶訪問;
[root@localhost ~]# usermod -d /var/tmp/gentoo Gentoo
例4:爲gentoo新增附加組netadmin;
[root@localhost ~]# usermod -aG netadmin gentoo
用戶密碼管理:
-passwd 命令:修改用戶的密碼
語法:passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
(1)、passwd :修改用戶本身的密碼
(2)、passwd USERNAME :修改指定用戶的密碼,但僅root由此權限
選項:-l, -u:鎖定和解鎖用戶;
-d:清除用戶密碼串;
-e DATE: 過時期限,日期;
-i DAYS:非活動期限;
-n DAYS:密碼的最短使用期限;
-x DAYS:密碼的最長使用期限;
-w DAYS:警告期限;
--stdin:設定用戶密碼爲用戶名
echo "PASSWORD" | passwd --stdin USERNAME
組密碼管理:
-gpasswd 命令:修改組密碼:
組密碼文件爲:/etc/gpasswd
語法:gpasswd [option] groupName
選項:-a USERNAME:向組中添加用戶
-d USERNAME:從組中移除用戶
其餘命令newgrp、chage、id、su:
-newgrp 命令:臨時切換指定的組爲基本組
語法:newgrp [-] [groupName]
-:會模擬用戶從新登陸以實現從新初始化其環境
-chage 命令:更改用戶密碼過時信息
語法:chage [option] userName
選項:-d:上一次更改日期
-E:帳號到期的日期,過了這天,此帳號將不可用
-W:用戶密碼到期前,提早收到警告信息的天數
-m:密碼可更改的最小天數,爲0表明任什麼時候間均可以修改密碼
-M: 密碼保持有效的最大天數
-id命令:顯示用戶的真和有效ID;
語法:id [OPTION]... [USER]
選項:-u: 僅顯示有效的UID;
-g: 僅顯示用戶的基本組ID;
-G:僅顯示用戶所屬的全部組的ID;
-n: 顯示名字而非ID;
-su命令:登陸式切換用戶:會經過讀取目標用戶的配置文件來從新初始化
語法:su - USERNAME
su -l USERNAME
非登陸式切換:不會讀取目標用戶的配置文件進行初始化
su USERNAME
注意:管理員可無密碼切換至其它任何用戶;
-c 'COMMAND':僅以指定用戶的身份運行此處指定的命令;
文件權限管理命令
-chmod用來變動文件或目錄的權限。在UNIX系統家族裏,文件或目錄權限的控制分別以讀取、寫入、執行3種通常權限來區分,另有3種特殊權限可供運用。用戶可使用chmod指令去變動文件與目錄的權限,設置方式採用文字或數字代號皆可。符號鏈接的權限沒法變動,若是用戶對符號鏈接修改權限,其改變會做用在被鏈接的原始文件
語法:chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
文件的三類用戶:u :屬主
g :屬組
o :其餘
a :全部
(1) chmod [OPTION]... MODE[,MODE]... FILE...
MODE表示法:
賦權表示法:直接操做一類用戶的全部權限位rwx;
u= chmod u=rwx,g=rw,o=r f01
g=
o=
a=
受權表示法:直接操做一類用戶的一個權限位r,w,x;
u+, u- chmod u+x,g+w f01
g+, g-
o+, o-
a+, a-
(2) chmod [OPTION]... OCTAL-MODE FILE..
chmod 764 f01.
(3) chmod [OPTION]... --reference=RFILE FILE...
選項:-R, --recursive:遞歸修改
注意:用戶僅能修改屬主爲本身的那些文件的權限;
從屬關係管理命令:chown,chgrp
-chown 命令: 改變某個文件或目錄的全部者和所屬的組,該命令能夠向某個用戶受權,使該用戶變成指定文件的全部者或者改變文件所屬的組。用戶能夠是用戶或者是用戶D,用戶組能夠是組名或組id。文件名可使由空格分開的文件列表,在文件名中能夠包含通配符。
語法:chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
選項:-R:遞歸修改
例:chown -R liu /usr/meng #將/usr/meng下的目錄及其子目錄、文件的全部者改成liu
chown user:market f01 #把文件f01給user,添加到market組
chown :market f01 #把文件f01給user,添加到market組
-chgrp 命令:用來改變文件或目錄所屬的用戶組。該命令用來改變指定文件所屬的用戶組。其中,組名能夠是用戶組的id,也能夠是用戶組的組名。文件名能夠 是由空格分開的要改變屬組的文件列表,也能夠是由通配符描述的文件集合。若是用戶不是該文件的文件主或超級用戶(root),則不能改變該文件的組。
語法:chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
注意:僅管理員可修改文件的屬主和屬組
參數:-R或——recursive:遞歸處理,將指令目錄下的全部文件及子目錄一併處理;
-v或——verbose:顯示指令執行過程;
--reference=<參考文件或目錄>:把指定文件或目錄的所屬羣組所有設成和參考文件或目錄的所屬羣組相同;
例:chgrp –R market /usr/meng #將/usr/meng及其子目錄下的文件的組修改成market
思考:用戶對目錄有寫權限,但對目錄下的文件沒有寫權限時,可否修改此文件內容?可否刪除此文件?
回答:不能修改此文件,但能刪除此文件
反向掩碼:
-umask 命令:文件的權限反向掩碼,遮罩碼;
文件的權限反向掩碼默認爲:666-umask
目錄的權限反向掩碼默認爲:777-umask
注意:之因此文件用666去減,表示文件默認不能擁有執行權限;若是減得的結果中有執行權限,則須要將其加1;
例:若反向掩碼umask爲: 023
則建立的文件的權限默認爲:666-023=644
建立的目錄的權限默認爲:777-023=754
umask:查看當前umask
[root@localhost /]# umask
0022
umask MASK: 設置umask
root@localhost /]# umask 0020
[root@localhost /]# touch f01
[root@localhost /]# ls –l
-rw-r--rw-. 1 root root 0 Nov 26 06:05 f01
注意:此類設定僅對當前shell進程有效;
練習示例:
一、新建系統組mariadb, 新建系統用戶mariadb, 屬於mariadb組,要求其沒有家目錄,且shell爲/sbin/nologin;嘗試root切換至用戶,查看其命令提示符;
[root@localhost /]# groupadd -g 5004 mariadb
[root@localhost /]# useradd -g 5004 -s /sbin/nologin -M mariadb
二、新建GID爲5005的組mageedu,新建用戶gentoo,要求其家目錄爲/users/gentoo,密碼同用戶名;
[root@localhost /]# useradd user3
[root@localhost /]# echo 「user3」 | passwd --stdin user3
三、新建用戶fedora,其家目錄爲/users/fedora,密碼同用戶名;
[root@localhost /]# useradd –d /users/fedora fedora
[root@localhost /]# echo 「fedora」 | passwd --stdin fedora
四、新建用戶www, 其家目錄爲/users/www;刪除www用戶,但保留其家目錄;
[root@localhost /]# useradd -d /users/www www
[root@localhost /]# userdel -r www
五、爲用戶gentoo和fedora新增附加組mageedu;
[root@localhost home]# usermod -G mageedu gentoo
[root@localhost home]# usermod -G mageedu fedora
六、複製目錄/var/log至/tmp/目錄,修改/tmp/log及其內部的全部文件的屬組爲mageedu,並讓屬組對目錄自己擁有寫權限;
[root@localhost home]# chgrp -R mageedu /tmp/log
[root@localhost home]# chmod g+x /tmp/log