1. 程式人生 > >Linux基礎命令-文件與目錄

Linux基礎命令-文件與目錄

有關 vml 指定時間 不能訪問 查看 查看文件類型 block 有效 執行者

參考:《鳥哥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

  • 文件特殊權限
  1. SetUID

-rwsr-xr-x 1 root root 27832 Jun 10 2014 /usr/bin/passwd

當s出現在文件所有者的x權限上時,稱為SUID

僅對二進制程序有效;執行者需要有x權限;臨時獲得擁有者權限

  1. Set GID

當s出現在用戶組的x權限上時,稱為SGID

可用於目錄;執行者需要有x權限;臨時獲得用戶組的支持

  1. 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

  • 查找
  1. which

根據PATH查找執行文件

  1. whereis

數據庫中查找文件

  1. locate

updatedb更新數據庫;可模糊匹配;-i 忽略大小寫;-r 正則式匹配

  1. 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基礎命令-文件與目錄