顯示具有 帳號和權限 標籤的文章。 顯示所有文章
顯示具有 帳號和權限 標籤的文章。 顯示所有文章

2011年11月21日 星期一

權限與管理

檔案的類型與權限
ls -al
drwxr-xr-x 115 root     root     4096 2011-05-03 08:30 webmin
第一欄
第1字元:代表這是『目錄、檔案或連結檔』:
d是目錄,-是檔案,l為連結檔,b表示可供儲存的周邊設備,c表示序列埠設備,例如鍵盤、滑鼠,s表示socket。
接下來的字元中,以三個為一組,且均為『rwx』 的三個參數的組合,第一組為『檔案擁有者的權限』,第二組為『同群組的權限』;第三組為『其他非本群組的權限』,x這個欄位若為s,表示以擁有者或同群組的身分執行,若有t表示stickly bit,即使一般人有寫入的權限,但只有擁有者才能刪除。

檔案隱藏屬性:
chattr指令只能在Ext2/Ext3的檔案系統上面生效,其他的檔案系統可能就無法支援

chattr [+-=][ASacdistu] 檔案或目錄名稱
選項與參數:
+:增加某一個特殊參數
-:移除某一個特殊參數
=:設定

A:設定時,若你有存取此檔案(或目錄),他的存取時間 atime 將不會被修改,可避免過度的存取磁碟。
S:加上S這個屬性時,任何檔案的修改,會『同步』寫入磁碟中。
a:當設定之後,這個檔案只能增加資料,不能刪除也不能修改,只有root才能設定這個屬性。
c:設定之後,將會自動檔案『壓縮』,讀取時會自動解壓縮,
d:當 dump 程序被執行的時候,設定d屬性將可使該檔案(或目錄)不會被 dump 備份
i:讓一個檔案『不能被刪除、改名、設定連結也無法寫入或新增資料!』對於系統安全性有相當大的助益!只有 root 能設定此屬性
s:設定時,如果這個檔案被刪除,將會被完全的移除出硬碟!
u:與 s 相反的,如果該檔案被刪了,資料內容其實還存在磁碟中,可以來救援該檔案!
注意:常見的是 a 與 i 的設定值,很多設定值必須要身為 root 才能設定


顯示檔案隱藏屬性

lsattr [-adR] 檔案或目錄
選項與參數:
-a:將隱藏檔的屬性也列出來;
-d:如果接的是目錄,僅列出目錄本身的屬性而非目錄內的檔名;
-R:連同子目錄的資料也一併顯示出來!

參考資料:鳥哥的linux私房菜


2011年11月20日 星期日

配額

Quota 的使用限制
1.僅能針對整個 filesystem: (分割區)
  • 檢查/home 是否是個獨立的 filesystem,不過,不太建議在根目錄設定 Quot
    df -h /home  (-h    Display in Kb, Mb, or Gb )
2.檔案系統格式是否支援Quota
  • mount | grep home   檢查檔案格式
3.核心必須支援 quota :
4.安裝Quota的套件
  • apt-get install quota

暫時性手動加入 quota 的支援
  •  mount -o remount,usrquota,grpquota /home
永久性設定Quota的檔案系統 
在/etc/fstab第四欄位加入,usrquota,grpquota
vi /etc/fstab
LABEL=/home   /home  ext3   defaults,usrquota,grpquota  1 2

UUID=....  /home ext3 relatime,usrquota,grpquota 1 2

重新開機,檢查 /etc/mtab 有沒有usrquota

quotacheck :掃瞄檔案系統並建立 Quota 的記錄檔
quotacheck [-avugfM] [/mount_point]
選項與參數:
-a  :掃瞄所有在 /etc/mtab 內,含有 quota 支援的 filesystem,加上此參數後,/mount_point 可不必寫,
-u  :針對使用者掃瞄檔案與目錄的使用情況,會建立 aquota.user
-g  :針對群組掃瞄檔案與目錄的使用情況,會建立 aquota.group
-v  :顯示掃瞄過程的資訊;
-f  :強制掃瞄檔案系統,並寫入新的 quota 設定檔 (危險)
-M  :強制以讀寫的方式掃瞄檔案系統,只有在特殊情況下才會使用。
-f 與 -M 是在檔案系統可能已經啟動 quota 了,但想要重新掃瞄檔案系統時,系統會要求加入的選項啦 (擔心有其他人已經使用 quota 中)!

例:quotaoff -a     //先關閉quota
        quotacheck -uvg /home      //建立Quota的記錄檔

建立過程中會顯示記錄檔尚未建立而已,可以忽略不理!
 
使用ll -d /home/a* (ll 表示ls -l)
會顯示aquota記錄檔  /home/aquota.group  /home/aquota.user


edquota :編輯帳號/群組的限值與寬限時間

edquota 是 edit quota 的縮寫
edquota [-u username] [-g groupname]
edquota -t  <==修改寬限時間
edquota -p 範本帳號 -u 新帳號
選項與參數:
-u  :後面接帳號名稱。設定 username 的限制值;
-g  :後面接群組名稱。設定 groupname 的限制值;
-t  :可以修改寬限時間。
-p  :複製範本。將範本帳號這個人的 quota 限制值複製給 新帳號

編輯某一帳號配額
edquota -u myquota1
Disk quotas for user myquota1 (uid 710):
  Filesystem    blocks  soft   hard  inodes  soft  hard
  /dev/hda3         80     0      0      10     0     0

七個欄位分別的意義為:
  1. 檔案系統 (filesystem):
  2. 磁碟容量 (blocks):這個數值是 quota 自己算出來的,單位為 Kbytes,請不要更動他;
  3. soft:磁碟容量 (block) 的 soft 限制值,單位亦為 KB,(警告上限)
  4. hard:block 的 hard 限制值,單位 KB;(容量上限)
  5. 檔案數量 (inodes):這是 quota 自己算出來的,單位為個數,請不要更動他;
  6. soft:inode 的 soft 限制值;
  7. hard:inode 的 hard 限制值;
當 soft/hard 為 0 時,表示沒有限制的意思。可只需設定 blocks 的 soft/hard ,inode 可不用設定。

範例一: /dev/hda3 80 250000 300000 10 0 0

套用某一帳號設定

範例一:edquota -p  myquota1 -u myquota2    //將p的範例給使用者u
範例二:edquota -p  myquota1  myquota2

寬限時間修改
edquota -t

edquota -ut

Quota限制值的報表
個人報表
quota [-uvs] [username]
quota [-gvs] [groupname]
選項與參數:
-u  :後面可以接 username ,表示顯示出該使用者的 quota 限制值。若不接 username,表示顯示出執行者的 quota 限制值。
-g  :後面可接 groupname ,表示顯示出該群組的 quota 限制值。
-v  :顯示每個用戶在 filesystem 的 quota 值;
-s  :使用 1024 為倍數來指定單位,會顯示如 M 之類的單位!
例: quota -uvs myquota1 

repquota :針對檔案系統的限額做報表
repquota -a [-vugs]
選項與參數:
-a  :直接到 /etc/mtab 搜尋具有 quota 標誌的 filesystem ,並報告 quota 的結果;
-v  :輸出的資料將含有 filesystem 相關的細部資訊;
-u  :顯示出使用者的 quota 限值 (這是預設值);
-g  :顯示出個別群組的 quota 限值。
-s  :使用 M, G 為單位顯示結果

例:repquota -auvs   或           repquota -a


啟動 quota 的服務
quotaon [-avug]
quotaon [-vug] [/mount_point]
選項與參數:
-u  :針對使用者啟動 quota (aquota.user)
-g  :針對群組啟動 quota (aquota.group)
-v  :顯示啟動過程的相關訊息;
-a  :根據/etc/mtab 內的 filesystem 設定啟動有關的quota,若不加 -a 的話,則後面就需要加上特定的 filesystem!

例:quotaon -av

關閉 quota 的服務
quotaoff [-a]
quotaoff [-ug] [/mount_point]
選項與參數:
-a  :全部filesystem 的 quota 都關閉 (根據 /etc/mtab)
-u  :僅針對後面接的那個 /mount_point 關閉 user quota
-g  :僅針對後面接的那個 /mount_point 關閉 group quota

 例:quotaoff -a


測試
測試一:利用一般使用者的身份,建置一個 270MB 的大檔案,並觀察 quota 結果!
dd if=/dev/zero of=bigfile bs=1M count=270


以下是dd說明
dd 可以讀取磁碟裝置的內容(幾乎是直接讀取磁區"sector"),將整個裝置備份成一個檔案呢!
dd if="input_file" of="output_file" bs="block_size" count="number"
選項與參數:
if   :就是 input file 囉~也可以是裝置喔!
of   :就是 output file 喔~也可以是裝置;
bs   :規劃的一個 block 的大小,若未指定則預設是 512 bytes(一個 sector 的大小)
count:多少個 bs 的意思。

 

2011年11月17日 星期四

帳號與群組

root 的UID及GID皆為0

預設帳號:
Apache或是nobody 執行apache的帳號
dovecot  執行dovecot (pop3伺服器)的帳號
named或bind 執行(DNS伺服器) 的帳號
lp  列印服務的帳號
postfix
squid  (PROXY)

新增帳號設定檔

/etc/default/useradd
SHELL=/bin/sh   //可改為 /bin/bash
# GROUP=100
# HOME=/home
//預設建立一個與帳號相同的群組,在/home 之下
# INACTIVE=-1    //預設不定義密碼變更期限
# EXPIRE=          //預設不定義帳號失效期限


/etc/login.defs
MAIL_DIR        /var/mail    //郵件存放目錄
FAILLOG_ENAB            yes   //登錄失敗狀況

LOG_OK_LOGINS           no      //是否紀綠登入成功的帳號
#記錄 su 的活動
SYSLOG_SU_ENAB          yes
SYSLOG_SG_ENAB          yes
#記錄登入失敗的帳號,可使用lastb查詢
FTMP_FILE       /var/log/btmp
#密碼時效控制
PASS_MAX_DAYS   99999   //可使用日數
PASS_MIN_DAYS   0    //多少日內不得變更
PASS_WARN_AGE   7  //失效幾日前提出警告

# 使用useradd自動取得UID的範圍
UID_MIN                  1000
UID_MAX                 60000
#使用groupadd自動取得GID的範圍
GID_MIN                  1000
GID_MAX                 60000
#密碼錯誤嘗試登入次數
LOGIN_RETRIES           5
#  需在幾秒內登入系統
LOGIN_TIMEOUT           60
#如果帳號目錄不存在,允許登入
DEFAULT_HOME    yes
# 如果群組中沒有其他帳號,使用userdel移除帳號時會一併將該群組刪除
USERGROUPS_ENAB yes


/etc/skel/.bashrc
/etc/skel/.profile

新增帳號
useradd [-u UID] [-g 初始群組] [-G 次要群組] [-mM][-c 說明欄] [-d 家目錄絕對路徑] [-s shell] 使用者帳號名
選項與參數:
-u  :後面接的是 UID ,
-g  :群組名稱, initial group
-G  :群組名稱,還可以加入的群組
-M  :強制!不要建立使用者家目錄!(系統帳號預設值)
-m  :強制!要建立使用者家目錄!(一般帳號預設值)
-c  :說明
-d  :指定某個目錄成為家目錄,而不要使用預設值。務必使用絕對路徑!
-r  :建立一個系統的帳號,這個帳號的 UID 會有限制
-s  :後面接一個 shell ,若沒有指定則預設是 /bin/bash
-e  :後面接一個日期,格式為『YYYY-MM-DD』帳號失效日
-f  :密碼是否會失效。0為立刻失效,-1 為永遠不失效(密碼只會過期而強制於登入時重新設定而已。)


範例一:
useradd -m peter
step 01 /etc/default/useradd
step 02  /etc/login.defs
step 03  /etc/skel/.bash* 複製到該帳號的根目錄之下
/etc/skel/ 預設有 .bashrc  .profile  檔案,由於/etc/default/useradd  指定 SKEL=/etc/skel,因此新增帳號時,會將此目錄下的檔案複製到使用者帳號根目錄下。


範例二:
useradd -u 501 -g 100 -G 1001 -d /home/peter -m peter
由於加了 -m 所以系統會將  /etc/skel 下的 profile 複製到 /home/peter之下的 .bash* ,此外,還有mail spool的相關檔案


範例三:新增與root相同權限的帳號
useradd miffy
passwd miffy
將 miffy 的 uid 與 gid 改為0


useradd 的預設值
useradd -D
GROUP=100        <==預設的群組
HOME=/home        <==預設的家目錄所在目錄
INACTIVE=-1        <==密碼失效日
EXPIRE=            <==帳號失效日
SHELL=/bin/bash        <==預設的 shell
SKEL=/etc/skel        <==使用者家目錄的內容資料參考目錄
CREATE_MAIL_SPOOL=yes   <==是否主動幫使用者建立郵件信箱(mailbox)


刪除帳號
userdel


連根目錄一起刪除
userdel  -r

usermod [-cdegGlsuLU] username   修改帳號
-c  :後面接帳號的說明
-d  :後面接帳號的家目錄
-e  :後面接日期,格式是 YYYY-MM-DD,也就是在 /etc/shadow 內的第八個欄位
-f  :後面接天數,為 shadow 的第七欄位。
-g  :後面接初始群組,修改 /etc/passwd 的第四個欄位!
-G  :後面接次要群組,修改使用者能夠支援的群組,修改的是 /etc/group
-a  :與 -G 合用,可『增加次要群組的支援』而非『設定』
-l  :後面接帳號名稱。亦即是修改帳號名稱, /etc/passwd 的第一欄!
-s  :後面接 Shell 的實際檔案,如 /bin/bash 或 /bin/csh
-u  :後面接 UID 數字
-L  :暫時將使用者的密碼凍結,僅改 /etc/shadow 的密碼欄。
-U  :將 /etc/shadow 密碼欄的 ! 拿掉,帳號可恢復使用

gpasswd:群組管理員功能   
gpasswd groupname
gpasswd [-A user1,...] [-M user3,...] groupname
gpasswd [-rR] groupname
選項與參數:
    :若沒有任何參數時,表示給予 groupname 一個密碼(/etc/gshadow)
-A  :將 groupname 的主控權交由後面的使用者管理(該群組的管理員)
-M  :將某些帳號加入這個群組當中!
-r  :將 groupname 的密碼移除
-R  :讓 groupname 的密碼欄失效
gpasswd [-ad] user groupname
-a  :將某位使用者加入到 groupname 這個群組當中!
-d  :將某位使用者移除出 groupname 這個群組當中。

groupadd 建立群組
groupadd testgroup  <==建立群組

資料來源:鳥哥的 Linux 私房菜 

相關設定檔
/etc/passwd  帳號設定檔
1.帳號名稱:
2.密碼:加密過的密碼欄位,若使用/etc/shadow,則此一欄位為x。若未使用shadow,且密碼欄位為*,則無法使用login
3.UID:使用者識別碼,0(系統管理員),1~1000(系統帳號)
4.GID:主要群組,定義在 /etc/group
5.使用者資訊說明欄:註解
6.家目錄:
7.Shell:(與系統的核心溝通以進行使用者的操作任務),若為 /sbin/nologin 無法登入

若是不想讓帳號登入,除密碼欄位設為*外,可使用passwd -l user ,或是在shell填入 /sbin/nologin 

/etc/shadow 加密過的密碼檔
1.帳號名稱:
2.密碼:加密過的密碼欄位,在此欄位前加上 ! 或 * 改變密碼欄位長度,就會讓密碼『暫時失效』了。
3.最近更動密碼的日期
4.密碼不可被更動的天數,0沒限制
5.密碼需要重新變更的天數,99999沒限制
6.密碼需要變更期限前的警告天數
7.密碼過期後的帳號寬限時間(密碼失效日),不過如果密碼過期了, 那當你登入系統時,系統會強制要求你必須要重新設定密碼才能登入繼續使用喔,
8.帳號失效日期:
9.保留

日期的時間是以 1970 年 1 月 1 日作為 1 而累加的日期

/etc/group
1.群組名稱:
2.群組密碼:這個設定通常是給『群組管理員』使用的,目前很少有這個機會設定群組管理員,密碼已經移動到 /etc/gshadow去,這個欄位只會存在一個『x』
3.GID:就是群組的 ID 啊
4.此群組支援的帳號名稱:若有多個人員,以『,』隔開


/var/mail/帳號名稱  使用者郵件

newgrp: 有效群組的切換
exit 離開回原有效群組
參考資料:鳥哥的 Linux 私房菜