Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1434349
  • 博文数量: 185
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2664
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-01 13:46
个人简介

鸟在笼中,恨关羽不能张飞;Survival of the fittest

文章分类

全部博文(185)

分类: LINUX

2012-05-15 21:25:23

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://blog.chinaunix.net/uid-10915175-id-3209150.html

 这次主要说一下用户的管理以及相关的文件

 
 
先看一下
/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   

阅读(2180) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~