USER
Linux是一个多工的系统,可以让多人同时登入系统进行作业。
在这样的情况下,使用者以及群组的管理就变的相当重要。
Linux系统中,使用者帐号主要分为:系统管理员帐号、系统帐号、以及可登入帐号。
每个帐号会有一个UID,UID主要功能就是辨别帐号是属于哪种帐号。
系统管理员帐号是系统上权限最大的帐号,可以执行任何命令,UID为0。
系统帐号是一些服务为了执行上的方便所产生的帐号,UID为1~499。
可登入帐号就是一般使用者登入系统所用的帐号UID为500~65535。
跟使用者最有关的两个档案就是/etc/passwd以及/etc/shadow,首先先介绍/etc/passwd。
/etc/passwd中每一行代表一个帐号,每个帐号以:为区分总共7个栏位设定。
开启/etc/shadow后,可以看到类似下图的内容。
以:为区分,总共9个栏位,括号内为对应 #change 指令的参数,以root帐号为例子。
(因为图片中root帐号的设定过长,所以1.2行实为一行,皆为root的设定。)
#change 可以用来修改使用者密码的属性。
例如 #change -d 0 Peter 可以在使用者Peter下次登入时,强迫更改密码。
-l:可列出使用者密码属性。
GROUP
使用者在建立的时候,系统会自动位使用者建立一个同名的群组,这个群组称为初始群组(Initial Group)。
而在预设的情况下,这个初始群组也是使用者的主要群组(Primary Group)。
或者系统管理员也可以在使用者建立时另外指定初始群组给使用者。
群组也会有自己的GID,在预设的情况下,GID会等于UID,除非有特意去修改。
主要群组的用意是当使用者执行任何动作时,会照使用者当时的主要群组作为群组权限判断的依据。
例如当使用者要读取档案或进入目录时,系统会判别使用者目前的主要群组是否有权限。
当使用者建立档案或目录时,档案或目录的群组也会是使用者当前的主要群组。
使用者若没有属于任何群组,则该使用者无法登入系统。
除此之外,使用者还可以拥有多个次要群组(Secondary Group)。
这张图的意思就是除了初始群组之外,使用者也可以属于其他的次要群组。
如同学校的社团,你可以加入篮球社,也可以同时加入吉他社,甚至更多的社团。
使用者可以自由的在自己所属的群组之间切换主要群组,以方便使用者执行更多的动作。
输入 #newgroup [群组名称] 可将主要群组切换到指定的群组, #exit 可切回原本的主要群组。
群组的主要相关档案分别为/etc/group以及/etc/gshadow。
/etc/group与/etc/passwd相似,下图为/etc/group的范例档。
一行代表一个群组,以:为区分,一共四个栏位。
/etc/gshadow中的栏位如下图所示。
一行代表一个群组,以:为区分,一共四个栏位。
USER MANAGE
以下列出使用者管理上常用的指令以及其参数。
新增使用者 #useradd [参数] [使用者名称]
-u:指定UID,若不加此参数,系统会依序给予UID。
-g:指定初始群组,若不指定则为预设新增同名群组为初始群组。
-G:指定次要群组。
-r:建立为系统帐号,若不加此参数,系统预设会建立一般使用者帐号。
-m:强制建立使用者家目录,此参数为一般使用者帐号的预设值。
-M:强制不建立使用者家目录,此参数为系统帐号的预设值。
-s:指定该帐号预设的shell。
-d:指定该帐号家目录所在位置。
在新增使用者时,若不特意去设定,etc/passwd以及/etc/shadow会带入预设值。
这些预设值可以在/etc/login.defs以及/etc/default/useradd中变更设定。
修改使用者 #usermod [参数] [使用者名称]
-g:修改主要群组。
-G:修改次要群组,若单用此参数会删除其他次要群组,再新增指定群组为次要群组。
-a:配合-G使用,以附加的方式新增次要群组,不会删除原有的次要群组。
-L:锁定使用者帐号,使其无法登入系统。
-U:解锁使用者帐号。
-l:修改使用者名称。
锁定使用者除了使用指令之外,还有其他的方法。
修改/etc/passwd,将GID删除,或将shell栏位改成/sbin/nologin或者/bin/false。
也可将/etc/shadow的密码栏位修改长度,例如加上!。
删除使用者 #userdel [参数] [使用者名称]
-r:删除使用者时连同家目录一起删除。
设定使用者密码 #passwd [参数] [使用者名称]
-l:锁定使用者密码,使其无法登入系统。
-u:解锁使用者密码。
若后面没有指定使用者名称,则会修改当前使用者的密码,要注意不要修改到系统管理员的密码。
GROUP MANAGE
以下列出群组管理上常用的指令以及其参数。
新增群组 #groupadd [参数] [群组名称, GID]
-g:指定GID,若不加此参数,系统会依序给予GID。
-r:建立为系统群组,若不加此参数,系统预设会建立一般群组。
修改群组 #groupmod [参数] [群组名称, GID]
-g:修改GID,参数后面须接上新的GID #groupmog -g [新GID]
-n:修改群组名称,参数后面须接上新群组名称 #groupmod -n [新群组名称]
删除群组 #groupdel [群组名称]
要特别注意,要删除群组时,不能有任何使用者以该群组为主要群组。
另外在群组管理上有个特别的指令 #gpasswd [参数] [使用者名称] [群组名称]
这个指令在系统管理员的身分下,不加任何参数表示修改group密码。
-A:指定使用者为群组管理员,参数后面接上使用者名称。
-M:将使用者加入该群组,参数后面接上使用者名称。
-r:取消群组密码。
若在群组管理员的身分下,则是管理群组中的使用者。
-a:新增使用者到群组中。
-d:自群组中删除使用者。