解決linux下無法添加用戶和組的問題(groupadd命令不可用)
今天需要給一個linux服務器安裝mysql,在安裝mysql的時候,出現錯誤提示:
[root@localhost softwaretools]# rpm -ivh MySQL-server-5.5.23-1.rhel5.x86_64.rpm
Preparing... ########################################### [100%]
1:MySQL-server ########################################### [100%]
chown: “mysql:mysql”: 無效的用戶
chown: “mysql:mysql”: 無效的用戶
因為mysql在安裝的時候需要創建mysql組和mysql用戶,看到這樣的錯誤,於是想到了,手工創建組和用戶,然後再重裝mysql。
結果執行命令:
[root@localhost softwaretools]# groupadd mysql
groupadd:無法打開組文件(groupadd: unable to open group file)
此時就奇怪了,當前用的明明是root用戶,為什麼沒有創建組和用戶的權限呢。
接下來,就是一堆百度、穀歌,各種博客論壇。
得出一點點結論:
1,添加用戶需要用到passwd和shadow這兩個文件
2,添加組需要用到shadow和gshadow這兩個文件
此時第一感覺,可能是文件權限的問題,使用 ls -l 命令發現權限正常。
奇怪的很了,於是又需要找度娘和穀哥,最終發現問題,找到了2個命令(lsattr和chattr),是因為隱藏權限在作怪:
對這2個命令的簡單做下說明:
對於某些有特殊要求的檔案(如服務器日誌)還可以追加隱藏權限的設定。這些隱藏權限包括: 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查看了一下這幾個文件:
[root@localhost ~]# lsattr /etc/passwd ------------- /etc/passwd [root@localhost ~]# lsattr /etc/group ----i-------- /etc/group [root@localhost ~]# lsattr /etc/shadow ------------- /etc/shadow [root@localhost ~]# lsattr /etc/gshadow ----i-------- /etc/gshadow
可以看到文件被設置的 i 這個隱藏權限,i:設定文件不能被刪除、改名、設定鏈接關係,同時不能寫入或新增內容。i參數對於文件 係統的安全設置有很大幫助。
既然這樣隻要把i權限去掉就應該好了。
使用命令chattr命令修改文件隱藏權限,執行如下命令:
chattr -i /etc/gshadow
chattr -i /etc/group
然後手工添加了一個用戶進行測試,結果可以正常執行了。
最後又將mysql徹底卸載後,重裝,一切順利。
最後更新:2017-04-04 07:03:06