轉自:http://hi.baidu.com/mantianxing521/blog/item/89887a2cf7170de48b139949.html

昨天公司楊公讓我在linux下給他個FTP空間,共享保存資料什么的。結果發現無法添加用戶。

在linux下,我做為root登錄,然后使用adduser填加用戶.
系統提示:adduser: unable to open password file

 

 

[root@localhost root]# ls -l /etc/shadow
-r--------    1 root     root         1110 3月 11 10:13 /etc/shadow
我用chmod 600 /etc/shadow
提示:chmod: 正在更改 ‘/etc/shadow’ 的權限: 不允許的操作

我回去我的red hat上看了下.
/etc/shadow文件的權限也是只有root只讀,但可以使用adduser命令.

adduser命令填加用戶時,不對shadow文件就行寫入操作嗎??

建議用pwck檢查一下passwd文件的合法性
[root@localhost root]# pwck
pwck: cannot open file /etc/passwd
shadow文件本來就是只讀的。你檢查一下passwd文件。
是不是加了權限位
lsattr /etc/passwd
chattr -i !$

[root@localhost root]# lsattr /etc/passwd
----i-------- /etc/passwd

從你的lsattr /etc/passwd執行結果來看, 你的文件加了權限保護
用chattr -i /etc/passwd去掉它
前幾天按一個網上的系統加固的文章,做了一次加固,沒想到是這個問題.

解決方法:
# cd /etc
# chattr +i passwd
# useradd foo
useradd: unable to open password file
# lsattr passwd
----i--- passwd
# chattr -i passwd
# lsattr passwd
- passwd
## chattr -i /etc/gshadow           //關鍵的一步

#useradd foo

 

 

         參考資料:

 

 

chattr可以防止關鍵文件被修改

  在linux下,有些配置文件是不允許任何人包括root修改的,為了防止被誤刪除或修改,

  可以設定該文件的"不可修改位(immutable)"。

  例如:

  chattr +i /etc/fstab

  如果需要修改文件則:

  chattr -i /etc/fstab

  以后再修改文件。

參考資料2:

chattr   [+-=]   [ASacdistu]   [文件或目錄名稱]
參數說明:
+-=:分別是"+"(增加)、"-"(減少)、"="(設定)屬性
A:當設定了屬性A,這個文件(或目錄)的存取時間atime(access)將不可被修改,可避免諸如手提電腦容易產生磁盤I/O錯誤的情況;
S:這個功能有點類似sync,是將數據同步寫入磁盤中,可以有效避免數據流失;
a:設定a后,這個文件將只能增加數據而不能刪除,只有root才能設定這個屬性;
c:設定這個屬性后,將會自動將此文件壓縮,在讀取時自動解壓縮。但是在存儲的時候,會現進行壓縮在存儲(對于大文件很有用);
d:當dump(備份)程序執行時,設定d屬性將可使該文件(或目錄)具有dump功效;
i:這個參數可以讓一個文件”不能被刪除、更名、設定鏈接,也無法寫入數據,對于系統安全有很大的助益
j:當使用ext3文件系統格式時,設定j屬性將使文件在寫入時先記錄在日志中,但是當filesystem設定參數為data=journalled時,由于已經設定了日志,所以這個屬性無效

s:當文件設定了s參數時,它會被完全移出這個硬盤空間
u:與s相反,當使用u配置文件時,數據內容其實還可以存在于磁盤中,可以用來取消刪除

示例:
chattr   +i   /etc/shadow    //該文件無法更動了

chattr   -i   /etc/shadow   //解除該屬性

       這個指令比較重要,尤其是在系統的安全方面。由于這些屬性是隱藏性質,所以需要使用lsattr才能看到這些屬性。
   
lsattr   [-aR]
參數說明:
-a   :將隱藏文件的屬性也顯示出來
-R   :連同子目錄的數據一并顯示出來

chattr   +i   test1
lsattr