详解/etc/passwd附shadow,group
要添加、管理用户,下面这三个文件是必须了解滴,嘿嘿
/etc/passwd
下图即/etc/passwd的部分内容
结构、组成一目了然;一个账号一行,每行由逗号分开的七个字段组成,它们分别表示:
登录名:密码:UID:GID:用户详细信息:主目录:SHELL
其中:
登录名:即用户名。它可以包含除冒号和换行符之外的任何字符,但一般不超过32字符(当使用NIS时,登录名长度被限制在8个字符以内);它是区分大小写的。
对于个人用户来说,取个什么样的名就随您的便啦,你的地盘听你的!
不过对于系统管理员来说,命名就不再么简单随意啦!他们都有一套合理的命名方案滴!这是为什么呢?你想想哈,作为一个专业的系统管理员他要管理多少个账户?如果没有一个合理的命名机制,后果可想而知。当然,这只是一个很浅显的原因!
密码: /etc/passwd以加密的形式存储口令,所以我们看到的都是X啦!加密后的口令都存放在/etc/shadow中
看到root后那一长串乱七八糟的东东了么,它对应的就是/etc.passwd中的X。
这个字段的值一般用passwd来设置,我们在新建用户的时候是不是要运行这个passwd命令来设置密码呢?当然,你也可以手工编辑/etc/passwd来新建用户,那么为了安全起见,请在密码字段里加一个星号或X。
UID:不解释,32位无符号整数。UID为0的用户为root,当然你也可以把其它用户的UID设为0,如果这样做了的话您可得悠着点!
系统中还定义了一些其它的用户,如UID为1的bin,UID为2的deamon等等,它们都是用来完成一些特定任务的。
对于系统的一般用户的UID,建议从500开始。
在你的环境下要保证UID的惟一
GID:类似于UID,不哆嗦!它的内容由/etc/group提供
用户详细信息:用户个人信息,如全名、电话、办公室房间号等等;没有固定的格式,一般由逗号分隔。
主目录:用户登录后他们指定的SHELL要进入的目录。
如果登录时找不到用户主目录系统会有相关信息提示如找不到或没有主目录什么的。
如果把/etc/login.defs中的DEFAULT_HOME设为NO的话会禁止没有主目录的用户登录;否则会允许登录并使用根目录。
登录SHELL:指定用户登录后使用的SHELL;bash是默认的SHELL。
如果这个字段不填的话会默认为BASH
用户可以使用chsh命令来改变自己所用的SHELL
有关于chsh命令:
选项
-s, --shell :变更你的登入shell.
-l, --list-shells :列出纪录在 /etc/shells 的shell。
-u, --help
-v, --version
例:
#SHELL要用绝对路径!
/etc/shadow:
如下图
每个用户一行,每行由八个逗号分开的九个字段组成:
登录名:加密后的口令:上次修改口令时间:两次修改口令时间之间最少的间隔天数:两次修改口令时间之间最多间隔天数:提前多少天警告用户口令即将过期:在口令过期多少天后禁用账号:账号过期日期:保留字段,目前为空
/etc/shadow中指定的绝对日期是从1970/1/1-现在 的天数。只有前两个字段要求非空!
其中:
1. 登录名和/etc/passwd中的登录名相同。它将用的passwd和shadow中的记录联系在一起。
2. 同/etc/passwd中的口令
3. 用户上次修改口令的时间,通常由passwd命令填写
4. 其它的都很明显啦,不说啦,呵呵
/etc/group:
如下图
每行代表一个组,由三个逗号分开的四个字段组成;
分别对应 组名:口令:GID号:组成员