转自: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