Linux基礎命令-文件與目錄
參考:《鳥哥linux私房菜》前七章,17/12/5復習
- 文件權限
rwx421;-R 遞歸;用戶,用戶組,其他
umask查看默認目錄:0002,即對其他拿掉了w權限,也可直接umask -S
chgrp
chown zuo:zuo passwd
chmod +664 testfile//-rw-rw-r--
chmod u=rwx,go=rw testfile
chmod +x testfile
+號是添加權限,無加號直接指定權限
對目錄來說:r可打印,w可修改目錄下任何文件,x可進入成為工作目錄
- 目錄配置
FHS標準
第三方軟件一般在/usr/src 或/opt
內核源碼在/usr/src
/ 根
/bin - 用戶二進制文件
在單用戶模式下,你需要使用的常見Linux命令都位於此目錄下。系統的所有用戶使用的命令都設在這裏。
例如:ps、ls、ping、grep、cp8/sbin
通常由系統管理員使用,對系統進行維護。例如:iptables、reboot、fdisk、ifconfig、swapon命令
/etc - 配置文件
hosts:設備名稱(或域名)到ip地址的解析,相當於本地存在的dns功能。
/dev - 設備文件
這些包括終端設備、USB或連接到系統的任何設備。例如:/dev/tty1、/dev/usbmon0/proc - 進程信息
這是一個虛擬的文件系統,包含有關正在運行的進程的信息。例如:/proc/{pid}目錄中包含的與特定pid相關的信息。/var - 變量文件
這個目錄下可以找到內容可能增長的文件。包括 - 系統日誌文件(/var/log);包和數據庫文件(/var/lib);電子郵件(/var/mail);打印隊列(/var/spool);鎖文件(/var/lock);多次重新啟動需要的臨時文件(/var/tmp);/tmp - 臨時文件
包含系統和用戶創建的臨時文件。當系統重新啟動時,這個目錄下的文件都將被刪除。/usr - unix software resourse
包含二進制文件、庫文件、文檔和二級程序的源代碼。
/usr/bin中包含用戶程序的二進制文件。如果你在/bin中找不到用戶二進制文件,到/usr/bin目錄看看。例如:at、awk、cc、less、scp。
/usr/sbin中包含系統管理員的二進制文件。如果你在/sbin中找不到系統二進制文件,到/usr/sbin目錄看看。例如:atd、cron、sshd、useradd、userdel。
/usr/lib中包含了/usr/bin和/usr/sbin用到的庫。
/usr/local中包含了從源安裝的用戶程序。例如,當你從源安裝Apache,它會在/usr/local/apache2中。/home - HOME目錄
所有用戶用home目錄來存儲他們的個人檔案。
例如:/home/john、/home/nikita/boot - 引導加載程序文件
內核的initrd、vmlinux、grub文件位於/boot下。例如:initrd.img-2.6.32-24-generic/lib - 系統庫
包含支持位於/bin和/sbin下的二進制文件的庫文件.
庫文件名為 ld或lib.so.*例如:ld-2.11.1.so,libncurses.so.5.7/opt - 可選的附加應用程序
包含從個別廠商的附加應用程序。/mnt - 掛載目錄
臨時安裝目錄,系統管理員可以掛載文件系統。/media - 可移動媒體設備
用於掛載可移動設備的臨時目錄。
舉例來說,掛載CD-ROM的/media/cdrom,windows也通常掛在在這裏/srv - 服務數據
包含服務器特定服務相關的數據。
例如,/srv/cvs包含cvs相關的數據。
- 目錄操作
cd
pwd
mkdir:-p遞歸創建 -m指定權限
rmdir
ls:-R 遞歸列出所有文件; -S按從大到小; -t 時間從新到舊 ;-r 反向
cp:-p 復制屬性;-r 遞歸復制 ;-d復制鏈接文件;-a 相當於pdr;-u 新的才復制;-l創建硬鏈接,-s軟鏈接
rm -rf /
- 文件內容
cat:-n行號;-A顯示看不見的字符
tac
nl
more
less:最常用
head -n 10;-10只打印不包括後面10行
tail -n 10;-10不包括前面10行
od -a:默認讀取; c ,d,o,x,ascii,十進制,八進制,16進制
file 查看文件類型
- 文件時間
mtime 內容更改
ctime 狀態更改,如權限,屬性
atime 文件內容被讀取
查看時間:ll --time=ctime filename;默認為mtime
更改時間:touch -m/a 更改修改時間,訪問時間為當前時間
-d ‘’2 days ago‘’
-t 指定時間,[[CC]YY]MMDDhhmm[.ss]
- 文件隱藏屬性
chattr + a filename,只能增加內容;+i,不能刪改
lsattr
- 文件特殊權限
- SetUID
-rwsr-xr-x 1 root root 27832 Jun 10 2014 /usr/bin/passwd
當s出現在文件所有者的x權限上時,稱為SUID
僅對二進制程序有效;執行者需要有x權限;臨時獲得擁有者權限
- Set GID
當s出現在用戶組的x權限上時,稱為SGID
可用於目錄;執行者需要有x權限;臨時獲得用戶組的支持
- Sticky Bit
drwxrwxrwt 9 root root 4096 Dec 5 01:46 /tmp
當t出現在其他的x權限上時
僅用於目錄;僅有本用戶和root能刪除該文件
可用chmod設置上述三種權限,421;另外大寫S或T表示本用戶無x權限,即空的
- 環境變量
echo $PATH
PATH="$PATH":/opt/typora
- 查找
- which
根據PATH查找執行文件
- whereis
數據庫中查找文件
- locate
updatedb更新數據庫;可模糊匹配;-i 忽略大小寫;-r 正則式匹配
- find
find |PATH| |OPTION| |file|
- 時間參數
-mtime n,n天前的那天
-mtime +n,n天之前(不含n天)
-mtime -n,n天之內(含n天)
-newer file,比file更新
- 用戶有關
-user name
-group name
-nouser
- 權限名稱有關
-name filename
-size +/- 100c;c為bytes,k為KB,M為MB,G為GB
-type TYPE;TYPE有如下幾種:f一般文件,b/c設備文件,d目錄,l鏈接文件,s套接字,p管道
-perm mode;權限正好為mode的文件;-mode超集,必須全部包括mode;+mode子集,包含任一mode
-exec 加其他命令
find /tmp -newer test1 -exec ls -l {} \;
練習:建立兩個賬號tmp1和tmp2,支持同一個用戶組project,需要共同擁有/srv/ahome目錄的開發權,且該目錄不允許其他用戶訪問
//創建用戶及用戶組
[root@localhost /]# groupadd project
[root@localhost /]# useradd -G project tmp1
[root@localhost /]# useradd -G project tmp2
//建立目錄及權限
[root@localhost /]# cd /srv
[root@localhost srv]# mkdir ./ahome
[root@localhost srv]# chgrp project /srv/ahome
[root@localhost srv]# chmod 770 ahome
[root@localhost srv]# ll -d ahome
drwxrwx--- 2 root project 4096 Dec 5 05:36 ahome
//tmp1創建文件但是tmp2不能訪問
[root@localhost srv]# su tmp1
[tmp1@localhost srv]$ cd ahome/
[tmp1@localhost ahome]$ ls
[tmp1@localhost ahome]$ touch testfile
[tmp1@localhost ahome]$ su root
Password:
[root@localhost ahome]# su tmp2
[tmp2@localhost ahome]$ ll testfile
-rw-rw-r-- 1 tmp1 tmp1 0 Dec 5 05:38 testfile//註意tmp2用戶相當於其他,只有r權限
//添加SUGID權限
[tmp2@localhost ahome]$ su root
Password:
[root@localhost ahome]# chmod 2770 /srv/ahome
//驗證
[root@localhost ahome]# su tmp1
[tmp1@localhost ahome]$ touch file
[tmp1@localhost ahome]$ ll
total 0
-rw-rw-r-- 1 tmp1 project 0 Dec 5 05:39 file//註意用戶組變為project
[tmp1@localhost ahome]$ su root
Password:
[root@localhost ahome]# su tmp2
[tmp2@localhost ahome]$ ll
total 0
-rw-rw-r-- 1 tmp1 project 0 Dec 5 05:39 file
Linux基礎命令-文件與目錄