Linux
主机不会直接认识你的用户账号,它只认识
ID
,每一个账号都有它自己所对应的
ID
,保存在
/etc/passwd
这一个文件里面。
UID
:
User ID
用户
ID
GID
:
Group ID
群组
ID
如何取得
UID/GID
:
当你登入主机时,系统会提示一个
login
:的画面让你输入帐号,这个时候输完帐号和密码之后,
Linux
会执行以下的动作:
1)
寻找
/etc/passwd
里面是否有这个帐号,如果有,就将该账号所对应的
UID
与
GID
读出来,另外,该帐号的家目录与
shell
设定也一起读出来;如果没有这帐号,则退出;
2)
接着就是审核密码,
Linux
会进入
/etc/shadow
里面找也对应的账号与
UID
,然后核对一下你刚刚输入的密码与
shadow
这个文件里的密码是否相同;
3)
上面两步都通过后,就进入
Shell
控制阶段;
与账号相关的几个文件:
/etc/passwd , /etc/shadow /etc/group /etc/gshadow
/etc/passwd
文件
/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
。。。。。。。。
就拿
root
账号的那一行来作说明,你可以看出是以
‘
:
’作分隔符,共
7
列,分别代表的是:
账号名称
:密码
:
UID
:
GID
:帐号的描述信息
:家目录
:
Shell
帐号名称:就是用户的登入名
密码:早期的系统的密码是放在这个文件中的,但是因为安全问题,这个字段的数据就放到
/etc/shadow
文件中了,这样的话这一字段只有一个
X
了;
UID
:用户
ID
,
0
代表是系统管理员,一般来说
1~499
都是保留给系统预设的账号,
500~65535
是给一般的用户;
GID
:群组
ID
,跟
/etc/passwd
差不多,
帐号的描述信息:可有可无,就是描述帐号的一些信息;
家目录:就是宿主目录;
root
的家目录是在
/root
,其它的用户是在
/home/username
里面。
Shell
:就是用户登入时用的
Shell
,
Linux
默认使用
/bin/bash
。
/etc/shadow
文件
这一文件只有
ROOT用户才可以读,预设属性是『
-rw-------』或者是『
-r--------』
;
/etc/shadow 的内容:
root:$1$JVBSVyHQ$Zwi1CokXI07tZpYbB6r9p1:14282:0:99999:7:::
ky:$1$Xyv3y9b5$A79oybU2k3BgN6tCwYX53.:14283:0:99999:7:::
bin:*:14282:0:99999:7:::
daemon:*:14282:0:99999:7:::
adm:*:14282:0:99999:7:::
lp:*:14282:0:99999:7:::
sync:*:14282:0:99999:7:::
同样以
’
:
’
分隔
,
共
9
个字段
;
分别是:
1)
账号名称:必须与
/etc/passwd
相同
2)
密码:这个是真正的密码,不过是经过加密的,如果密码栏的第一个字符是
*
或者是!
那么表示的就是这个账号是不能够登录的。
3)
最近更改密码日期
4)
密码不可更改的天数:从最近更改密码日期起的几天内是不能更改密码,
0
代表无限制。
5)
密码需要重新变更的天数:从最近更改密码日期起的天数,就是密码到期的时间。
6)
密码到期前的警告期限:密码到期前的几天提示警告信息,提示用户修改密码。
7)
密码过期宽限时间:密码到期后,也就是密码失效了,你还可以使用,但过了这个宽限期,你还没有更改密码,那么你的账号就失效了,会无法登入系统。
8)
账号失效日期:这个账号到了规定的日期之后,将无法使用。
9)
保留
/etc/group
文件
这个文件记录
GID
与群组名称对应的。
root:x:0:root
bin:x:1:bin,daemon,root
daemon:x:2:bin,daemon,root
sys:x:3:bin,adm,root
adm:x:4:adm,daemon,root
。。。。。。。
也是以‘:‘分隔,共
4
栏,分别代表:
1)
群组名称
2)
群组密码:一般不用设定,密码也是被记录在
/etc/gshadow
里面。
3)
GID
:群组
ID
4)
群组的成员账号:多个账号之间用逗号‘,’分开。
/etc/gshadow
文件
记录群组密码,同样是以‘:’作为分隔字符,共
4
栏;分别是:
1)
群组名称
2)
密码栏,如开头为!表示无法登入
3)
群组管理员账号
4)
群组的成员账号
OK
,了解过与账号相关的几个文件之后,接着当然就是帐号管理了。
既然是帐号管理,首先要说的肯定是新增账号了,直接用
useradd
命令就可以添加了,简单吧,
useradd
的命令一些参数如下:
[root@linux ~]# useradd [-u UID] [-g initial_group] [-G other_group]
-[Mm] [-c 说明栏
] [-d home] [-s shell] username
参数:
-u :后面接的是
UID ,是一组数字。直接指定一个特定的
UID 给这个账号;
-g :后面接的那个群组名称 ,该
group ID (GID) 会被放置到
/etc/passwd 的第四个字段内。
-G :后面接的群组名称则是这个账号还可以支持的群组。 这个参数会修改
/etc/group 内的相关资料。
-M :强制!不要建立用户家目录
-m :强制!要建立用户家目录
-c :这个就是
/etc/passwd 的第五栏的说明内容啦~就是用户和描述信息。
-d :指定某个目录成为家目录,而不要使用默认值;
-r :建立一个系统的账号,这个账号的
UID 会有限制
(/etc/login.defs)
-s
:后面接一个
shell
,预设是
/bin/bash
当建立一个账号时,一些在
/etc/passwd
里面的值会去参考
/etc/default/useradd
这一个档案的里面的内容。
用户目录建立的参考的文件就是
/etc/skel/*
里的文件。
用户的
UID/GID
的设定参考的文件是
/etc/login.defs
里,内容如下:
MAIL_DIR /var/spool/mail //
用户预设邮件放置目录
PASS_MAX_DAYS 99999 //
密码需要重新变更的天数
,/etc/shadow
的第
5
栏
PASS_MIN_DAYS 0 //
密码不可更改的天数,
/etc/shadow
的第
4
栏
PASS_MIN_LEN 5 //
密码长度,建议改到
7
位以上
PASS_WARN_AGE 7 //
密码到期前的警告期限,
/etc/shadow
的第
6
栏
UID_MIN 500 //
用户最小的
UID
,即小于
500
的
UID
为系统保留
UID_MAX 60000 //
用户最大的
UID
GID_MIN 500 //
用户自定群组的最小
GID
,小于
500
为和系统保留
GID_MAX 60000 //
用户最大的
GID
CREATE_HOME yes //
在不加
�CM
及
�Cm
时,是否主动建立家目录
UMASK 077 //
默认家目录的权限设置
USERGROUPS_ENAB yes //
使用
userdel
去删除一个账号时,该账号所属的初始群组已经没有人隶属改群组,那么就删除该群组。
到这里了应该可以明白在
RedHat
里建立用户的
UID
与
GID
都是从
500
开始了吧。而且可以知道
useradd
这个命令在新增用户时,至少参参考以下的几个地方:
/etc/default/useradd
/etc/login.defs /etc/skel/*
这几个地方。
使用
useradd
命令创建用户号,在默认情况下是不可以登录系统的,为什么?你可以看一下
grep username /etc/shadow
里面的密码栏,看到了吧,,是两个!!
,前面我们说了这个字段要是以!开始的是不给登入系统的。
现在我们要启用账号,直接用
passwd
给他设定一下密码就好了。
命令格式:
[root@rhel5 ~]# passwd username //
这是管理员给用户设定密码
/
重设密码
如果
passwd
后面不跟用户名,就是更改当前用户的密码,要验证旧密码。
注意:新密码除了要符合
/etc/login.defs
里面规定的最小密码位数之外,还会受到
/etc/pam.d/passwd
这个
PAM
模块的检验。为了安全,密码最好不要小于
8
位数,符合密码复杂性,也就是最好有三种组合以上的密码。
usermod
命令
usermod
可用来修改用户帐号的各项设定。
[root@linux ~]# usermod [-cdegGlsuLU] username
参 数:
-c<备注
>
修改用户帐号的描述信息。
即
/etc/passwd的第
5栏
-d<登入目录
>
修改用户登入时的目录。
即
/etc/passwd的第
6栏
-e<有效期限
>
格式是
YYY-MM-DD修改帐号的有效期限。
即
/etc/passwd的第
8栏
-f<缓冲天数
>
修改在密码过期后多少天即关闭该帐号。
-g<群组
>
修改用户所属的群组。
即
/etc/passwd的第
4栏
-G<群组
>
修改用户所属的附加群组。
修改的是
/etc/group
-l<帐号名称
>
修改用户帐号名称。
/etc/passwd 的第一栏
-L
锁定用户密码,使密码无效。
改
/etc/shadow 的密码栏
-s<shell>
修改用户登入后所使用的
shell。
-u<uid>
修改用户
ID。
即
/etc/passwd 第
3栏的
-U
解除密码锁定。
例:
[root@linux ~]# usermod
�C
e
“
2009-08-20
”
kyhack //使用户密码在
09年
8月
20日 失效。
userdel 命令
userdel作用就是删除用户。这个太简单了;
[root@linux ~]#userdel username
参数:
-r :连同使用者的家目录也一起删除
chsh命令
chsh(change
shell)作用就是更换登入系统时使用的
shell;
[root@linux ~]#chsh
�C
s /bin/sh
参数:
-l :列出目前系统上面可用的
shell ,其实就是
/etc/shells 的内容!
-s :设定修改自己的
Shell
chfn命令
chfn(change
finger
information)的作用就是改变
finger指令显示的信息。
[root@linux ~]# chfn
参 数:
-f<真实姓名
>或
--full-name<真实姓名
>
设置真实姓名。
-h<家中电话
>或
--home-phone<家中电话
>
设置家中的电话号码。
-o<办公地址
>或
--office<办公地址
>
设置办公室的地址。
-p<办公电话
>或
--office-phone<办公电话
>
设置办公室的电话号码。
finger命令
finger作用就是查找并显示用户信息。
[root@linux ~]#finger username
参 数:
-l
列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的
Shell,登入时间,转信地址,电子邮件状态,还有计划文件和方案文件内容。
-m
排除查找用户的真实姓名。
-s
列出该用户的帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话。
-p
列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的
Shell,登入时间,转信地址,电子邮件状态,但不显示该用户的计划文件和方案文件内容。
这个些参数很都不常用。都差不多的。
id命令
id命令作用是显示用户的
ID,以及所属群组的
ID。
groupadd 命令
groupadd 命令作用就是添加群组
[root@linux ~]# groupadd groupname
参数:
-g :后面接某个特定的
GID ,用来直接给予某个
GID ~
-r :建立系统群组啦!与
/etc/login.defs 内的
GID_MIN 有关。
groupdel 命令
作用就是删除群组
[root@linux ~]#groupdel groupname
groupmod 命令
作用就是更改群组识别码或名称。
[root@linux ~]# groupmod [-g gid] [-n group_name]
参数:
-g :修改既有的
GID 数字
-n :修改既有的群组名称
gpasswd 命令
作用就是给群组设置密码;就可以用
newgrp命令来切换有效群组了。
[root@linux ~]# gpasswd groupname
[root@linux ~]# gpasswd [-A user1,...] [-M user3,user4...] groupname
[root@linux ~]# gpasswd [-rR] groupname
参数:
:若没有任何参数时,表示给予
groupname 一个密码
(/etc/gshadow)
-A :将
groupname 的主控权交由后面的使用者管理
(该群组的管理员
)
-M :将某些账号加入这个群组当中!
-r :将
groupname 的密码移除
-R :让
groupname 的密码栏失效,所以
newgrp 就不能使用了!
newgrp 命令
作用是登入另一个群组。
[root@linux ~]# newgrp
[群组名称
]
passwd 命令
作用是设置密码;
[root@linux ~]# passwd [-lunxwS] username
-d
删除密码。本参数仅有系统管理者才能使用。
-f
强制执行。
-k
设置只有在密码过期失效后,方能更新。
-l
锁住密码。
-s
列出密码的相关信息。本参数仅有系统管理者才能使用。
-u
解开已上锁的帐号。
-n 后面接天数
(数字
) ,最短天数;亦即是
/etc/shadow 内的第四栏;
-x 后面接天数
(数字
) ,最长天数;亦即是
/etc/shadow 内的第五栏;
-w 后面接天数
(数字
) ,警告天数;亦即是
/etc/shadow 内的第六栏;
su 命令
作用切换用户
[root@linux ~]# su [-lcm] [username]
参数:
- :如果执行
su - 时,表示该使用者想要变换身份成为
root ,且使用
root 的
环境设定参数档,如
/root/.bash_profile 等等。
-l :后面可以接用户名,例如
su -l dmtsai ,这个
-l 好处是,可使用欲变换身份者 他的所有相关环境设定档。
-m :
-m 与
-p 是一样的,表示『使用目前的环境设定,而不重新读取新使用者的设定档。』
-c :仅进行一次指令,所以
-c 后面可以加上指令喔!