这次主要说一下用户的管理以及相关的文件
先看一下
/etc/passwd
1. 账号名称:就是账号名称 !对应UID 用的!例如root 就是预设的系统管理员的账号名称
2. 密码: 早期的Unix 系统的密码是放在这个文件中的,不过由于这样一来很容易造成数据的被窃取
所以后来就将数据给他改放到/etc/shadow 中了,而这里你会看到一个x,但密码已经被移动
到shadow这个加密过后的文件
3. UID: 这个就是使用者识别码(ID) !通常Linux 对于UID 有几个限制需要了解一下 0 系统管理员
所以当你要作另一个系统管理员账号时,你可以将该账号的UID 改成0 即可;1~500 保留给系
统使用的ID,其实1~65534 之间的账号并没有不同,也就是除了0 之外,其它的UID 并没有不
一样,预设500 以下给系统作为保留账号只是一个习惯。这样的好处是,以named 为例,这个
程序的预设所有人named 的账号UID 是25 ,当有其它的账号同样是25 时,很可能会造成系统
的一些小问题!为了杜绝这样的问题,建议保留500 以前的UID 给系统 500~65535给一般使用
者用的
4. GID:这个与/etc/group 有关!其实/etc/group 与/etc/passwd 差不多,只是他是用来规范group的
5. 说明:这个字段基本上并没有什么用途,只是用来解释这个账号的意义而已 不过,如果您提供使用
finger 的功能时,这个字段可以提供很多的讯息 !
6. 宿主目录:这是使用者的宿主目录,以上面为例, root 的宿主目录在/root ,所以当root 登入之后
马上在的所在就是/root 里头 如果你有个账号的使用空间特别的大,你想要将该账号的宿
主目录移动到其它的硬盘去,没有错!可以在这里进行修改 !预设的使用者宿主目录
在/home/your ID name
7. Shell :所谓的shell 是用来沟通人类下达的命令与硬件之间真正动作的界面!命令解释器
我们通常使用/bin/bash 这个shell 来进行命令的下达!这里比较需要注意的是,有一个
shell可以用来替代成让账号无法登入的命令!那就是/bin/false 这个东西!这也可以用来
制作纯pop 邮件账号者的数据!
/etc/shadow
1. 账号名称:这个跟passwd 需要对应!也就是跟passwd 相同的意思
2. 密码:这个才是真正的密码,而且是经过编码过的密码 !你只会看到有一些特殊符号的字母就是了!
需要特别留意的是,虽然这些加密过的密码很难被解出来,但是 很难 不等于 不会 ,所以,
这个文件的预设属性是 -rw------- 亦即只有root 才可以读写就是了!你得随时注意,不要
不小心更动了这个文件的属性呢!另外,如果是在密码栏的第一个字符为 * 表示这个账号并
不会被用来登入的意思。
3. 上次更动密码的日期:这个字段记录了 更动密码的那一天 的日期,不过,很奇怪呀!在我的例子中
怎么会是11979 呢? ,这个是因为计算Linux 日期的时间是以1970 年1月1日
作为1 ,而1971 年1 月1 日则为366 !所以这个时间是从1970年01月01日算
起到最近一次修改口令的时间间隔(天数),可以通过passwd 来修改用户的
密码,然后查看/etc/shadow中此字段的变化;
4. 密码不可被更动的天数:第四个字段记录了这个账号的密码需要经过几天才可以被变更!如果是0 的
话,表示密码随时可以更动的意思。这的限制是为了怕密码被某些人一改再
改而设计的!如果设定为20 天的话,那么当你设定了密码之后, 20 天之内
都无法改变这个密码 !
5. 密码需要重新变更的天数:两次修改口令间隔最多的天数,这个能增强管理员管理用户口令的时效性,
应该说在增强了系统的安全性;如果是系统默认值,是在添加用户时由
/etc/login.defs文件定义中获取,在PASS_MAX_DAYS 中定义
6. 密码需要变更期限前的警告期限:当账号的密码失效期限快要到的时候,系统会依据这个字段的设定
发出警告 言论给这个账号,提醒他 再过n天你的密码就要失效了,
请尽快重新设定你的密码 ! ,如上面的例子,则是密码到期之前
的7 天之内,系统会警告该用户。
7. 账号失效期限:如果用户过了警告期限没有重新输入密码,使得密码失效了,而该用户在这个字段限
定的时间内又没有跟root 反应,让账号重新启用,那么这个账号将暂时的失效!
8. 账号取消日期:这个日期跟第三个字段一样,都是使用1970 年以来的日期设定。这个字段表示:这
个账号在此字段规定的日期之后,将无法再使用。这个字段会被使用通常应该是在收
费服务 的系统中,你可以规定一个日期让该账号不能再使用 !
9. 保留:最后一个字段是保留的,目前为空,以备将来Linux发展之用
以上是用 : 分开的,每个部分都有相关的意思,这里不再细说,自己看下
建立账号的时候,如果没有特殊的设定,通常我们只使用 useradd username 就可以建立一个名
为username 的账号了 基本设定就在/etc/login.defs 与/etc/default/useradd 这两个文件中!
login.defs 主要内容则为
MAIL_DIR /var/spool/mail <==邮件预设目录摆放处
PASS_MAX_DAYS 99999 <==密码需要变更的时间
PASS_MIN_DAYS 0 <==密码多久需要变更
PASS_MIN_LEN 5 <==密码的最小长度(这个可以改大一些 !)
PASS_WARN_AGE 7 <==密码快要失效之前几天发警告讯息?
UID_MIN 500 <==预设帐号最小起算的UID 数目(最小为500 )
UID_MAX 60000 <==最大的UID 限制
GID_MIN 500 <==GID 限制
GID_MAX 60000 <==GID 限制
CREATE_HOME yes <==是否建立宿主目录,预设是要建立宿主目录(若为mail server 可以取消此项目)
useradd 内容则为:
GROUP=100 <==预设的使用者群组为100 ,查看一下/etc/group 时,这个群组名称为users
HOME=/home <==预设使用者的宿主目录建立的目录
INACTIVE=-1 <==是否不启动,设定为-1 自然就是启动 !
EXPIRE= <==是否需要设定 死亡 时间?如果你希望该用户在期限到之后就不许登入,此项可以设定天数。
SHELL=/bin/bash <==预设的Shell是什么
SKEL=/etc/skel <==使用者宿主目录的内容!
/etc/group
1. 群组名称:就是群组名称 !
2. 群组密码:通常不需要设定,因为我们很少使用到群组登入!不过,同样的,密码也是被纪录在
/etc/gshadow 当中 !
3. 群组ID:就是所谓的GID !
4. 支持的账号名称:这个群组里面的所有的账号
/etc/gshadow
/etc/gshadow是/etc/group的加密文件,比如用户组(Group)管理密码就是存放在这个文件。
/etc/gshadow和/etc/group是互补的两个文件;对于大型服务器,针对很多用户和组
定制一些关系结构比较复杂的权限模型,设置用户组密码是极有必要的。
比如我们不想让一些非用户组成员永久拥有用户组的权限和特性,这时我们可以通过密码验证的
方式来让某些用户临时拥有一些用户组特性,这时就要用到用户组密码
第一字段:用户组
第二字段:用户组密码,这个段可以是空的或!,如果是空的或有!,表示没有密码;
第三字段:用户组管理者,这个字段也可为空,如果有多个用户组管理者,用,号分割;
第四字段:组成员,如果有多个成员,用,号分割
以上都是一些相关文件,一定要了解,这很重要
下面说命令
useradd [-u UID] [-g GID] [-d HOME] [-mM] [-s shell] username
参数说明:
-u :直接给予一个UID
-g :直接给予一个GID (此GID 必须已经存在于/etc/group 当中)
-d :直接将他的宿主目录指向已经存在的目录(系统不会再建立)
-M :不建立宿主目录
-s :定义其使用的shell
加一个用户user1 不指定组
加一个用户user2 指定组 users
passwd
这个命令可以修改使用者的密码!要注意的是,
这个命令在/bin/passwd 中
而账号所存放的地方在/etc/passwd 中
-S 查询指定用户帐号的口令状态,只有root用户可以使用
-l 锁定指定用户帐号的口令,只有root用户才能使用 例passwd -l user1
-u 解锁指定用户帐号 例passwd -u user1
-d 删除指定用户帐号的口令
如果后面接的用户名,则是为其用户设的密码
如果后面什么也不接,则是为当然用户自己设密码
再说一下,如果创建用户的时候不指定组,则是为这个用户单独创建一个组
看,只有user1的,因为给user2指定组了
userdel [-r] username
参数说明:
-r :将该账号的[home directory]与[/var/spool/mail/username]一并删除!
看,其宿主目录还在
看,加了-r的就不在了
usermod可用来修改用户帐号的各项设定。
参 数:
-c<备注> 修改用户帐号的备注文字。
-d登入目录> 修改用户登入时的目录。
-e<有效期限> 修改帐号的有效期限。
-f<缓冲天数> 修改在密码过期后多少天即关闭该帐号。
-g<群组> 修改用户所属的群组。
-G<群组> 修改用户所属的附加群组。
-l<帐号名称> 修改用户帐号名称。
-L 锁定用户密码,使密码无效。和 passwd -l 锁定指定用户帐号的口令 一样
-s 修改用户登入后所使用的shell。
-u 修改用户ID。 和passwd -u 解锁指定用户帐号 一样
-U 解除密码锁定。
看,是不可以登录的
看,-U以后就可以了
chsh [-l] [-s shellname]
参数说明:
-l :列出目前这部机器上面的能用的shell 名称
-s :改变目前的shell 成为shellname
chsh -l <==列出本机上所有能用的shell 名称
chsh -s /bin/csh 用户自行改变自己的预设shell
chfn
这个命令说实在的,除非是你的主机有很多的用户,否则倒真是用不着这个程序
chfn
Changing finger information for test.
Password: <==这里输入新的密码
Name [Testing]: Testing <==这里输入你要显示的 昵称
Office []:
Office Phone []:
Home Phone []:
id 查询使用者的UID, GID 及所拥有的群组;
groups 查询使用者能够支持的群组;
finger 查询使用者的一些相关讯息,例如电话号码等。
以上命令及参数一定要会
groupadd
groupadd -g 555 testing<==设定一个群组,GID为555
groupdel
需要从系统上删除群组时,可用groupdel指令来完成这项工作。如果该群组中仍包括某些用户,
则必须先删除这些用户后,才能删除群组。
看,把test1用户放到gtest组后,test1组就可以删了
我们可以通过 gpasswd 来设置用户组的密码;不过一般的情况下,没有必要设置用户组的密码
gpasswd 的用法: gpasswd 用户组
用户组之间的切换,应该用 newgrp
一般是怎么用
gpasswd
语法:gpasswd[选项]<用户名><组名>
gpasswd -a 用户帐号名 组帐号名 用于将指定用户帐号添加到指定用户组
gpasswd -d 该用户帐号名 组帐号名 用于将指定用户帐号从指定用户组中删除
gpasswd -A 组管理员列表 用户组 该命令用于设置指定的用户为用户组的管理员
把test2用户设为test2组的管理员
然后test2登录,把test1用户加入到test2组
看,这样就成功的添加了
你可以去做其它实验,让一个不是组管理员的用户去加别人,这样看看结果
其它的参数自己去看看,一定要知道,要会做
当然还有其它的一些相关数据,这里只是说些常用的
pwconv pwunconv grpconv grpunconv 留个作业,想想这几个命令是干什么的
成功!!!!!!!!!
本文出自 “单身贵族” 博客,请务必保留此出处http://blog.chinaunix.net/uid-10915175-id-3209150.html
附件下载:
用户的管理.part1.rar
用户的管理.part2.rar