1 / 根目錄 2 3 /bin 存放着啓動時所須要的普通程序。不少程序在啓動之後也頗有用,它們放在這個目錄下是由於它們常常要被其餘程序調用 4 5 /boot 不少Linux系統把內核映像和其餘一些和啓動有關的文件都放在這裏。內核和加載內核所需的文件 6 7 /dev 這個目錄下保存着全部的設備文件。裏面有一些是由Linux內核建立的用來控制硬件設備的特殊文件 8 9 /etc 這裏保存着絕大部分的系統配置文件。相對來說,單個用戶的系統配置文件會保存在這個用戶本身的主目錄裏面。下面列舉其中一些重要的子目錄 10 11 /home 通常用戶的主目錄都會放在這個目錄下。在Linux下,能夠經過#cd ~來進入本身的主目錄 12 13 /lib 啓動的時候所要用到的庫文件都放在這個目錄下。那些非啓動用的庫文件都會放在/usr/lib下。內核模塊是放在/lib/modules/(內核版本)下的 14 15 /lib64 16 17 /media 18 19 /mnt 這個目錄下面放着一些用來安裝其餘設備的子目錄,好比說/mnt/cdrom或者/mnt/floppy。在有些Linux中這個目錄被/mount代替 20 21 /opt 22 23 /proc 虛擬文件系統,系統運行信息,包括內核信息、正在運行的進程、硬件狀態、內存使用的多少等 24 25 /root root用戶的主目錄 26 27 /run 28 29 /sbin 存放啓動時所須要的系統程序,不少程序在啓動之後也頗有用,它們放在這個目錄下是由於它們常常要被其餘程序調用 30 31 /srv 32 33 /sys 虛擬文件系統,不佔硬盤容量,主要記錄與系統核心相關的信息,如系統已載入的模塊 34 35 /tmp 通常只有啓動時產生的臨時文件纔會放在這個地方。咱們本身的臨時文件都放在/var/tmp 36 37 /usr 這是一個很複雜、龐大的目錄。除了上述目錄以外,幾乎全部的文件都存放在這下面。下面列舉其中一些重要的子目錄 38 39 /var 這裏有一些被系統改變過的數據。好比說/var/tmp,就是用來儲存臨時文件的。還有不少其餘的進程和模塊把它們的記錄文件也放在這個地方,包括以下一些重要的子目錄系統專用數據和配置文件,含有logs, spool等目錄 40 41 42 43 常見目錄文件 44 45 46 /boot/grub/ 47 /boot/grub2/grub.cfg 48 /boot/initramfs-xxx.img 49 50 /dev/cdrom ;光驅 51 /dev/input/mice ;鼠標 52 /dev/log ; unix 域數據報套結字 syslogd syslog 53 /dev/mem ; 物理內存的全映象 54 /dev/null 55 /dev/random ; 存儲的系統運行環境的實時數據 56 /dev/shm 57 /dev/stderr ; 錯誤輸出 58 /dev/stdin 59 /dev/stdout 60 /dev/urandom ; 和 /dev/random 數據同樣,可是讀取它時不會產生阻塞 61 /dev/zero ;你讀它的時候,它會提供無限的空字符,能夠做爲一個數據源或數據池,全部寫往/dev/zero將返回成功;dd if=/dev/zero of=foobar count=1024 bs=1024 建立一個名爲'foobar'大小爲1 MiB的文件,以"0"填充 62 63 /etc/aliases ; This file describes user ID aliases used by sendmail. 64 /etc/apt/sources.list ; debian 的 apt-get 軟件管理的源 65 /etc/bashrc ; 登錄後設置的函數和 alias 66 /etc/bluetooth ; 藍牙配置目錄 67 /etc/default/grub ; grub 默認設置 68 /etc/default/useradd ; 添加用戶時的默認設置 69 /etc/dhcp/dhcpd.conf ; dhcp 服務配置文件 70 /etc/environment ; 環境變量 71 /etc/exports ; nfs 配置文件 72 /etc/firewalld/ ; firewalld 配置文件 73 /etc/group 74 /etc/grub.d/ ; 生成 grub 配置文件的相關文件 75 /etc/grub2.cfg ; 指向 /boot/grub2/grub.cfg 76 /etc/host.conf ; resolver configuration file; mutli on 77 /etc/hostname ; 永久修改主機名時修改這個文件,hostname 命令只能暫時修改主機名 78 /etc/hosts ; 當機器啓動時,在能夠查詢DNS之前,機器須要查詢一些主機名到IP地址的匹配 79 /etc/httpd/conf.d/welcome.conf 80 /etc/httpd/conf/httpd.conf ; 配置apache服務器 81 /etc/init.d ; 這個目錄保存着啓動描述文件,包括各類模塊和服務的加載描述, CentOS7 不使用這個文件配置啓動信息,採用了 systemd ,但仍是支持這個文件的啓動信息配置。 82 /etc/init.d/network ; CentOS6 網絡啓動時使用的文件 83 /etc/iproute2/rt_tables ; 策略路由的規則 84 /etc/issue ; 本地登錄時顯示的信息,常爲內核等信息 85 /etc/issue.net ; 網絡登錄時顯示的信息 86 /etc/ld.so.conf ; gcc 動態庫文件的搜索路徑 87 /etc/ld.so.conf.d/ ; 庫文件的配置路徑 88 /etc/ld.so.conf.d/mariadb-x86_64.conf ; 89 /etc/locale.conf 90 /etc/localtime ; 本機時區的配置文件 91 /etc/login.defs ; 用戶規則的配置文件,好比讓用戶每半年改一次密碼,而且密碼長度很多於 8 位 92 /etc/mail.rc ; mailx 配置文件 93 /etc/man_db.conf ; man 手冊配置 94 /etc/modules-load.d/eth0.conf ; 設置開機自動加在網卡驅動模塊(文件內容爲:alias enp2s0 e1000 ) 95 /etc/modprobe.d/mlx4.conf ; select the various module options they need for the mlx4 driver 96 /etc/motd ; 內容由管理員肯定,經常使用於通告信息,任何用戶任何終端登錄時都會顯示的內容 97 /etc/my.cnf.d/mysql-clients.cnf ; mysql 98 /etc/nail.rc ; mail 99 /etc/network/interfaces ; debian 網卡配置文件存放目錄,網卡配置詳看 http://gfrog.net/2008/01/config-file-in-debian-interfaces-1/ http://qref.sourceforge.net/Debian/reference/ch-gateway.zh-cn.html 100 /etc/networks ; 已知的網絡名的信息 101 /etc/nsswitch.conf ; An example Name Service Switch config file 102 /etc/NetworkManager 103 /etc/NetworkManager/NetworkManager.conf ; 網絡配置文件,在 main 部分加入 dns=none 不會自動生成 dns 104 /etc/passwd 105 /etc/php.ini 106 /etc/pki/rpm-gpk ;yum 107 /etc/pki/tls/certs/ ; 創建憑證的地方 108 /etc/profile ; 系統全部用戶的環境變量和啓動程序,在用戶第一次登錄時執行,不建議改變 109 /etc/profile.d/ ; 自定義的系統環境變狼和啓動程序,以 .sh 結尾 110 /etc/protocols ; 網絡協議和協議代碼的對應文件;封包協議的相關數據 111 /etc/redhat-release ; 系統版本 112 /etc/resolv.conf ; 網絡配置臨時 namesever DNS 113 /etc/resolvconf/resolv.conf.d ; 配置永久 DNS( CentOS7 中沒有此文件) 114 /etc/rc.d/init.d/functions ; 函數有:killproc, status 115 /etc/rc.d/rc.local ; 添加自定義腳本,Centos7 中已經不建議使用該文件,該文件沒有執行權限了 116 /etc/rc.local ; FOR COMPATIBILITY PURPOSES 117 /etc/rc0.d - /etc/rc6.d ; 這裏面也是一些鏈接文件,和/etc/rcS.d差很少。不一樣的是,這些只會在指定的runlevel下運行相應的描述。0表示關機,6表示重啓。全部以K開頭的文件表示關閉,全部以S開頭的文件表示重啓。目前來說,文件的命名方式和/etc/rcS.d是同樣的 118 /etc/rcS.d ; 這裏放着一些鏈接到/etc/init.d的文件,根據runlevel的不一樣而執行相應的描述。這裏的文件名都是由S來開頭的,而後是一個兩位的數字——表示各類服務啓動的順序。好比,S24foo就是在S42bar前面執行的。接着就是相應的鏈接到/etc/init.d下面的文件名字了 119 /etc/rsyslog.conf ; rsyslog configuration file, syslog 集中的出錯管理設施配置文件,決定不一樣種類的消息、日誌送往何處 120 /usr/sbin/setenforce ; selinux 配置命令 121 /etc/securetty 122 /etc/security/limits.conf ; 系統限制的配置文件,規範每一個用戶的相關權限,可用 ulimit 設置;domino是以符號@開頭的用戶名或組名,*表示全部用戶,type設置爲hard or soft。item指定想限制的資源。如cpu,core nproc or maxlogins。value是相應的限制值。 123 /etc/selinux/config ; selinux配置文件 124 /etc/services ; 定義每種 TCP/IP 服務對應的端口號和別名等 125 /etc/skel/ ; 建立用戶時 home 目錄內默認的文件 126 /etc/ssh ; ssh 配置文件等 127 /etc/sshd/sshd_config ; ssh 配置文件,在 Centos7 中沒有 128 /etc/sysconfig/dhcpd ; dhcp 服務配置文件 129 /etc/sysconfig/iptables ; 防火牆規則 130 /etc/sysconfig/iptables-config ; 配置 iptables 加載的模塊(NAT) 131 /etc/sysconfig/selinux ; selinxu的配置文件 132 /etc/sysconfig/network ; 該文件用來指定服務器上的網絡配置信息,例如永久修改主機名,網關 GATEWAY,是否支持 ipv6 133 /etc/sysconfig/network-scripts/ ; 網卡配置文件 134 /etc/sysconfig/nfs ; nfs 配置端口等信息 135 /etc/sysctl.conf ; 系統設置,net.ipv4.ip_forward = 1 | net.ipv4.tcp_syncookies = 1 | net.ipv4.icmp_echo_ignore_broadcasts = 1 | net.ipv4.conf.all.rp_filter = 1 | net.ipv4.conf.default.rp_filter = 1 | net.ipv4.conf.eth0.rp_filter = 1 | net.qiang@hotmail.comnet.ipv4.conf.lo.rp_filter = 1 啓用核心封包轉發功能。sysctl -p 使設置當即生效 136 /etc/systemd/logind.conf 137 /etc/systemd/system/multi-user.target.wants/ ; 自啓服務 138 /etc/systemd/system/multi-user.target.wants/abrt-ccpp.service 139 /etc/updatedb.conf ; updatedb 配置文件,和 locate 有關 140 /etc/vimrc 141 /etc/wpa_supplicant/wpa_supplicant.conf 142 /etc/xinetd.d/ ; Centos7 使用 systemd 代替了 xinetd 這個服務,可是有些軟件仍是可使用這個服務 143 /etc/xinetd.d/tftp ; tftp 服務器配置目錄 144 /etc/X11 ; 這裏放着 X 窗口系統(Linux中的圖形用戶界面系統之一)所須要的配置文件。XF86Config(XFee86 是 linux 下實現 X Window 協議的軟件包,另一個是 X.org)就是把配置儲存到這個地方的。/etc/X11/fonts裏面放着一些服務器須要的字體,還存放一些窗口管理器存放的配置文件 145 /etc/X11/xinit/xinitrc ; root read this file to start x-org 146 /etc/yum.conf ; yum 配置文件 147 /etc/yum.repos.d ; yum 源的配置目錄 148 /etc/yum/pluginconf.d ; yum 插件 149 150 /home/user/.bash_history 151 /home/user/.bash_logout ; 用戶退出 shell 時登錄時由 bash 解釋執行該文件,即便是使用 gnome-terminal 登錄也會執行 152 /home/user/.bash_profile ; 執行用戶的 .bashrc 文件 153 /home/user/.bashrc 154 /home/user/.config/gedit 155 /home/user/.local 156 /home/user/.ssh 157 /home/user/.ssh/authorizrd_keys ; 公鑰文件 158 /home/user/.ssh/config ; 配置文件 159 /home/user/.ssh/known_hosts 160 /home/user/.vim 161 /home/user/.viminfo 162 /home/user/.vimrc 163 /home/home/.Xauthority 164 165 /lib/modules/3.10.0-327.13.1.el7.x86_64/kernel/drivers/net/ethernet/realtek ; 內核加載的有線網卡驅動模塊 166 /lib/systemd/system/runlevel*.target ; run level 167 168 /proc/acpi 169 /proc/acpi/button/lid/ ; 筆記本蓋子狀況 170 /proc/bus/* ; 一些總線的裝置,還有 USB 的裝置也記錄在此喔! 171 /proc/bus/pci/devices 172 /proc/cmdline ; 系統啓動時的 IMAGE vmlinuz, 加載 kernel 時所下達的相關參數 173 /proc/consoles ; 當前登錄的終端 174 /proc/cpuinfo ; cpu 信息 175 /proc/devices ; 這個檔案記錄了系統各個主要裝置的主要裝置代號,不 mknod 有關呢! 176 /proc/filesystems ; 目前系統已經加載的文件系統囉! 177 /proc/interrupts ; 目前系統上面的 IRQ 分配狀忞。系統中全部中斷信息,包括網卡 178 /proc/ioports ; 目前系統上面各個裝置所配置的 I/O 地址。 179 /proc/kcore ; 這個就是內存的大小啦!好大對吧!可是丌要諾他啦! 180 /proc/loadavg ; 平均負載 181 /proc/meminfo ; 內存(虛擬),使用 free 列出的內存信息 182 /proc/modules ; 目前咱們的 Linux 已經加載的模塊列表,也能夠想成是驅勱程序啦! 183 /proc/mounts ; 系統已經掛載的數據,就是用 mount 這個挃令呼叨出來的數據啦! 184 /proc/pci ; 在 PCI 總線上面,每一個裝置的詳紳情冴!可用 lspci 來查閱! 185 /proc/swaps ; 到底系統掛加載的內存在哪裏?呵呵!使用掉的 partition 就記錄在此啦!/proc/partitions 使用 fdisk -l 會出現目前全部的 partition 吧?在這個檔案當中也有紈錄喔! 186 /proc/sys/kernel/domainname ; (none) 187 /proc/sys/kernel/hostname ; 主機名 188 /proc/sys/kernel/msgmax ; 8129 189 /proc/sys/kernel/pidmax ; 32768 190 /proc/sys/kernel/random/uuid ; 系統生成的惟一的 uuid 號 191 /proc/sys/kernel/threads-max ; 系統容許的最大線程數 30408,好像不許確,個人是 32754 192 /proc/sys/net/ipv4/ip_forward ; 內核是否打開核心封包傳遞功能,爲 0 沒有打開,爲 1 打開,沒有打開直接置 1 就能夠了,想重啓生效則配置文件 /etc/sysctl.conf 193 /proc/sys/net/ipv4/ip_forward ; 爲 1 則具有數據包轉發功能 194 /proc/sys/net/ipv4/tcp_max_syn_backlog ; TCP 封包聯機優化的三個參數 195 /proc/sys/net/ipv4/tcp_synack_retries 196 /proc/sys/net/ipv4/tcp_abort_on_overflow 197 /proc/sys/net/ipv4/icmp_echo_ignore_all ; 爲 1 忽略全部 icmp 請求 198 /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts ; 爲 1 僅有 ping broadcast 地址時才取消 ping 的迴應 199 /proc/sys/net/ipv4/tcp_syncookies ; 防止 SYN 攻擊 200 /proc/sys/vm/drop_caches ; echo 1 > dir 釋放網頁緩存,echo 2 > dir 釋放目錄項和索引,echo 3 > dir 釋放目錄項、索引和網頁緩存 201 /proc/uptime ; 就是用 uptime 的時候,會出現的信息啦 202 /proc/version ; 核心版本,就是用 uname -a 顯示的內容啦 203 204 /run/media ; 可移動介質的文件系統掛載點 205 206 /sys/devices/system/cpu/cpu0/cpufreq ; cpu 參數 207 /sys/class/backlight/acpi_video0/brightness ; 屏幕亮度 208 /sys/class/power_supply/BAT1 ; 電源相關的狀態 209 /sys/class/power_supply/BAT1/capacity ; 剩餘電量百分比 210 /sys/class/power_supply/BAT1/uevent ; 基本信息 211 212 /usr/bin ; 二進制可執行文件存放的目錄,這裏放着絕大部分的應用程序 213 /usr/doc ; 這裏保存着各類文檔文件。這些文件能夠幫助你瞭解Linux,解決問題和提供一些技巧 214 /usr/games ; 遊戲程序和相應的數據會放在這裏 215 /usr/include ;這個目錄保存着C和C++的頭文件 216 /usr/include/bits/local_lim.h ; 系統限制信息;其中 PTHREAD_THREADS_MAX 是最大線程數,爲 1024,最大線程數和內存也有關,由於每一個線程都要佔用內存;個人最大線程數是 32754,內存是 4 G 217 /usr/include/mysql/mysql.h ; mariadb-devel 218 /usr/info ; 這裏保存着GNU Info程序所須要的數據 219 /usr/lib ; 啓動時用不到的庫文件都會放在這裏 220 /usr/lib/firewalld/ ; 不要編輯,由於由於它們是爲默認設定準備的 221 /usr/lib/modules/3.10.0-229.11.1.el7.x86_64/kernel/drivers/misc/mei 222 /usr/lib/systemd/ ;系統和用戶服務目錄 223 /usr/lib/systemd/scripts/nfs-utils_env.sh 224 /usr/lib/systemd/system/ ; 系統服務目錄,隨着系統啓動而啓動 225 /usr/lib/systemd/user/ ; 用戶服務目錄 226 /usr/lib/python2.6/site-packages/yum/yumRepo.py 227 /usr/lib64/gedit/plugin ; gedit plugin 228 /usr/local ; 這裏保存着本地計算機所須要的文件。在用戶進行遠程訪問的時候特別有意義。這個目錄在有些Linux系統下就是一個單獨的分區,存放一些這臺機子所屬的那個用戶的文件。裏面的結構和/usr是同樣的 229 /usr/local/share/QQWry.Dat ; nali 數據文件 230 /usr/sbin ; 這裏放着絕大部分的系統程序 231 /usr/share ; 這裏保存着各類共享文件 232 /usr/share/applications ; 快捷方式 233 /usr/share/httpd/noindex 234 /usr/share/man ; 這裏保存着man程序所須要的數據 235 /usr/share/man/man1 236 /usr/share/mysql ; 配置文件(mysql.server命令及配置文件) 237 /usr/share/vim/vim74/colors ; vim 配色方案 238 /usr/share/vim/vim74/plugin ; vim 插件 239 /usr/share/vim/vimfiles/ ; 插件文件 240 /usr/src ; 這裏保存着系統源代碼文件 241 /usr/X11R6,/usr/X11,/usr/Xfree86 ;這裏保存着X窗口系統所須要的文件,它的目錄結構和/usr是同樣的( CentOS 中沒有) 242 243 /var/account/pacct 244 /var/cache/yum/ ; yum cache 245 /var/lib ; 包括了一些系統運行時須要的文件 246 /var/lib/dhclient/dhclient* ; dhcp 客戶端的配置文件,刪除了能夠從新設定鏈接的 DHCP 服務器 247 /var/lib/mysql/ ; 數據庫目錄 248 /var/lib/nfs 249 /var/lib/rpm ; 軟件版本之間的比較來自亍這個數據庫, 而若是妳想要查詢系統已經安裝的軟件,也是仍這裏查詢的!同時,目前的 RPM 也提供數字簽名信息, 這些數字簽名也是在這個目錄內記錄的 250 也是在這個目錄內記錄的呢! 251 /var/log ; 這裏放着絕大部分的記錄文件。隨着時間的增加,這個目錄會變得很龐大,因此要按期清理 252 /var/log/acct 253 /var/log/boot.log ; 啓動時屏幕上的內容 254 /var/log/btmp ; 用戶登錄記錄,包括登錄失敗,使用 lastb 查看 255 /var/log/messages 256 /var/log/secure ; 系統安全相關信息,包括但不限於 root 權限的使用,ssh 登錄失敗 257 /var/log/wtmp ; 用戶登錄記錄,使用 last 查看 258 /var/log/yum.log 259 /var/run ; 包括了各類運行時的信息 260 /var/spool ; 郵件,新聞,打印序列的所在地 261 /var/www/html 262 263 264 gcc相關: 265 266 /usr/include 267 /usr/local/include 268 /usr/lib/gcc-lib/i386-linux/2.95.2/include 269 /usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3 270 /usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include 271 272 273 274 文件權限 275 276 277 -rwxr-x--t 文件類型 用戶權限 組權限 其餘用戶權限 278 279 umask是一個掩碼,設置文件的默認權限,會屏蔽掉不想授予該安全級別的權限,從對象的全權權限中減掉;對文件全權權限是666,目錄是777,由於目錄有執行權限。系統啓動時在/etc/profile中設置。 280 281 chmod [ugoa] [+-=] [rwxXstugo] 只有文件的屬主能夠改變權限 282 chmod 0xddd file 283 284 -R 參數表示遞歸的改變文件權限 285 286 u 表示設置權限和屬主同樣,g和o相似 287 s 運行時從新設置uid或gid 288 t 保留文件或目錄 289 X 表示若是對象是目錄或者已有執行權限,賦予執行權限 290 291 suid sgid 粘着位 構成另一個八進制數在 umask 中(前),umask 有 4 個 8 進制數 292 293 r 對文件而言,具備讀取文件內容的權限;對目錄來講,具備瀏覽目錄的權限 294 w 對文件而言,具備新增、修改和刪除文件的權限;對目錄來講,具備刪除、移動目錄內文件的權限 295 x 對文件而言,具備執行文件的權限;對目錄了來講該用戶具備進入目錄的權限 296 s(suid) 當文件被用戶使用時,程序會以文件的屬主權限運行,大寫 s 表示用戶的執行權限爲空 297 s(sgid) 對文件來講,文件會以文件屬組的權限運行;對目錄來講,目錄中建立的權限會以目錄的默認屬組做爲默認屬組,經常使用於建立共享組共享文件(新建共享組後可能須要重啓才能生效) 298 t(sticky) 進程結束後仍保留在內存中;當使用者對於此目錄具備 w, x 權限,亦即具備寫入的權限時,使用者在該目錄下創建的檔案或目錄,僅有本身與 root 纔有權力刪除該檔案 299 300 SUID 不用在目錄上,而 t 不用在檔案上。SUID 爲 u+s ,而 SGID 爲 g+s ,t 則是 o+t 301 shell 腳本的 suid 並不生效;suid 只能做用於二進制文件。 302 303 目錄 r 權限代表可使用ls命令列出內容(必須也有使用ls命令選項的執行權限), w 權限代表文件能夠被添加或刪除(目錄必須也有執行權限), x 權限控制對目錄的訪問。用戶能夠 cd 到目錄中,使用讀訪問列出其中的內容。文件可使用寫訪問被移動或者拷貝到目錄中;只有屬主可使用 chmod 操做目錄,重命名目錄。 304 305 掛載的 ntfs 格式磁盤不能改變權限。 306 307 308 沒法建立文件:肯定全部上級目錄都有 w 權限,關閉 selinux( getenfore 查看 selinux 是否啓用 ), 309 310 文件沒有權限使用 ll 查看時有可能顯示全部的權限爲「 ? 」。 311 312 普通用戶目錄沒有 x 權限時 root 用戶仍是有 x 權限。當普通用戶的目錄沒有 x 權限時除了 root 用戶外其它全部用戶沒法在目錄下建立或修改任何文件(沒法使用 rw 權限),包括其子目錄。若是用戶能夠進入某一個目錄(擁有 x 權限),可是沒有該目錄的讀寫權限(沒有 rw ),那麼沒法列出當前目錄下有哪些文件,可是仍然能夠編輯該目錄下本身擁有 w 權限的文件,若是對該文件不具備 r 權限,就不能用 vim 等編輯,只能使用其餘方式往裏面寫數據。 313 314 權限沒有遞歸的現象,若是用戶在父目錄沒有讀、寫或者執行的權限,不影響子目錄下的讀寫權限。 315 316 317 318 文件隱藏屬性 319 320 321 什麼?檔案還有隱藏屬性?光是那九個權限就快要瘋掉了,居然還有隱藏屬性,真是要命~ 可是沒辦法,就是有檔案的隱藏屬性存在啊!不過,這些隱藏的屬性確實對於系統有很大的幫助的~ 尤爲是在系統安全 (Security) 上面,重要的緊呢!不過要先強調的是,底下的chattr指令只能在Ext2/Ext3/Ext4的 Linux 傳統檔案系統上面完整生效, 其餘的檔案系統可能就無法完整的支援這個指令了,例如 xfs 僅支援部份參數而已。底下我們就來談一談如何設定與檢查這些隱藏的屬性吧! 322 323 chattr (設定檔案隱藏屬性) 324 325 [root@study ~]# chattr [+-=][ASacdistu] 檔案或目錄名稱 326 選項與參數: 327 + :增長某一個特殊參數,其餘本來存在參數則不動。 328 - :移除某一個特殊參數,其餘本來存在參數則不動。 329 = :設定必定,且僅有後面接的參數 330 331 A :當設定了 A 這個屬性時,若你有存取此檔案(或目錄)時,他的存取時間 atime 將不會被修改, 332 可避免 I/O 較慢的機器過度的存取磁碟。(目前建議使用檔案系統掛載參數處理這個項目) 333 S :通常檔案是非同步寫入磁碟的(原理請參考前一章sync的說明),若是加上 S 這個屬性時, 334 當你進行任何檔案的修改,該更動會『同步』寫入磁碟中。 335 a :當設定 a 之後,這個檔案將只能增長資料,而不能刪除也不能修改資料,只有root 才能設定這屬性 336 c :這個屬性設定之後,將會自動的將此檔案『壓縮』,在讀取的時候將會自動解壓縮, 337 可是在儲存的時候,將會先進行壓縮後再儲存(看來對於大檔案彷佛蠻有用的!) 338 d :當 dump 程序被執行的時候,設定 d 屬性將可以使該檔案(或目錄)不會被 dump 備份 339 i :這個 i 可就很厲害了!他能夠讓一個檔案『不能被刪除、更名、設定連結也無法寫入或新增資料!』 340 對於系統安全性有相當大的助益!只有 root 能設定此屬性 341 s :當檔案設定了 s 屬性時,若是這個檔案被刪除,他將會被徹底的移除出這個硬碟空間, 342 因此若是誤刪了,徹底無法救回來了喔! 343 u :與 s 相反的,當使用 u 來設定檔案時,若是該檔案被刪除了,則資料內容其實還存在磁碟中, 344 可使用來救援該檔案喔! 345 注意1:屬性設定常見的是 a 與 i 的設定值,並且不少設定值必須要身為 root 才能設定 346 注意2:xfs 檔案系統僅支援 AadiS 而已 347 348 349 範例:請嘗試到/tmp底下創建檔案,並加入 i 的參數,嘗試刪除看看。 350 chattr +i attrtest <==給予 i 的屬性 351 rm attrtest <==嘗試刪除看看 352 rm: remove regular empty file `attrtest'? y 353 rm: cannot remove `attrtest': Operation not permitted # 看到了嗎?呼呼!連 root 也沒有辦法將這個檔案刪除呢!趕緊解除設定! 354 355 範例:請將該檔案的 i 屬性取消 356 chattr -i attrtest 357 358 這個指令是很重要的,尤爲是在系統的資料安全上面!由於這些屬性是隱藏的性質,因此須要以 lsattr 才能看到該屬性呦!其中,個人認為最重要的當屬 +i 與 +a 這個屬性了。+i 能夠讓一個檔案無法被更動,對於須要強烈的系統安全的人來說, 真是相當的重要的!裡頭還有相當多的屬性是須要 root 才能設定的呢! 359 360 此外,若是是 log file 這種的登錄檔,就更須要 +a 這個能夠增長,可是不能修改舊有的資料與刪除的參數了!怎樣?很棒吧! 未來提到登錄檔 (十八章) 的認知時,我們再來聊一聊如何設定他吧! 361 362 363 Linux 文件類型 364 365 普通文件 - 、目錄文件 d 、字符設備文件 c 、塊設備文件 b 、符號連接文件 l 、套接口文件 s 、先進先出文件 f 366 367 368 369 文件的命名規則 370 371 372 最大長度:文件或目錄名最大長度爲 127 箇中文字符,英文則能夠支持 255 個數字字母字符,包含完整路徑名稱及目錄 (/) 之完整檔名爲 4096 個字符。 373 非數字字母字符:一些非數字字母字符或者元字符是可用的:「 _ - . + 」;容許但要再終端轉義的符號「 ; < > * ? ~ [ ] & | " $ 」,由於這些符號再終端中有特殊含義。 374 文件名擴展:文件名能夠包含零個或多個擴展名。擴展名常被一個應用追加到文件的末端。擴展名一般是1個到3個字符,追加到文件名的末端,以前有一個句點。 375 目錄名的擴展名:目錄名通常不包含擴展名,可是也沒有規則反對這一點。 376 大小寫敏感:Linux文件和目錄名是大小寫敏感的,通常規則都是使用小寫字母。 377 378 379 380 根文件系統 381 382 383 系統啓動掛載的第一個文件系統。 384 385 系統第一個進程是全部進程的祖先,由它fork出來的進程將繼承它的根目錄。 386 387 388 與根目錄的關係:根目錄就是「 / 」,和文件系統關係不大。 389 390 391 392 經常使用文件系統( vfs ) 393 394 df -T 395 396 ext2 397 ext3 398 ext4 399 fat32 W95 FAT32 400 ntfs 401 xfat 402 nfs 403 CIFS Windows 網絡鄰居使用的協議,同 NFS 404 vfat 同 fat32 405 xfs 406 407 408 409 文件系統操做 410 411 mkfs.xfs -f /dev/mapper/centos-home 格式化 412 413 414 415 邏輯卷 416 417 418 準備生產環境中數據目錄(邏輯卷) 419 420 fdisk /dev/sda 建立一個邏輯分區/dev/sda6 421 p、打印分區表 422 n、新建一個新分區:e 表示擴展分區,p 表示主分區;按" p "鍵出現提示:"Partition number (1-4): "選擇主分區號,輸入"1"表示第一個主分區;直接按回車表示從 1 柱面開始分區,提示最後一個柱面或大小時輸入 +5620M 按回車表示第一個分區爲5G空間 423 d、刪除一個分區 424 q、退出不保存 425 t、指定分區類型:輸入 L 顯示各類文件系統對應的 id 值,輸入 id 就能夠改變分區類型了( GPT、FAT3二、EFI、AIX、Linux、Linux swap、Linux LVM ) 426 w、把分區寫進分區表,保存並退出 427 428 格式化分區(邏輯卷不用這一步) 429 { 430 $ mkfs.ext3 /dev/hdd1 431 } 432 433 建立邏輯卷 434 pvcreate /dev/sda6 435 vgcreate myvg /dev/sda6 436 lvcreate -L 10G -n mydata /dev/myvg 437 438 格式化邏輯卷 439 mke2fs -t ext4 /dev/myvg/mydata 440 441 建立數據目錄 442 #mkdir -pv mydata/data 443 444 445 446 ext2 詳細介紹 447 448 449 超級塊 450 451 用來存儲了該文件系統的大量基本信息,包括塊的大小、每塊組中包含的塊數等。同時,系統會對超級塊進行備份,備份被存放在塊組的第一個塊中。超級塊的起始位置爲其所在分區的第1024個字節,佔用1KB的空間。 452 453 struct ext2_super_block { 454 __le32 s_inodes_count; // 文件系統中inode的總數 455 __le32 s_blocks_count; // 文件系統中塊的總數 456 __le32 s_r_blocks_count; // 保留塊的總數 457 __le32 s_free_blocks_count; // 未使用的塊的總數(包括保留塊) 458 __le32 s_free_inodes_count; // 未使用的inode的總數 459 __le32 s_first_data_block; // 塊ID,在小於1KB的文件系統中爲0,大於1KB的文件系統中爲1 460 __le32 s_log_block_size; // 用以計算塊的大小(1024算術左移該值即爲塊大小) 461 __le32 s_log_frag_size; // 用以計算段大小(爲正則1024算術左移該值,不然右移) 462 __le32 s_blocks_per_group; // 每一個塊組中塊的總數 463 __le32 s_frags_per_group; // 每一個塊組中段的總數 464 __le32 s_inodes_per_group; // 每一個塊組中inode的總數 465 __le32 s_mtime; // POSIX中定義的文件系統裝載時間 466 __le32 s_wtime; // POSIX中定義的文件系統最近被寫入的時間 467 __le16 s_mnt_count; // 最近一次完整校驗後被裝載的次數 468 __le16 s_max_mnt_count; // 在進行完整校驗前還能被裝載的次數 469 __le16 s_magic; // 文件系統標誌,ext2中爲0xEF53 470 __le16 s_state; // 文件系統的狀態 471 __le16 s_errors; // 文件系統發生錯誤時驅動程式應該執行的操做 472 __le16 s_minor_rev_level; // 局部修訂級別 473 __le32 s_lastcheck; // POSIX中定義的文件系統最近一次檢查的時間 474 __le32 s_checkinterval; // POSIX中定義的文件系統最近檢查的最大時間間隔 475 __le32 s_creator_os; // 生成該文件系統的操做系統 476 __le32 s_rev_level; // 修訂級別 477 __le16 s_def_resuid; // 報留塊的默認用戶ID 478 __le16 s_def_resgid; // 保留塊的默認組ID 479 // 僅用於使用動態inode大小的修訂版(EXT2_DYNAMIC_REV) 480 __le32 s_first_ino; // 標準文件的第一個可用inode的索引(非動態爲11) 481 __le16 s_inode_size; // inode結構的大小(非動態爲128) 482 __le16 s_block_group_nr; // 保存此超級塊的塊組號 483 __le32 s_feature_compat; // 兼容特性掩碼 484 __le32 s_feature_incompat; // 不兼容特性掩碼 485 __le32 s_feature_ro_compat; // 只讀特性掩碼 486 __u8 s_uuid[16]; // 卷ID,應儘量使每一個文件系統的格式惟一 487 char s_volume_name[16]; // 卷名(只能爲ISO-Latin-1字符集,以’\0’結束) 488 char s_last_mounted[64]; // 最近被安裝的目錄 489 __le32 s_algorithm_usage_bitmap; // 文件系統採用的壓縮算法 490 // 僅在EXT2_COMPAT_PREALLOC標誌被設置時有效 491 __u8 s_prealloc_blocks; // 預分配的塊數 492 __u8 s_prealloc_dir_blocks; // 給目錄預分配的塊數 493 __u16 s_padding1; 494 // 僅在EXT3_FEATURE_COMPAT_HAS_JOURNAL標誌被設置時有效,用以支持日誌 495 __u8 s_journal_uuid[16]; // 日誌超級塊的卷ID 496 __u32 s_journal_inum; // 日誌文件的inode數目 497 __u32 s_journal_dev; // 日誌文件的設備數 498 __u32 s_last_orphan; // 要刪除的inode列表的起始位置 499 __u32 s_hash_seed[4]; // HTREE散列種子 500 __u8 s_def_hash_version; // 默認使用的散列函數 501 __u8 s_reserved_char_pad; 502 __u16 s_reserved_word_pad; 503 __le32 s_default_mount_opts; 504 __le32 s_first_meta_bg; // 塊組的第一個元塊 505 __u32 s_reserved[190]; 506 }; 507 508 inode 是固定長度的記錄項,它包含了有關文件的大部分信息,但不包含文件名;文件名和 inode 編號是存放在目錄項中的。 509 inode 包含: 510 * 文件的字節數 511 * 文件擁有者的User ID 512 * 文件的Group ID 513 * 文件的讀、寫、執行權限 514 * 文件的時間戳,共有三個:ctime指inode上一次變更的時間,mtime指文件內容上一次變更的時間,atime指文件上一次打開的時間。 515 * 連接數,即有多少文件名指向這個inode 516 * 文件數據block的位置 517 518 519 520 APPLE 文件系統 521 522 os文件資源管理器Finder 523 524 525 文件系統結構 526 527 符合unix傳統的目錄 528 /bin 傳統unix命令的存放目錄,如ls,rm,mv等。 529 /sbin 傳統unix管理類命令存放目錄,如fdisk,ifconfig等等。 530 /usr 第三方程序安裝目錄。 531 /usr/bin, /usr/sbin, /usr/lib 其中/usr/lib目錄中存放了共享庫(動態連接庫). 532 /etc 標準unix系統配置文件存放目錄,如用戶密碼文件/etc/passwd。此目錄實際爲指向/private/etc的連接。 533 /dev 設備文件存放目錄,如何表明硬盤的/dev/disk0。 534 /tmp 臨時文件存放目錄,其權限爲全部人任意讀寫。此目錄實際爲指向/private/tmp的連接。 535 /var 存放常常變化的文件,如日誌文件。此目錄實際爲指向/private/var的連接。 536 這些標準的Unix目錄在Finder中並不可見 537 538 os x特有的目錄 539 /Applications 應用程序目錄,默認全部的GUI應用程序都安裝在這裏; 540 /Library 系統的數據文件、幫助文件、文檔等等; 541 /Network 網絡節點存放目錄; 542 /System 他只包含一個名爲Library的目錄,這個子目錄中存放了系統的絕大部分組件,如各類framework,以及內核模塊,字體文件 543 /Users 存放用戶的我的資料和配置。每一個用戶有本身的單獨目錄。 544 /Volumes 文件系統掛載點存放目錄。 545 /cores 內核轉儲文件存放目錄。當一個進程崩潰時,若是系統容許則會產生轉儲文件。 546 /private 裏面的子目錄存放了/tmp, /var, /etc等連接目錄的目標目錄。 547 548 549 550 問題 551 552 553 554 tips