1、Linux上的文件管理類命令
(1)ls 顯示文件
ls [OPTION]… [FILE]…
-a 顯示所有文件
-A:顯示除.和..之外的所有文件
-l:顯示文件的詳細屬性信息 ,也可以用ll來表示
-h:對文件大小進行單位換算,可能影響精度
-d:查看目錄本身而非其內(nèi)部的文件
–S: 按從大到小排序
-r:逆序顯示文件
-R:遞歸顯示文件
-X 按類別顯示文件
示例:ll -ah /–詳細顯示根目錄下的所有文件(包括隱藏文件)
ll -dh /etc–詳細顯示/etc目錄本身
ll -hv /–倒序顯示/目錄下所有文件(包括隱藏文件)
ls -R /etc –遞歸顯示/etc下所有文件
l. 只顯示隱藏文件
ls -d */ 只顯示當前目錄所有子目錄
ls */ 顯示當前文件目錄及目錄下的文件
(2)mkdir:創(chuàng)建目錄
mkdir [OPTION]… DIRECTORY…
-p:自動按需創(chuàng)建父目錄
-m:創(chuàng)建目錄時給定權(quán)限
示例:mkdir -p /data/A/B –在/data目錄下遞歸創(chuàng)建date/A/B三個目錄
(3) rmdir:刪除目錄只能刪除空目錄
rmdir [OPTION]… DIRECTORY…
-p:刪除目錄后如果其父目錄為空,則一并刪除
示例:rmdir -p /data/test/A –刪除A目錄后,test目錄為空,一并刪除
(4)cd:切換目錄
示例:cd ..:切換到上級目錄
cd ~:切換回自己的家目錄
cd -:在上一次目錄與當前目錄直接來回切換
(5)pwd:顯示當前目錄
(6)cp:復(fù)制
單源復(fù)制:cp [OPTION]… [-T] SOURCE DEST(如果DEST不存在則創(chuàng)建,存在則覆蓋)
多源復(fù)制:cp [OPTION]… SOURCE… DIRECTORY(DEST必須為directory)
-i:交互式復(fù)制,即覆蓋前提醒用戶確認(默認)
-a:保留原文件屬性的前提下復(fù)制文件,支持目錄復(fù)制,備份常用選項
-f:強制覆蓋目標文件
-r,-R:遞歸復(fù)制目錄
–backup=numbered 選項會創(chuàng)建一個在文件名末尾用數(shù)字標記(~)的備份文件
-u 只覆蓋最新文件
示例:cp -f /data/[1-3].txt /data/test test必須為目錄,把三個文件一起復(fù)制到test中
cp -a /data /practice 把data目錄及目錄下的內(nèi)容一起復(fù)制到practice中
(7)mv:剪切
單源復(fù)制:mv [OPTION]… [-T] SOURCE DEST(如果DEST不存在則創(chuàng)建,存在則覆蓋)
多源復(fù)制:mv [OPTION]… SOURCE… DIRECTORY(DEST必須為directory)
-i:交互式復(fù)制,即覆蓋前提醒用戶確認
-f:強制覆蓋目標文件
-u :若目標文件已經(jīng)存在,且 source 比較新,才會更新(update)
-t : 即指定mv的目標目錄,該選項適用于移動多個源文件到一個目錄的情況,此時目標目錄在前,源文件在后。
示例:mv -i /data/[1-3].txt /practice 把/data目錄下三個txt文件剪切到/practice下
alias rm='mv -t /data' 把rm 替代為mv 把要刪除的文件移動到/data 目錄下
(8)rm:刪除
rm [OPTION]… FILE…
-i:交互式復(fù)制,即覆蓋前提醒用戶確認
-f:強制覆蓋目標文件
-r,-R:遞歸處理,將制定目錄下的所有文件包括目錄一并刪除
示例:rm -rf /practice 遞歸刪除/practice目錄
(9)cat:正向查看文本內(nèi)容
cat [OPTION]… [FILE]…
-n:給顯示的文本行編號
-E:顯示行結(jié)束符號$
示例:cat -n /etc/fstab 查看/etc/fatab內(nèi)容并顯示行號
(10)tac:倒敘查看文本內(nèi)容
tac [OPTION]… [FILE]…
示例:tac /etc/passwd 倒敘查看文本內(nèi)容
(11)head:顯示文本內(nèi)容,默認顯示頭10行
head [OPTION]… [FILE]…
-n #:顯示文本頭#行內(nèi)容
示例:head -5 /etc/passwd 顯示/etc/passwd文件頭5行內(nèi)容
(12)tail:顯示文本內(nèi)容,默認顯示后10行
tail [OPTION]… [FILE]…
-n #:顯示文本后#行內(nèi)容
-f:查看文件尾部內(nèi)容結(jié)束后不退出,跟隨顯示新增的行
示例:tail -8 /etc/passwd 顯示/etc/passwd文件后8行內(nèi)容
(13)more:分屏顯示文本內(nèi)容,每次顯示一屏顯示完停止
more [options] file […]
Space鍵:顯示文本下一屏內(nèi)容
Enter鍵:只顯示文本下一行內(nèi)容
b鍵:顯示文本上一屏內(nèi)容
q鍵:退出
(14)less:分屏顯示文本內(nèi)容,不主動退出
less [options] file […]
Space鍵:顯示文本下一屏內(nèi)容
Enter鍵:只顯示文本下一行內(nèi)容
b鍵:顯示文本上一屏內(nèi)容
q鍵:退出
(15) ln 鏈接文件
ln [OPTION]… [-T] TARGET LINK_NAME (1st form)
ln [OPTION]… TARGET (2nd form)
ln [OPTION]… TARGET… DIRECTORY (3rd form)
ln [OPTION]… -t DIRECTORY TARGET… (4th form)
-b 刪除,覆蓋以前建立的鏈接
-d 創(chuàng)建指向目錄的硬鏈接(只適用于超級用戶)
-f 強制執(zhí)行,操作前不詢問
-i 交互模式,文件存在則提示用戶是否覆蓋
-n 把符號鏈接視為一般目錄
-s 軟鏈接(符號鏈接)
-v 顯示詳細的處理過程
示例:ln -s a.txt a 為a.txt創(chuàng)建軟鏈接
ln a.txt a 為a.txt創(chuàng)建硬鏈接
1)軟連接和Windows系統(tǒng)中的快捷方式有點類似
2)硬鏈接,相當于多了一個文件名指向同一塊內(nèi)存空間,目錄無法創(chuàng)建硬鏈接,不可以跨文件系統(tǒng)創(chuàng)建
(16) file 檢查文件的類型
file [options] …
-f filelist 列出文件filelist中文件名的文件類型 (把需要判斷的文件名寫入一個文件中批量判斷)
-F 使用指定分隔符號替換輸出文件名后默認的”:”分隔符(輸出結(jié)果修改)
2、使用命令行展開功能,創(chuàng)建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b
執(zhí)行命令mkdir -pv /tmp/a{1/{a,b},2}
mkdir: created directory ‘/tmp/a1’
mkdir: created directory ‘/tmp/a1/a’
mkdir: created directory ‘/tmp/a1/b’
mkdir: created directory ‘/tmp/a2’
執(zhí)行命令tree /tmp/
/tmp/
├── a1
│ ├── a
│ └── b
└── a2
在/tmp目錄下創(chuàng)建目錄:x_y, x_z, q_y, q_z
執(zhí)行命令mkdir -pv {x,q}_{y,z}
mkdir: created directory ‘x_y’
mkdir: created directory ‘x_z’
mkdir: created directory ‘q_y’
mkdir: created directory ‘q_z’
執(zhí)行tree查看效果
.
├── q_y
├── q_z
├── x_y
└── x_z
3、文件的元數(shù)據(jù)信息包括
Size 文件大小(字節(jié))
Blocks 文件使用的數(shù)據(jù)塊總數(shù)
IO Block 數(shù)據(jù)塊的大小
regular file:文件類型(常規(guī)文件)
Device 設(shè)備編號
Inode 文件所在的Inode
Links 硬鏈接次數(shù)
Access 權(quán)限 Uid 屬主id/用戶 Gid 屬組id/組名
Access Time:簡寫為atime,表示文件的訪問時間。當文件內(nèi)容被訪問時,更新這個時間
Modify Time:簡寫為mtime,表示文件內(nèi)容的修改時間,當文件的數(shù)據(jù)內(nèi)容被修改時,更新這個時間。
Change Time:簡寫為ctime,表示文件的狀態(tài)時間,當文件的狀態(tài)被修改時,更新這個時間,例如文件的鏈接數(shù),大小,權(quán)限,Blocks數(shù)。
查看文件的元數(shù)據(jù)信息用stat命令
[root@centos7 ~]#stat hello.sh
File: ‘hello.sh’
Size: 32 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 100663387 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2018-10-31 20:37:17.757059440 +0800
Modify: 2018-10-28 21:25:08.485016670 +0800
Change: 2018-10-28 21:26:26.959023084 +0800
Birth: –
修改文件的時間戳信息
touch [OPTION]…FILE…
-a:only atime
-m:only mtime
-t:使用指定的日期時間,而非現(xiàn)在的時間;[[CC]YY]MMDDhhmm[.ss]
4、在/tmp目錄下創(chuàng)建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
執(zhí)行命令 touch /tmp/tfile-`date "+%Y-%m-%d-%H-%M-%S"`
ll /tmp/
total 0
-rw-r–r–. 1 root root 0 Nov 22 19:36 tfile-2018-11-22-19-36-45
5、復(fù)制/etc目錄下所有以p開頭,以非數(shù)字結(jié)尾的文件或目錄到/tmp/mytest1目錄中。
執(zhí)行命令mkdir /tmp/mytest1;cp -a /etc/p*[^0-9] /tmp/mytest1
結(jié)果如下
ls /tmp/mytest1/
pam.d pbm2ppa.conf plymouth popt.d prelink.conf.d profile.d purple
passwd pinforc pm postfix printcap protocols python
passwd- pki pnm2ppa.conf ppp profile pulse
6、創(chuàng)建用戶tom,指定UID為5001,指定家目錄為/tmp/tom, 指定shell為/bin/zsh, 指定基本組為tom,附加組為jack
執(zhí)行命令groupadd jack;useradd -u 5001 -d /tmp/tom -s /bin/zsh -U -G jack tom
結(jié)果如下tom:x:5001:5001::/tmp/tom:/bin/zsh
uid=5001(tom) gid=5001(tom) groups=5001(tom),1003(jack)
ll -a /tmp/tom
total 12
drwx——. 3 tom tom 78 Nov 22 19:55 .
drwxrwxrwt. 10 root root 217 Nov 22 19:55 ..
-rw-r–r–. 1 tom tom 18 Aug 3 2017 .bash_logout
-rw-r–r–. 1 tom tom 193 Aug 3 2017 .bash_profile
-rw-r–r–. 1 tom tom 231 Aug 3 2017 .bashrc
drwxr-xr-x. 4 tom tom 39 Oct 17 20:27 .mozilla
7、常用的用戶以及文件管理命令
(1)查看當前用戶:whoami 和who 或者 who am i
(2)useradd :添加用戶命令
useradd [options] LOGIN
-u UID -o 配合-u 選項,不檢查UID的唯一性
-g GID:指明用戶所屬基本組,可為組名,也可以GID
-c "COMMENT":用戶的注釋信息
-d HOME_DIR: 以指定的路徑(不存在)為家目錄
-s SHELL: 指明用戶的默認shell程序 可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,…]:為用戶指明附加組,組須事先存在 -N 不創(chuàng)建私用組做主組,使用users組做主組
-r: 創(chuàng)建系統(tǒng)用戶 CentOS 6: ID<500,CentOS 7: ID<1000
-m 創(chuàng)建家目錄,用于系統(tǒng)用戶
-M 不創(chuàng)建家目錄,用于非系統(tǒng)用戶
示例:useradd -s /bin/sh -g group –G adm,root abc 增加用戶abc,并指定它的shell ,主組和附加組
useadd 默認配置文件/etc/default/useradd
/etc/login.defs這個文件就是用來設(shè)置用戶創(chuàng)建時默認屬性的文件
(3)usermod:修改用戶信息命令
usermod [options] LOGIN
-u UID: 新UID
-g GID: 新主組 -G GROUP1[,GROUP2,…[,GROUPN]]]:新附加組,原來的 附加組將會被覆蓋;若保留原有,則要同時使用-a選項
-s SHELL:新的默認SHELL -c 'COMMENT':新的注釋信息
-d HOME: 新家目錄不會自動創(chuàng)建;若要創(chuàng)建新家目錄并移 動原家數(shù)據(jù),同時使用-m選項
-l login_name: 新的名字;
-L: lock指定用戶,在/etc/shadow 密碼欄的增加 !
-U: unlock指定用戶,將 /etc/shadow 密碼欄的 ! 拿掉
-e YYYY-MM-DD: 指明用戶賬號過期日期
-f INACTIVE: 設(shè)定非活動期限
示例:usermod -s /bin/ksh -d /home/z –g developer sam 修改sam用戶的shell和目錄以及主組
(4)userdel 刪除用戶
userdel [OPTION]… login
-r: 刪除用戶家目錄
userdel -r sam 刪除sam用戶并清空相關(guān)目錄
(5)su 切換用戶
su [options…] [-] [user [args…]]
su – 完全切換
(6)passwd 更改密碼
passwd [OPTIONS] UserName
-l:鎖定指定用戶
-u:解鎖指定用戶
-e:強制用戶下次登錄修改密碼
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天開始警告
-i inactivedays:非活動期限
–stdin:從標準輸入接收用戶密碼
示例:echo magedu | passwd –stdin varnishs 非交互式更改密碼
(7)chage 修改用戶密碼策略
chage [OPTION]… LOGIN
-d LAST_DAY
-E –expiredate EXPIRE_DATE
-I –inactive INACTIVE
-m –mindays MIN_DAYS
-M –maxdays MAX_DAYS
-W –warndays WARN_DAYS
–l 顯示密碼策略
示例: chage -d 0 tom 下一次登錄強制重設(shè)密碼
(8)groupadd 增加組
groupadd [OPTION]… group_name
-g GID: 指明GID號;
-r: 創(chuàng)建系統(tǒng)組
(9)groupmod 修改組信息
groupmod [OPTION]… group
-n group_name 新名字
-g 修改gid
示例:groupmod -n linux linux2
(10)groupdel 刪除組
groupdel GROUP
(11)chown 修改文件所屬組
chown [OPTION]… [OWNER][:[GROUP]] FILE…
-R: 遞歸
示例:chown -R myuser:mygroup /test
chown myuser test
chown :mygroup test 修改test所屬組
(12)chmod 修改文件權(quán)限 (rwxX)(421)
chmod [OPTION]… OCTAL-MODE FILE…
-R: 遞歸修改權(quán)限
對于文件來說rwx分別是可讀可寫可執(zhí)行權(quán)限
對于目錄目錄r權(quán)限可以看到文件列表~ w可以刪文件 x可以進入目錄和文件具體屬性 無法操作該目錄 目錄基本權(quán)限
+X:只給目錄x權(quán)限,不給文件x權(quán)限,或者給有執(zhí)行權(quán)限的文件 加執(zhí)行權(quán)限 如-rwxrw-rw- 變成 -rwxrwxrwx
root不受rw限制受x權(quán)限限制
示例:chmod u+wx,g-r,o=rx file
chmod -R g+rwX /testdir 給目錄的所屬組遞歸增加rwx權(quán)限,該目錄下文件所屬組只增加rw權(quán)限
chmod 600 file
(13)SUID, SGID, Sticky 特殊權(quán)限
suid u+s 4777 作用于二進制程序,權(quán)限與程序所有者有關(guān)
guid g+s 2777 作用于二進制程序,權(quán)限與程序所屬組有關(guān);作用于文件夾中,文件夾里新建文件繼承目錄所屬組
stick o+t 1777 作用目錄,此目錄的文件只能被所有者刪除
chattr +i +a(只能追加) 鎖定文件 +A 不能修改atime(訪問時間) lsattr file查看特殊權(quán)限
(14)umask 系統(tǒng)默認生成權(quán)限
新建FILE權(quán)限: 666-umask 如果所得結(jié)果某位存在執(zhí)行(奇數(shù))權(quán)限,則將其權(quán)限+1 (結(jié)果偶數(shù)不變,奇數(shù)加一)
新建DIR權(quán)限: 777-umask
(15)ACL高級權(quán)限
centos6版本需要手動加acl權(quán)限功能
tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt/test
ACL生效順序:所有者,自定義用戶,自定義組,其他人
應(yīng)用ACL后 文件本身組權(quán)限變成acl中的mask,而非傳統(tǒng)的組權(quán)限
常用命令
getfacl: 獲取文件或目錄的ACL設(shè)置信息
getfacl [-bkndRLP] { -m|-M|-x|-X … } file …
-a , –access:顯示文件或目錄的訪問控制列表
-d , –default:顯示文件或目錄的默認(缺省)的訪問控制列表
-R , –recursive:操作遞歸到子目錄
setfacl: 設(shè)置文件或目錄的ACL設(shè)置信息
setfacl [-bkndRLP] { -m|-M|-x|-X … } file …
-m, –modify=acl:修改文件或目錄的擴展ACL設(shè)置信息
-x, –remove=acl:從文件或目錄刪除一個擴展的ACL設(shè)置信息
-b, –remove-all:刪除所有的擴展的ACL設(shè)置信息
-k, –remove-default:刪除默認的acl設(shè)置信息
-n, –no-mask:不要重新計算有效權(quán)限。setfacl默認會重新計算ACL mask,除非mask被明確的制定
-d, –default:設(shè)置默認的ACL設(shè)置信息(只對目錄有效)
-R, –recursive:操作遞歸到所有子目錄和 文件
示例:getfacl file
setfacl -m u:wang:rwx txt
setfacl -Rm g:sales:rwX directory
setfacl -m d:u:wang:rx /data 設(shè)定該目錄的默認權(quán)限,只對目錄有效 或者setfacl -dmu:wang:rx /data
setfacl -x u:wang file 移除設(shè)置好的wang賬號對該文件權(quán)限
備份和恢復(fù)ACL
主要的文件操作命令cp和mv都支持ACL,只是cp命令需要 加上-p 參數(shù)。
但是tar等常見的備份工具是不會保留目錄 和文件的ACL信息
getfacl -R /tmp/dir1 > acl.txt 把目錄的acl保存在acl.txt文件中
setfacl -R -b /tmp/dir1 刪除該目錄所有acl權(quán)限
setfacl -R –set-file=acl.txt /tmp/dir1 恢復(fù)權(quán)限到目錄中
setfacl –restore acl.txt
getfacl -R /tmp/dir1 查看目錄acl權(quán)限
(16)pwck grpck 檢查/etc/passwd 和 /etc/group 文件正確性
用文件批量創(chuàng)建用戶密碼: newusers chpasswd
創(chuàng)建user文件,寫入用戶列表,格式與/etc/passwd 一致
如:
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
tomcat:x:1001:1002::/home/tomcat:/bin/bash
tom:x:5001:5001::/tmp/tom:/bin/zsh
然后newusers txt 創(chuàng)建這些用戶
在創(chuàng)建password文件,格式
用戶:密碼
tomcat:123456
tom:123456
然后cat password |chpasswd 自動添加密碼
newgrp 切換當前用戶主組