linux redhat5.5 环境,今天在新建组的时候报错:
# groupadd beagrp groupadd: unable to open group file
感觉很奇怪,因为用的是root用户,以前没碰到过。
直接使用vi编辑也是不行,在保存的时候报:
E45: 'readonly' option is set (add ! to override)
这个错误,使用ls -l查看passwd和group的权限:
# ls -l passwd -rw-r--r-- 1 root root 1296 Jul 10 01:51 passwd # ls -l group -rw-r--r-- 1 root root 574 Jul 10 01:51 group
后来baidu了下,发现暗藏玄机:lsattr和chattr
对于某些有特殊要求的档案(如服务器日志)还可以追加隐藏权限的设定。这些隐藏权限包括: Append only (a), compressed (c), no dump (d), immutable (i), data journalling (j),secure deletion (s), no tail-merging (t), undeletable (u), no atime updates (A), synchronous directory updates (D), synchronous updates (S), and top of directory hierarchy (T).
lsattr命令是查看隐藏权限设定情况的,chattr是变更隐藏权限的命令。
# lsattr passwd ----i-------- passwd # lsattr group ----i-------- group # lsattr shadow ----i-------- shadow # lsattr gshadow ----i-------- gshadow
可以看到这两个文件都被设置的 i 这个隐藏权限,i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i 参数对于文件 系统的安全设置有很大帮助。通过 chattr -i 将该隐藏权限去掉。
# chattr -i passwd # chattr -i group # chattr -i shadow # chattr -i gshadow # lsattr passwd ------------- passwd # lsattr group ------------- group
通过这个操作后,就去掉隐藏权限了,接着增加组,能够完成成功。