[linux] note 使用者群組、檔案權限概念、目錄配置

touch : 建立空檔案 / 改變檔案的timestamp

  • usage : touch [檔名]
    •  touch [選項參數] [檔名]

chgrp : 改變所屬群組
  • usage : chgrp [-R] [目錄名稱 or檔名]
chown : 改變擁有者 
  • usage : chown [-R] [帳號名稱] [檔名 or 目錄名稱]
    •   chown [-R] [帳號名稱:群組名稱] [檔案 or 目錄]
  • ex :      chown bin install.log
    •  chown root:root install.log
cp : 複製檔案
  • usage : cp 來源檔名 目的檔名
  • cp .bashrc .bashrc_test
  • ex: cp .bashrc .bashrc_test
chmod : 改變權限

對於檔案而言
  •  r   read         4         可讀取檔案內容
  • w  write         2        可以新增修改檔案內容,但不包含刪除
  • x   execute     1        該檔案具有被系統執行的權限
對於目錄而言
  •  r   read         4         
    • 具有讀取目錄結構清單的權限
  • w  write         2        
    • 建立新的檔案與目錄;
    • 刪除已經存在的檔案與目錄(不論該檔案的權限為何!)
    • 將已存在的檔案或目錄進行更名;
    • 搬移該目錄內的檔案、目錄位置。
  • x   execute     1        
    • 使用者能否進入該目錄成為工作目錄
使用者角色
  • u     user         使用者也就是擁有此檔案/目錄者本身
  • g     group       群組
  • o     other       其他人
  • a     all            全部,也就是u+g+o
每種角色分數計算範例
  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others = --- = 0+0+0 = 0
usage : chmod [-R] [xyz] [目錄名稱or檔案名稱]
           chmod [-R] [使用者角色][+ or -][rwx組合] [目錄名稱or檔案名稱]

chmodu
g
o
a
+(加入)
-(除去)
=(設定)
r
w
x

檔案或目錄
ex: chmod 740 filename
     chmod u=rwx,go=rx .bashrc
   注意  u=rwx,go=rx 是連在一起的,中間並沒有任何空白字元

檔案種類
  • - : 正規檔案
    • 純文字檔
      • 可用cat列出裡面內容不會有亂碼
    • 二進位檔
      • 可執行檔如cat等
    • 資料格式檔
      • 有些程式在運作的過程當中會讀取某些特定格式的檔案,那些特定格式的檔案可以被稱為資料檔 (data file)。舉例來說,我們的Linux在使用者登入時,都會將登錄的資料記錄在 /var/log/wtmp那個檔案內,該檔案是一個data file,他能夠透過last這個指令讀出來! 但是使用cat時,會讀出亂碼
  • directory    d : 目錄
  •    link          l  : 連結檔 (似Windows的捷徑)
  • device 
    • block              b  區塊設備檔
      • 硬碟如 : /dev/sda
    • character        c   字元設備檔
      • 滑鼠鍵盤等
  • socket
    • 通常被用在網路上的資料承接
  • FIFO (pipe)             p
    • 解決多個程序同時存取一個檔案所造成的錯誤問題
/
  • 與開機/還原/修復等動作有關
  • 不要放在太大的分割槽,易造成效率不佳
/bin 
  • 系統有很多放置執行檔的目錄
  • /bin放置的是在單人維護模式下還能夠被操作的指令
  • 主要有
    •  cat
    •  chmod
    •  chown
    •  date
    •  mv
    •  mkdir
    •  cp
    •  bash等

/boot 
  • 這個目錄主要在放置開機會使用到的檔案
    • Linux核心檔案以及開機選單與開機所需設定檔等
    • Linux kernel常用的檔名為:vmlinuz
/dev 
  • 在Linux系統上,任何裝置與周邊設備都是以檔案的型態存在於這個目錄當中的
  • 透過存取這個目錄底下的某個檔案,就等於存取某個裝置囉
  • 比較重要的檔案有
    • /dev/null
    •  /dev/zero
    •  /dev/tty
    •  /dev/lp*
    •  /dev/hd*
    •  /dev/sd*
/etc 
  • 系統主要的設定檔幾乎都放置在這個目錄內
    • 例如人員的帳號密碼檔、 各種服務的啟始檔等等。一般來說,
    • 這個目錄下的各檔案屬性是可以讓一般使用者查閱的, 但是只有root有權力修改。
    • 比較重要的檔案有: /etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/ 等
    • 其下重要的目錄有:
      • /etc/init.d/:所有服務的預設啟動 script 都是放在這裡的,例如要啟動或者關閉 iptables 的話:『 /etc/init.d/iptables start』、『/etc/init.d/iptables stop』
      • /etc/xinetd.d/:這就是所謂的super daemon管理的各項服務的設定檔目錄。
      • /etc/X11/:與 X Window 有關的各種設定檔都在這裡,尤其是 xorg.conf 這個 X Server 的設定檔。
/home
  •  這是系統預設的使用者家目錄(home directory)。
  • ~:目前這個使用者的家目錄
  • ~test : test 的家目錄
/lib 
  • /lib放置的則是在開機時會用到的函式庫, 以及在/bin或/sbin底下的指令會呼叫的函式庫
  • /lib/modules/這個目錄會放置核心相關的模組(驅動程式)
/media 
  • /media底下放置的就是可移除的裝置
    • 軟碟
    • 光碟
    • DVD等等裝置都暫時掛載於此
    • 常見的檔名有
      • /media/floppy 
      • /media/cdrom
/mnt 
  • 如果妳想要暫時掛載某些額外的裝置,一般建議可以放置到這個目錄中
  • 這個目錄的用途與/media相同,有了/media之後,這個目錄就用來暫時掛載用了
/opt 
  • 這個是給第三方協力軟體放置的目錄
  • 什麼是第三方協力軟體啊? 舉例來說,KDE這個桌面管理系統是一個獨立的計畫,不過他可以安裝到Linux系統中,因此KDE的軟體就建議放置到此目錄下了。 另外,如果妳想要自行安裝額外的軟體(非原本的distribution提供的),那麼也能夠將你的軟體安裝到這裡來。 不過,以前的Linux系統中,我們還是習慣放置在/usr/local目錄下
/root 
  • 系統管理員(root)的家目錄
  • 進入單人維護模式而僅掛載根目錄時, 該目錄就能夠擁有root的家目錄,所以我們會希望root的家目錄與根目錄放置在同一個分割槽中。
/sbin 
  •  放在/sbin底下的為開機過程中所需要的
  • 包括
    • 開機
    • 修復
    • 還原系統所需要的指令
  • 某些伺服器軟體程式
    • 放置到/usr/sbin/當中
  • 至於本機自行安裝的軟體所產生的系統執行檔(system binary)
    • 放置到/usr/local/sbin/當中了
  • 常見的指令包括
    • fdisk
    • fsck
    • ifconfig
    • init, mkfs等
/srv
  •  srv可以視為『service』的縮寫
  • 一些網路服務啟動之後,這些服務所需要取用的資料目錄
  • 常見的服務例如WWW, FTP等等
  • 舉例來說,WWW伺服器需要的網頁資料就可以放置在/srv/www/裡面
/tmp 
  • 這是讓一般使用者或者是正在執行的程序暫時放置檔案的地方
  •  這個目錄是任何人都能夠存取的,需要定期的清理
  • 重要資料不可放置在此目錄
  • 建議在開機時,應該要將/tmp下的資料都刪除
不可與根目錄分開的目錄
  • /etc:設定檔
  • /bin:重要執行檔
  • /dev:所需要的裝置檔案
  • /lib:執行檔所需的函式庫與核心所需的模組
  • /sbin:重要的系統執行檔

/lost+found
  • 使用標準的ext2/ext3檔案系統格式才會產生的一個目錄
  • 目的在於當檔案系統發生錯誤時, 將一些遺失的片段放置到這個目錄下
  • 這個目錄通常會在分割槽的最頂層存在
  • 例如你加裝一顆硬碟於/disk中,那在這個系統下就會自動產生『/disk/lost+found』
/proc
  • 本身是一個『虛擬檔案系統(virtual filesystem)』
  • 他放置的資料都是在記憶體當中
  • 包括
    • 系統核心
    • 行程資訊(process)
    • 周邊裝置的狀態
    • 網路狀態等等
  • 這個目錄下的資料都是在記憶體當中, 所以本身不佔任何硬碟空間
  • 比較重要的檔案
    •  /proc/cpuinfo
    •  /proc/dma
    •  /proc/interrupts
    •  /proc/ioports
    •  /proc/net/* 等
/sys
  • 跟/proc非常類似
  • 也是虛擬的檔案系統
  • 也是記錄與核心相關的資訊
  • 包括
    • 目前已載入的核心模組
    • 核心偵測到的硬體裝置資訊等
  • 這個目錄同樣不佔硬碟容量
/usr
  • usr = Unix Software Resource
    • /usr/X11R6/
      • 為X Window System重要資料所放置的目錄
      • 取名為X11R6是因為
        • 最後的X版本為第11版
        • 該版的第6次釋出之意
    • /usr/bin/  
      • 絕大部分的使用者可使用指令都放在這
      • 注意到他與/bin的不同之處。(是否與開機過程有關)
    • /usr/include/
      • c/c++等程式語言的檔頭(header)與包含檔(include)放置處
      • 當我們以tarball方式 (*.tar.gz 的方式安裝軟體)安裝某些資料時,會使用到裡頭的許多包含檔
    • /usr/lib/  
      • 包含各應用軟體的函式庫、目標檔案(object file),以及不被一般使用者慣用的執行檔或腳本(script)。 
    • /usr/local/  
      • 系統管理員在本機自行安裝自己下載的軟體(非distribution預設提供者),建議安裝到此目錄, 這樣會比較便於管理。舉例來說,你的distribution提供的軟體較舊,你想安裝較新的軟體但又不想移除舊版, 此時你可以將新版軟體安裝於/usr/local/目錄下,可與原先的舊版軟體有分別啦! 你可以自行到/usr/local去看看,該目錄下也是具有bin, etc, include, lib...的次目錄喔!
    • /usr/sbin/  
      • 非系統正常運作所需要的系統指令。最常見的就是某些網路伺服器軟體的服務指令(daemon)囉!
    • /usr/share/  
      • 放置共享文件的地方,在這個目錄下放置的資料幾乎是不分硬體架構均可讀取的資料,在此目錄下常見的還有這些次目錄:
      • /usr/share/man
        • 線上說明文件
      • /usr/share/doc
        • 軟體雜項的文件說明
      • /usr/share/zoneinfo
        • 與時區有關的時區檔案
      • /usr/src/
        • 一般原始碼建議放置到這裡,src有source的意思
        • 核心原始碼則建議放置到/usr/src/linux/目錄下
/var
  • /var就是在系統運作後才會漸漸佔用硬碟容量的目錄
  • 主要針對常態性變動的檔案
  • 包括
    • 快取(cache)
    • 登錄檔(log file)
    • 以及某些軟體運作所產生的檔案
      • 包括程序檔案(lock file, run file)
      • ex: MySQL資料庫的檔案等
  • /var/cache/
    • 應用程式本身運作過程中會產生的一些暫存檔
  • /var/lib/
    • 程式本身執行的過程中,需要使用到的資料檔案放置的目錄
    • 在此目錄下各自的軟體應該要有各自的目錄
    •  ex : MySQL的資料庫放置到/var/lib/mysql/而rpm的資料庫則放到/var/lib/rpm
  • /var/lock/  
    • 某些裝置或者是檔案資源一次只能被一個應用程式所使用,如果同時有兩個程式使用該裝置時, 就可能產生一些錯誤的狀況,因此就得要將該裝置上鎖(lock),以確保該裝置只會給單一軟體所使用
    • ex : 燒錄機正在燒錄一塊光碟,你想一下,會不會有兩個人同時在使用一個燒錄機燒片? 如果兩個人同時燒錄,那片子寫入的是誰的資料?所以當第一個人在燒錄時該燒錄機就會被上鎖, 第二個人就得要該裝置被解除鎖定(就是前一個人用完了)才能夠繼續使用。
  • /var/log/
    • 這是登錄檔放置的目錄!裡面比較重要的檔案如/var/log/messages, /var/log/wtmp(記錄登入者的資訊)等。
  • /var/mail/  
    • 放置個人電子郵件信箱的目錄
    • 也有可能是/var/spool/mail
  • /var/run/  
    • 某些程式或者是服務啟動後,會將他們的PID放置在這個目錄下
  • /var/spool/
    • 這個目錄通常放置一些佇列資料
    • 所謂的『佇列』就是排隊等待其他程式使用的資料
    •  這些資料被使用後通常都會被刪除
    • ex : 系統收到新信會放置到/var/spool/mail/中, 但使用者收下該信件後該封信原則上就會被刪除。信件如果暫時寄不出去會被放到/var/spool/mqueue/中, 等到被送出後就被刪除。如果是工作排程資料(crontab),就會被放置到/var/spool/cron/目錄中













留言

這個網誌中的熱門文章

[MySQL] schema 與資料類型優化

[翻譯] 介紹現代網路負載平衡與代理伺服器