Linux 用户和用户组办理

Linux体系是一个多用户多使命的分时操纵体系,任何一个要操纵体系资本的用户,都必须起首向体系办理员请求一个账号,而后以这个账号的身份进入体系。

用户的账号一方面能够或许或许或许赞助体系办理员对操纵体系的用户停止跟踪,并节制他们对体系资本的拜候;别的一方面也能够或许或许或许赞助用户构造文件,并为用户供给宁静性掩护。

每一个用户账号都具备一个独一的用户名和各自的口令。

用户在登录时键入准确的用户名和口令后,就能够或许或许或许进入体系和本身的主目次。

实现用户账号的办理,要实现的任务首要有以下几个方面:

  • 用户账号的增添、删除与点窜。
  • 用户口令的办理。
  • 用户组的办理。

一、Linux体系用户账号的办理

用户账号的办理任务首要触及到用户账号的增添、点窜和删除。

增添用户账号便是在体系中建立一个新账号,而后为新账号分派用户号、用户组、主目次和登录Shell等资本。刚增添的账号是被锁定的,没法操纵。

1、增添新的用户账号操纵useradd号令,其语法以下:

useradd 选项 用户名

参数申明:

  • 选项:

    • -c comment 指定一段正文性描写。
    • -d 目次 指定用户主目次,若是此目次不存在,则同时操纵-m选项,能够或许或许或许建立主目次。
    • -g 用户组 指定用户所属的用户组。
    • -G 用户组,用户组 指定用户所属的附加组。
    • -s Shell文件 指定用户的登录Shell。
    • -u 用户号 指定用户的用户号,若是同时有-o选项,则能够或许或许或许反复操纵其余用户的标识号。
  • 用户名:

    指定新账号的登录名。

实例1

# useradd –d  /home/sam -m sam

此号令建立了一个用户sam,此中-d和-m选项用来为登录名sam发生一个主目次 /home/sam(/home为默许的用户主目次地点的父目次)。

实例2

# useradd -s /bin/sh -g group –G adm,root gem

此号令新建了一个用户gem,该用户的登录Shell是 /bin/sh,它属于group用户组,同时又属于adm和root用户组,此中group用户组是其主组。

这里能够或许新建组:#groupadd group及groupadd adm

增添用户账号便是在/etc/passwd文件中为新用户增添一笔记实,同时更新其余体系文件如/etc/shadow, /etc/group等。

Linux供给了集成的体系办理东西userconf,它能够或许或许或许用来对用户账号停止统一办理。

2、删除帐号

若是一个用户的账号不再操纵,能够或许或许或许从体系中删除。删除用户账号便是要将/etc/passwd等体系文件中的该用户记实删除,须要时还删除用户的主目次。

删除一个已有的用户账号操纵userdel号令,其格局以下:

userdel 选项 用户名

经常操纵的选项是 -r,它的感化是把用户的主目次一路删除。

比方:

# userdel -r sam

此号令删除用户sam在体系文件中(首要是/etc/passwd, /etc/shadow, /etc/group等)的记实,同时删除用户的主目次。

3、点窜帐号

点窜用户账号便是根据现实环境变动用户的有关属性,如用户号、主目次、用户组、登录Shell等。

点窜已有用户的信息操纵usermod号令,其格局以下:

usermod 选项 用户名

经常操纵的选项包罗-c, -d, -m, -g, -G, -s, -u和-o等,这些选项的意思与useradd号令中的选项一样,能够或许或许或许为用户指定新的资本值。

别的,有些体系能够或许或许或许操纵选项:-l 新用户名

这个选项指定一个新的账号,行将本来的用户名改成新的用户名。

比方:

# usermod -s /bin/ksh -d /home/z –g developer sam

此号令将用户sam的登录Shell点窜为ksh,主目次改成/home/z,用户组改成developer。

4、用户口令的办理

用户办理的一项首要内容是用户口令的办理。用户账号刚建立时不口令,可是被体系锁定,没法操纵,必须为其指定口令后能力够或许或许操纵,即便是指定空口令。

指定和点窜用户口令的Shell号令是passwd。超等用户能够或许或许或许为本身和其余用户指定口令,通俗用户只能用它点窜本身的口令。号令的格局为:

passwd 选项 用户名

可操纵的选项:

  • -l 锁定口令,即禁用账号。
  • -u 口令解锁。
  • -d 使账号无口令。
  • -f 逼迫用户下次登录时点窜口令。

若是默许用户名,则点窜以后用户的口令。

比方,假定以后用户是sam,则上面的号令点窜该用户本身的口令:

$ passwd 
Old password:****** 
New password:******* 
Re-enter new password:*******

若是是超等用户,能够或许或许或许用以下情势指定任何用户的口令:

# passwd sam 
New password:******* 
Re-enter new password:*******

通俗用户点窜本身的口令时,passwd号令会先扣问原口令,考证后再请求用户输出两遍新口令,若是两次输出的口令分歧,则将这个口令指定给用户;而超等用户为用户指定口令时,就不须要晓得原口令。

为了体系宁静起见,用户应当挑选比拟庞杂的口令,比方最好操纵8位长的口令,口令中包罗有大写、小写字母和数字,并且应当与姓名、诞辰等不不异。

为用户指定空口令时,履行以下情势的号令:

# passwd -d sam

此号令将用户 sam 的口令删除,如许用户 sam 下一次登录时,体系就不再许可该用户登录了。

passwd 号令还能够或许或许或许用 -l(lock) 选项锁定某一用户,使其不能登录,比方:

# passwd -l sam

二、Linux体系用户组的办理

每一个用户都有一个用户组,体系能够或许或许或许对一个用户组中的一切效户停止调集办理。差别Linux 体系对用户组的划定有所差别,如Linux下的用户属于与它同名的用户组,这个用户组在建立用户时同时建立。

用户组的办理触及用户组的增添、删除和点窜。组的增添、删除和点窜现实上便是对/etc/group文件的更新。

1、增添一个新的用户组操纵groupadd号令。其格局以下:

groupadd 选项 用户组

能够或许或许或许操纵的选项有:

  • -g GID 指定新用户组的组标识号(GID)。
  • -o 通俗与-g选项同时操纵,表现新用户组的GID能够或许或许或许与体系已有用户组的GID不异。

实例1:

# groupadd group1

此号令向体系中增添了一个新组group1,新组的组标识号是在以后已有的最大组标识号的根本上加1。

实例2:

# groupadd -g 101 group2

此号令向体系中增添了一个新组group2,同时指定新组的组标识号是101。

2、若是要删除一个已有的用户组,操纵groupdel号令,其格局以下:

groupdel 用户组

比方:

# groupdel group1

此号令从体系中删除组group1。

3、点窜用户组的属性操纵groupmod号令。其语法以下:

groupmod 选项 用户组

经常操纵的选项有:

  • -g GID 为用户组指定新的组标识号。
  • -o 与-g选项同时操纵,用户组的新GID能够或许或许或许与体系已有用户组的GID不异。
  • -n新用户组 将用户组的名字改成新名字

实例1:

# groupmod -g 102 group2

此号令将组group2的组标识号点窜为102。

实例2:

# groupmod –g 10000 -n group3 group2

此号令将组group2的标识号改成10000,组名点窜为group3。

4、若是一个用户同时属于多个用户组,那末用户能够或许或许或许在用户组之间切换,以便具备其余用户组的权限。

用户能够或许或许或许在登录后,操纵号令newgrp切换到其余用户组,这个号令的参数便是目标用户组。比方:

$ newgrp root

这条号令将以后用户切换到root用户组,前提前提是root用户组确切是该用户的主组或附加组。近似于用户账号的办理,用户组的办理也能够或许或许或许经由过程集成的体系办理东西来实现。


三、与用户账号有关的体系文件

实现用户办理的任务有很多种方式,可是每种方式现实上都是对有关的体系文件停止点窜。

与用户和用户组相干的信息都寄存在一些体系文件中,这些文件包罗/etc/passwd, /etc/shadow, /etc/group等。

上面别离先容这些文件的内容。

1、/etc/passwd文件是用户办理任务触及的最首要的一个文件。

Linux体系中的每一个用户都在/etc/passwd文件中有一个对应的记实行,它记实了这个用户的一些根基属性。

这个文件对一切效户都是可读的。它的内容近似上面的例子:

# cat /etc/passwd

root:x:0:0:Superuser:/:
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:
sys:x:3:3:Owner of system files:/usr/sys:
adm:x:4:4:System accounting:/usr/adm:
uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
auth:x:7:21:Authentication administrator:/tcb/files/auth:
cron:x:9:16:Cron daemon:/usr/spool/cron:
listen:x:37:4:Network daemon:/usr/net/nls:
lp:x:71:18:Printer administrator:/usr/spool/lp:
sam:x:200:50:Sam san:/home/sam:/bin/sh

从上面的例子咱们能够或许或许或许看到,/etc/passwd中一行记实对应着一个用户,每行记实又被冒号(:)分开为7个字段,其格局和详细寄义以下:

用户名:口令:用户标识号:组标识号:正文性描写:主目次:登录Shell

1)"用户名"是代表用户账号的字符串。

凡是长度不跨越8个字符,并且由巨细写字母和/或数字组成。登录名中不能有冒号(:),因为冒号在这里是分开符。

为了兼容起见,登录名中最好不要包罗点字符(.),并且不操纵连字符(-)和加号(+)打头。

2)“口令”一些体系中,寄存着加密后的用户口令字。

固然这个字段寄存的只是用户口令的加密串,不是明文,可是因为/etc/passwd文件对一切效户都可读,以是这还是一个宁静隐患。是以,此刻很多Linux 体系(如SVR4)都操纵了shadow手艺,把实在的加密后的用户口令字寄存到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只寄存一个特别的字符,比方“x”或“*”。

3)“用户标识号”是一个整数,体系外部用它来标识用户。

通俗环境下它与用户名是逐一对应的。若是几个用户名对应的用户标识号是一样的,体系外部将把它们视为统一个用户,可是它们能够或许或许或许有差别的口令、差别的主目次和差别的登录Shell等。

通经常操纵户标识号的取值规模是0~65 535。0是超等用户root的标识号,1~99由体系保留,作为办理账号,通俗用户的标识号从100起头。在Linux体系中,这个边界是500。

4)“组标识号”字段记实的是用户所属的用户组。

它对应着/etc/group文件中的一笔记实。

5)“正文性描写”字段记实着用户的一些小我环境。

比方用户的实在姓名、德律风、地点等,这个字段并不甚么现实的用处。在差别的Linux 体系中,这个字段的格局并差别一。在很多Linux体系中,这个字段寄存的是一段肆意的正文性描写笔墨,用做finger号令的输出。

6)“主目次”,也便是用户的肇端任务目次。

它是用户在登录到体系以后所处的目次。在大大都体系中,各用户的主目次都被构造在统一个特定的目次下,而用户主目次的称号便是该用户的登录名。各用户对本身的主目次有读、写、履行(搜刮)权限,其余用户对此目次的拜候权限则根据详细环境设置。

7)用户登录后,要启动一个历程,担任将用户的操纵传给内核,这个历程是用户登录到体系后运转的号令诠释器或某个特定的法式,即Shell。

Shell是用户与Linux体系之间的接口。Linux的Shell有很多种,每种都有差别的特色。经常操纵的有sh(Bourne Shell), csh(C Shell), ksh(Korn Shell), tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell)等。

体系办理员能够或许或许或许根据体系环境和用户习气为用户指定某个Shell。若是不指定Shell,那末体系操纵sh为默许的登录Shell,即这个字段的值为/bin/sh。

用户的登录Shell也能够或许或许或许指定为某个特定的法式(此法式不是一个号令诠释器)。

操纵这一特色,咱们能够或许或许或许限定用户只能运转指定的利用法式,在该利用法式运转竣事后,用户就主动加入了体系。有些Linux 体系请求只要那些在体系中挂号了的法式能力出此刻这个字段中。

8)体系中有一类用户称为伪用户(pseudo users)。

这些用户在/etc/passwd文件中也据有一笔记实,可是不能登录,因为它们的登录Shell为空。它们的存在首要是便利体系办理,知足响应的体系历程对文件属主的请求。

罕见的伪用户以下所示:

伪 用 户 含 义 
bin 具备可履行的用户号令文件 
sys 具备体系文件 
adm 具备帐户文件 
uucp UUCP操纵 
lp lp或lpd子体系操纵 
nobody NFS操纵

具备帐户文件

1、除上面列出的伪用户外,另有很多规范的伪用户,比方:audit, cron, mail, usenet等,它们也都各自为相干的历程和文件所须要。

因为/etc/passwd文件是一切效户都可读的,若是用户的暗码太简略或纪律比拟较着的话,一台通俗的计较机就能够或许或许或许很轻易地将它破解,是以对宁静性请求较高的Linux体系都把加密后的口令字分手出来,零丁寄存在一个文件中,这个文件是/etc/shadow文件。 有超等用户才具备该文件读权限,这就保障了用户暗码的宁静性。

2、/etc/shadow中的记实行与/etc/passwd中的逐一对应,它由pwconv号令根据/etc/passwd中的数据主动发生

它的文件格局与/etc/passwd近似,由多少个字段组成,字段之间用":"离隔。这些字段是:

登录名:加密口令:最初一次点窜时候:最小时候距离:最大时候距离:正告时候:不勾当时候:生效时候:标记
  1. "登录名"是与/etc/passwd文件中的登录名相分歧的用户账号
  2. "口令"字段寄存的是加密后的用户口令字,长度为13个字符。若是为空,则对利用户不口令,登录时不须要口令;若是含有不属于调集 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。
  3. "最初一次点窜时候"表现的是从某个时辰起,到用户最初一次点窜口令时的天数。时候出发点对差别的体系能够或许不一样。比方在SCO Linux 中,这个时候出发点是1970年1月1日。
  4. "最小时候距离"指的是两次点窜口令之间所需的最小天数。
  5. "最大时候距离"指的是口令坚持有用的最大天数。
  6. "正告时候"字段表现的是从体系起头正告用户到用户暗码正式生效之间的天数。
  7. "不勾当时候"表现的是用户不登录勾当但账号仍能坚持有用的最大天数。
  8. "生效时候"字段给出的是一个相对的天数,若是操纵了这个字段,那末就给出响应账号的保存期。期满后,该账号就不再是一个正当的账号,也就不能再用来登录了。

上面是/etc/shadow的一个例子:

# cat /etc/shadow

root:Dnakfw28zf38w:8764:0:168:7:::
daemon:*::0:0::::
bin:*::0:0::::
sys:*::0:0::::
adm:*::0:0::::
uucp:*::0:0::::
nuucp:*::0:0::::
auth:*::0:0::::
cron:*::0:0::::
listen:*::0:0::::
lp:*::0:0::::
sam:EkdiSECLWPdSa:9740:0:0::::

3、用户组的一切信息都寄存在/etc/group文件中。

将用户分组是Linux 体系中对用户停止办理及节制拜候权限的一种手腕。

每一个用户都属于某个用户组;一个组中能够或许或许或许有多个用户,一个用户也能够或许或许或许属于差别的组。

当一个用户同时是多个组中的成员时,在/etc/passwd文件中记实的是用户所属的主组,也便是登录时所属的默许组,而其余组称为附加组。

用户要拜候属于附加组的文件时,必须起首操纵newgrp号令使本身成为所要拜候的组中的成员。

用户组的一切信息都寄存在/etc/group文件中。此文件的格局也近似于/etc/passwd文件,由冒号(:)离隔多少个字段,这些字段有:

组名:口令:组标识号:组内用户列表
  1. "组名"是用户组的称号,由字母或数字组成。与/etc/passwd中的登录名一样,组名不应反复。
  2. "口令"字段寄存的是用户组加密后的口令字。通俗Linux 体系的用户组都不口令,即这个字段通俗为空,或是*。
  3. "组标识号"与用户标识号近似,也是一个整数,被体系外部用来标识组。
  4. "组内用户列表"是属于这个组的一切效户的列表/b,差别用户之间用逗号(,)分开。这个用户组能够或许是用户的主组,也能够或许是附加组。

/etc/group文件的一个例子以下:

root::0:root
bin::2:root,bin
sys::3:root,uucp
adm::4:root,adm
daemon::5:root,daemon
lp::7:root,lp
users::20:root,sam

四、增添批量用户

增添和删除用户对每位Linux体系办理员都是垂手可得的事,比拟辣手的是若是要增添几十个、上百个乃至上千个用户时,咱们不太能够或许还操纵useradd一个一个地增添,一定要找一种简洁的建立大批用户的方式。Linux体系供给了建立大批用户的东西,能够或许或许或许让您当即建立大批用户,方式以下:

(1)先编辑一个文本用户文件。

每列根据/etc/passwd暗码文件的格局誊写,要注重每一个用户的用户名、UID、宿主目次都不能够或许或许或许不异,此中暗码栏能够或许或许或许留做空缺或输出x号。一个典范文件user.txt内容以下:

user001::600:100:user:/home/user001:/bin/bash
user002::601:100:user:/home/user002:/bin/bash
user003::602:100:user:/home/user003:/bin/bash
user004::603:100:user:/home/user004:/bin/bash
user005::604:100:user:/home/user005:/bin/bash
user006::605:100:user:/home/user006:/bin/bash

(2)以root身份履行号令 /usr/sbin/newusers,从刚建立的用户文件user.txt中导入数据,建立用户:

# newusers < user.txt

而后能够或许或许或许履行号令 vipwvi /etc/passwd 查抄 /etc/passwd 文件是不是已呈现这些用户的数据,并且用户的宿主目次是不是已建立。

(3)履行号令/usr/sbin/pwunconv。

/etc/shadow 发生的 shadow 暗码解码,而后回写到 /etc/passwd 中,并将/etc/shadowshadow暗码栏删掉。这是为了便利下一步的暗码转换任务,即先打消 shadow password 功效。

# pwunconv

(4)编辑每一个用户的暗码对比文件。

格局为:

用户名:暗码

实例文件 passwd.txt 内容以下:

user001:123456
user002:123456
user003:123456
user004:123456
user005:123456
user006:123456

(5)以 root 身份履行号令 /usr/sbin/chpasswd

建立用户暗码,chpasswd 会将颠末 /usr/bin/passwd 号令编码过的暗码写入 /etc/passwd 的暗码栏。

# chpasswd < passwd.txt

(6)肯定暗码经编码写入/etc/passwd的暗码栏后。

履行号令 /usr/sbin/pwconv 将暗码编码为 shadow password,并将成果写入 /etc/shadow

# pwconv

如许就实现了大批用户的建立了,以后您能够或许或许或许到/home下查抄这些用户宿主目次的权限设置是不是都准确,并登录考证用户暗码是不是准确。