linux 账号管理
时间:2006-11-22 来源:oychw
Reference:
A. 鸟哥的 Linux 私房菜-基础学习篇 $13账号管理
B. Red Hat Linux 9.0 基础教程 $13管理用户
C. Linux 基础教程(1)操作系统基础 $11 账号管理
1,账号管理
登录过程
- 先找寻 /etc/passwd 里面是否有这个账号?如果没有则跳出,如果有的话则将该账号对应的 UID ( User ID )与 GID ( Group ID )读出来,另外,该账号的家目录与 shell 设定也一并读出;
- 再来则是核对密码表啦!这时 Linux 会进入 /etc/shadow 里面找出对应的账号与 UID,然后核对一下你刚刚输入的密码与里头的密码是否相符?
如果一切都 OK 的话,就进入 Shell 控管的阶段啰!
· UID:这个就是使用者识别码(ID)啰!通常 Linux 对于 UID 有几个限制需要说给您了解一下:
o 0 系统管理员,所以当你要作另一个系统管理员账号时,你可以将该账号的 UID 改成 0 即可;
o 1~500 保留给系统使用的ID,其实 1~65534 之间的账号并没有不同,也就是除了 0 之外,其它的 UID 并没有不一样,预设 500 以下给系统作为保留账号只是一个习惯。这样的好处是,以 named 为例,这个程序的预设所有人 named 的账号 UID 是 25 ,当有其它的账号同样是 25 时,很可能会造成系统的一些小问题!为了杜绝这样的问题,建议保留 500 以前的 UID 给系统吧!
500~65535 给一般使用者用的!
/etc/passwd 的格式如下:
其中第5列是说明,一般对finger有用, /sbin/nologin表示不能登录
root@Meil sda1]# vi /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
/etc/shadow的格式如下:
如果是在密码栏的第一个字符为『 * 』或者是『 ! 』,表示这个账号并不会被用来登入的意思。
[root@Meil sda1]# vi /etc/shadow
root:$1$RwncvPop$qfQLAUu68mlq6SZGW1fyl/:13237:0:99999:7:::
bin:*:12594:0:99999:7:::
daemon:*:12594:0:99999:7:::
adm:*:12594:0:99999:7:::
lp:*:12594:0:99999:7:::
sync:*:12594:0:99999:7:::
shutdown:*:12594:0:99999:7:::
halt:*:12594:0:99999:7:::
mail:$1$VyKWowZJ$zCw3z1I.uJTWT3lau9ofd.:13473:0:99999:7:::
news:*:12594:0:99999:7:::
uucp:*:12594:0:99999:7:::
operator:*:12594:0:99999:7:::
games:*:12594:0:99999:7:::
gopher:*:12594:0:99999:7:::
ftp:*:12594:0:99999:7:::
- 最近更动密码的日期:这个字段记录了『更动密码的那一天』的日期, 不过,很奇怪呀!在我的例子中怎么会是 12959 呢?呵呵,这个是因为计算 Linux 日期的时间是以 1970 年 1 月 1 日作为 1 ,而 1971 年 1 月 1 日则为 366 啦! 所以这个日期是累加的呢!得注意一下这个资料呦!那么最近的 2005 年 1 月 1 日就是 12784 啦,了解了吗?
- 密码不可被更动的天数: 第四个字段记录了这个账号的密码需要经过几天才可以被变更!如果是 0 的话, 表示密码随时可以更动的意思。这的限制是为了怕密码被某些人一改再改而设计的!如果设定为 20 天的话,那么当你设定了密码之后, 20 天之内都无法改变这个密码呦!
- 密码需要重新变更的天数: 由于害怕密码被某些『有心人士』窃取而危害到整个系统的安全,所以有了这个字段的设计。 你必须要在这个时间之内重新设定你的密码,否则这个账号将会暂时失效。 而如果像上面的 99999 的话,那就表示,呵呵,密码不需要重新输入啦! 不过,如果是为了安全性,最好可以设定一段时间之后,严格要求使用者变更密码呢!
- 密码需要变更期限前的警告期限:当账号的密码失效期限快要到的时候, 就是上面那个『必须变更密码』的那个时间时, 系统会依据这个字段的设定,发出『警告』言论给这个账号,提醒他『再过 n 天你的密码就要失效了,请尽快重新设定你的密码呦!』,如上面的例子,则是密码到期之前的 7 天之内,系统会警告该用户。
- 密码过期的恕限时间:如果用户过了警告期限没有重新输入密码, 使得密码失效了,也就是说,你在『必须变更密码的期限前,并没有变更你的密码!』 那么该组密码就称为『失效的密码』啰~怎么办?没关系,还有这个字段的天数设计啊~ 意思就是说,当密码失效后,你还可以用这个密码在 n 天内进行登入的意思。 而如果在这个天数后还是没有变更密码,呵呵!那么您的账号就失效了!无法登入!
- 账号失效日期:这个日期跟第三个字段一样,都是使用 1970 年以来的总日数设定。这个字段表示: 这个账号在此字段规定的日期之后,将无法再使用。 这个字段会被使用通常应该是在『收费服务』的系统中, 你可以规定一个日期让该账号不能再使用啦!
保留:最后一个字段是保留的,看以后有没有新功能加入。
认识 /etc/group 与 /etc/gshadow 档案
· /etc/group
这个档案就是在记录 GID 与群组名称的对应了~我的 /etc/group 内容有点像这样:
root:x:0:root bin:x:1:root,bin,daemon daemon:x:2:root,bin,daemon sys:x:3:root,bin,adm |
也是以冒号『:』作为字段的分隔符,共分为四栏,每一字段的意义是:
- 群组名称:就是群组名称啦!
- 群组密码:通常不需要设定,因为我们很少使用到群组登入! 不过,同样的,密码也是被纪录在 /etc/gshadow 当中啰!
- GID:就是群组的 ID 啊~
- 支持的账号名称:加入这个群组里面的所有的账号, 我们知道,一个使用者是可以加入多个群组的。举例来说,如果我想要让 dmtsai 也加入 root 这个群组,那么在第一行的最后面加上『,dmtsai』,注意不要有空格, 使成为『 root:x:0:root,dmtsai』就可以啰~
· 有效群组(effective group)与初始群组(initial group)
/etc/passwd 里面的第四栏GID是初始群组(initial group)
用groups查看到的第一个组是有效群组(effective group)
可以使用newgrp 来改变有效群组(effective group):
[mail1@Meil mail1]$ groups
mail wheel
[mail1@Meil mail1]$ newgrp wheel
[mail1@Meil mail1]$ groups
wheel mail
同时切换到了新的shell
· useradd
[root@linux ~]# useradd [-u UID] [-g initial_group] [-G other_group] \ > -[Mm] [-c 说明栏] [-d home] [-s shell] username 参数: -u :后面接的是 UID ,是一组数字。直接指定一个特定的 UID 给这个账号; -g :后面接的那个群组名称就是我们上面提到的 initial group 啦~ 该 group ID (GID) 会被放置到 /etc/passwd 的第四个字段内。 -G :后面接的群组名称则是这个账号还可以支持的群组。 这个参数会修改 /etc/group 内的相关资料喔! -M :强制!不要建立使用者家目录 -m :强制!要建立使用者家目录! -c :这个就是 /etc/passwd 的第五栏的说明内容啦~可以随便我们设定的啦~ -d :指定某个目录成为家目录,而不要使用默认值; -r :建立一个系统的账号,这个账号的 UID 会有限制 (/etc/login.defs) -s :后面接一个 shell ,预设是 /bin/bash 的啦~ 范例:
范例一:完全参考默认值建立一个使用者,名称为 vbird1 [root@linux ~]# useradd vbird1 [root@linux ~]# ls -l /home
drwxr-xr-x 3 vbird1 vbird1 4096 Aug 30 17:33 vbird1 [root@linux ~]# grep vbird1 /etc/passwd /etc/shadow /etc/group /etc/passwd:vbird1:x:502:502::/home/vbird1:/bin/bash /etc/shadow:vbird1:!!:13025:0:99999:7::: /etc/group:vbird1:x:502: # 同时也要注意到,使用 useradd 新增使用者时,这个使用者的 /etc/shadow # 密码栏会是不可登入的 (以 !! 为开头),因此还需要使用 passwd # 来给予 vbird1 密码后,才算新增完毕!
|
这个指令至少可能会更动到的地方有:
- /etc/passwd
- /etc/shadow
- /etc/group
- /etc/gshadow
- /home/username
groupadd -g 902 -f nms
useradd -g nms -G wheel -u 902 nmsuser 2>/dev/null
groupadd -g 901 -f bbca
useradd -g bbca -G wheel -u 901 bbca 2>/dev/null
建立预设的账号:
基本设定就在 /etc/login.defs 与 /etc/default/useradd 这两个档案
当你建立一个名为 testing 的账号时,预设的家目录会是『 /home/testing 』这个目录,而这个目录的内容就是由 /etc/skel 所 copy 过去的!所以『当你想要让使用者的预设家目录内容更动时,可以直接将要更动的数据写在 /etc/skel 当中