2010年9月21日 星期二
建立一個資料夾給學生上傳資料使用, 並且禁止刪除他人檔案
Sticky_bit、suid、sguid之說明與使用
對Linux使用者來說,suid、sguid、sticky bit是較進階之設定,在此詳細說明。
一、首先需理解Linux系統之檔案與目錄設定權限之方式;每個檔案與目錄皆由r(ead)-->4、w(rite)-->2、x(execute)-->1三個事件所規範,而執行此三項事件之人員有三種類別:u(ser)、g(roup)、o(ther)。
Ex: 如一個檔案權限是rwxrwxrwx,換算成數字即是777,第一個7代表user可對該檔案讀、寫、 執行,第二個7代表同一group的人可對該檔案讀、寫、執行,第三個7代表身份為other的人可對該檔案讀、寫、執行。
二、但有時你會看到檔案權限是1777的數字,為何會多一個'1'呢?
說明:suid、sguid、sticky bit所等價之數字依序是4、2、1,而他們佔用之位置都是每個身份(user、group、other)之'x'事件的位置。所以如果檔案權限是rwsrwsrwt,轉化成數字即是"7777"。第一個7的由來即是suid、sguid、sticky bit三個事件相加之結果。
三、而 suid、sguid、sticky bit之實際意義何在呢?
suid:如加入suid之權限即是該檔案得到特權,可任意存取該檔案擁有者能使用的全部系統資源。
sguid:如加入suid之權限即是該檔案得到特權,可任意存取該檔案群組擁有者能使用的全部系統資源。
sticky bit:這是比較常用到之事件,在Linux系統中,有/tmp和/var/tmp兩個目錄,是開放給所有user暫時存放檔案之處,也就是所有user在該目錄下皆有權力任意刪除別人之檔案;所以如果對該目錄下達sticky bit指令,即可防止user刪除別個user之檔案!由此可知,如果用samba系統之網管人員,當學生在繳交作業到共用資料夾時,即可下達1770給該共用目錄,防止學生刪掉他人檔案。
四、但有時您會發現rwSrwSrwT大寫字母又是什麼意思呢?
這表示x權限是沒有開放的(0),所以上述的寫法換算成數字即是7666。
[system]如何在Linux中把某個user加入群組 Howto: Linux Add User To Group
前言
在linux的系統中,user與group有著密不可分的關係。透過兩者間的權限設定而達到在操作linux系統上一層又一層緊密且安全的防護。
那麼,要如何針對user去指定其群組呢,讓我們來看以下的說明。
如何新增一個帳號並同時指定主群組(primary group)
在linux作業系統中,要增加一個使用者也就是新增一個帳號我們一般會下以下指令;
useradd username
所以增加一個andrew帳號就是︰
# useradd andrew
那麼,如果要新增一個帳號同時指定這個帳號的主群組(primary group)該如何下指令呢?如下︰
useradd -g {group-name} username
所以新增一個叫做andrew的帳號並同時指定andrew的主群組為rd則輸入︰
# useradd -g rd andrew
這裡要注意rd這個群組必須是已存在的,要確認rd群組是否存在可以下指令︰
# grep rd /etc/group
如果沒有任何資訊被顯示出來的表示rd群組並不存在,新增rd群組的指令如下︰
# groupadd rd
如此我們就成功新增了使用者andrew並同時指定他的主群組為rd。
如何新增一個帳號並同時指定副群組(secondary group)
那麼,假使我們要新增一個帳號並同時指定他的副群組又該如何設定呢?指令如下︰
useradd -G {group-name} username
這裡一樣要注意要加入的群組本身必須是已存在的。所以總結來說,當useradd後面接的選項是小寫的g就是加入主群組,大寫的G就是加入副群組。
如果要一次加入數個副群組舉例來說如下︰
# useradd -G admins,www,rd daniel
這裡表示新增一個叫daniel的帳號,並同時把此帳號加入admins、www、rd這幾個群組裡,也就是把要加入的數個群組用逗號串接起來即可。
修改已存在帳號的群組
前兩段都是針對新增帳號的群組所做的說明,那麼如果我們想要修改某個已存在的帳號的主群組和增加副群組呢?這裡用到usermod這個指令,修改主群組指令如下︰
# usermod -g admins andrew
這裡表示我們要把andrew這個帳號的主群組修改為admins。而以下指令︰
# usermod -a -G ftp daniel
則表示我們把daniel這個帳號加入到ftp這個群組。