服务器搭建: 用户管理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/happyhorizion/article/details/87076517

查看当前用户

whoami查看当前登录用户名

用户类型

shell控制台的光标在不同用户下是不同的. $是普通管理员,#是系统管理员.
在Ubuntu下,root用户默认是没有密码的,因此也就无法使用(据说是为了安全)。想用root的话,得给root用户设置一个密码:

sudo passwd root

然后登录时用户名输入root,再输入密码就行了。
在Linux 系统中,由于角色不同,权限和所完成的任务也不同;值得注意的是用户的角色是通过UID和识别的,特别是UID, UID必须是唯一的.
可以用命令可以查看系统的所有用户:

sudo vim /etc/passwd

Linux系统用户分为三类:

  • 超级用户:拥有对系统的最高管理权限,默认是root用户。
  • 普通用户:只能对自己目录下的文件进行访问和修改,具有登录系统的权限,例如上面提到的www用户、ftp用户等。
  • 虚拟用户:也叫“伪”用户,这类用户最大的特点是不能登录系统,它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。例如系统默认的bin、adm、nobody用户等,一般运行的web服务,默认就是使用的nobody用户,但是nobody用户是不能登录系统的。

多用户管理

用户和用户组的概念

Linux是一个多用户多任务的分时操作系统,通过建立不同属性的用户,一方面,可以合理的利用和控制系统资源,另一方面也可以帮助用户组织文件,提供对用户文件的安全性保护。每个用户都用一个唯一的用户名和用户口令,在登录系统时,只有正确输入了用户名和密码,才能进入系统和自己的主目录。
用户组是具有相同特征用户的逻辑集合,有时我们需要让多个用户具有相同的权限,那么通过建立一个组,这个组的所有用户都可以具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限。
在系统用户文件/etc/passwd中可以看到, 每行字段的第一个是用户名, 第四个就是用户所在的组

root:x:0:0:root:/root:/bin/bash

/etc/group文件包含所有组, 还可以用命令groups 查看当前登录用户的组内成员. groups dl查看dl用户所在的组,以及组内成员.

添加用户

命令useraddadduser都可以增加新的用户. 不同之处在于adduser命令将自动创建用户的家目录/home/username, 还会创建用户同名的组。

adduser命令

root@ubuntu:~# sudo adduser linuxidc
 [sudo] password for xx:

输入xx用户的密码,出现如下信息

正在添加用户”linuxidc”…
正在添加新组”linuxidc” (1006)…
正在添加新用户”linuxidc” (1006) 到组”linuxidc”…
创建主目录”/home/linuxidc”…
正在从”/etc/skel”复制文件…
输入新的 UNIX 口令:
重新输入新的 UNIX 口令:

两次输入linuxidc的初始密码,出现的信息如下

passwd: password updated successfully
Changing the user information for linuxidc
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Full Name []:

等信息一路回车
这个信息是否正确? [Y/n] y

到此,用户添加成功。
如果需要让此用户有root权限,执行命令:root@ubuntu:~# sudo vim /etc/sudoers
修改文件如下:

# User privilege specification
root ALL=(ALL) ALL
linuxidc ALL=(ALL) ALL

保存退出,linuxidc用户就拥有了root权限。

useradd命令

使用命令useradd创建用户, 该命令只能用户添加一个临时的用户账户, 用户添加后, 还需要手动添加密码, 指定家目录等.
useradd user1 创建用户user1
useradd –e 12/30/2009 user2 创建user2,指定有效期2009-12-30到期
useradd –u 600 user3 可以指定UID, 通常用户的缺省UID从500向后顺序增加,500以下作为系统保留账号
useradd添加用户之后, 还需要设置密码, 没有设置密码的用户不能使用。使用 passwd 命令为新建用户设置密码:

passwd user1 

还可以修改用户的登录名, 命令usermod可以用于修改用户账户的属性,例如:
usermod –l u1 user1: 修改用户usr1的登录名为u1
usermod –g users user1: 将用户 user1 加入到 users组中,
usermod –d /users/us1 user1:将用户 user1 目录改为/users/us1

用户组管理

命令gpasswd可以为组添加用户, 只有root和组管理员能够改变组的成员, 例如把 user1加入users组:

gpasswd –a user1 users 

把 user1退出users组

gpasswd –d user1 users 
  • 命令groupmod修改组:
    groupmod –n user users 修改组名user为users
  • 命令groupdel删除组:
    groupdel users 删除组users

删除用户

对于用adduser命令创建的用户, 很自然可以想到用deluser删除用户.
deluser USER
deluser user1 删除普通用户
常用选项还有:

 --remove-home	删除用户的主目录和邮箱
 --remove-all-files	删除用户拥有的所有文件
 --backup		删除前将文件备份。
 --backup-to <DIR>	备份的目标目录。默认是当前目录。
 --system		只有当该用户是系统用户时才删除。
 --group GROUP`从系统中删除用户组
                             例如: deluser --group students

delgroup GROUP 删除用户组

–system 只有当该用户组是系统用户组时才删除
–only-if-empty 只有当该用户组中无成员时才删除

deluser USER GROUP 将用户从一个组中删去, 例如: deluser mike students
usradd命令创建的用户, 可以用userdel删去,例如:

userdel user1

删除用户 user3,同时删除他的工作目录

userdel –r user1 

备注:

(1)/etc/passwd文件

系统用户配置文件,是用户管理中最重要的一个文件。这个文件记录了Linux系统中每个用户的一些基本属性,并且对所有用户可读。/etc/passwd中每一行记录对应一个用户,每行记录又被冒号分割,其格式和具体含义如下:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:默认shell
下面是/etc/passwd文件的部分输出:

[root@localhost ~]# more /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

下面是每个字段的详细含义:

  • 用户名:是代表用户账号的字符串。
  • 口令:存放着加密后的用户口令,虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux 版本都使用了shadow技术,把真正加密后的用户口令存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如用“x”或者“*”来表示。
  • 用户标识号:就是用户的UID,每个用户都有一个UID,并且是唯一的,通常UID号的取值范围是0~65535,0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。而在Linux系统中,普通用户UID默认从500开始。UID是linux下确认用户权限的标志,用户的角色和权限都是通过UID来实现的,因此多个用户公用一个UID是非常危险的,会造成系统权限和管理的混乱,例如将普通用户的UID设置为0后,这个普通用户就具有了root用户的权限,这是极度危险的操作。因此要尽量保持用户UID的唯一性。
  • 组标识号:就是组的GID,与用户的UID类似,这个字段记录了用户所属的用户组。它对应着/etc/group文件中的一条记录。
  • 注释性描述:字段是对用户的描述信息,比如用户的住址、电话、姓名等等。
  • 主目录:也就是用户登录到系统之后默认所处的目录,也可以叫做用户的主目录、家目录、根目录等等。
  • 默认shell:就是用户登录系统后默认使用的命令解释器,shell是用户和linux内核之间的接口,用户所作的任何操作,都是通过shell传递给系统内核的。linux下常用的shell有sh、bash、csh等,管理员可以根据用户的习惯,为每个用户设置不同的shell。

(2)/etc/shadow文件

用户影子文件,由于/etc/passwd文件是所有用户都可读的,这样就导致了用户的密码容易出现泄露,因此,linux将用户的密码信息从/etc/passwd中分离出来,单独的放到了一个文件中,这个文件就是/etc/shadow,该文件只有root用户拥有读权限,从而保证了用户密码的安全性。
下面介绍下/etc/shadow文件内容的格式:
用户名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:保留字段
例如:下面是/etc/shadow文件的部分输出:
[root@localhost ~]# more /etc/shadow
root: 1 1 Uvip.QJI$GteCsLrSSfpnMs.VCOvbs/:14169:0:99999:7:::
bin::13934:0:99999:7:::
daemon:
:13934:0:99999:7:::
adm:*:13934:0:99999:7:::
下面是每个字段的详细含义:

  • 用户名:与/etc/passwd文件中的用户名有相同的含义。
  • 加密口令:存放的是加密后的用户口令字串,如果此字段是“*”、“!”、“x”等字符,则对应的用户不能登录系统。
  • 最后一次修改时间:表示从某个时间起,到用户最近一次修改口令的间隔天数。可以通过passwd 来修改用户的密码,然后查看/etc/shadow中此字段的变化。
  • 最小时间间隔:表示两次修改密码之间的最小时间间隔。
  • 最大时间间隔:表示两次修改密码之间的最大时间间隔,这个设置能增强管理员管理用户的时效性。
  • 警告时间:表示从系统开始警告用户到密码正式失效之间的天数。
  • 不活动时间:此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统不再让此用户登录,也不会提示用户过期,是完全禁用。
  • 失效时间:表示该用户的帐号生存期,超过这个设定时间,帐号失效,用户就无法登录系统了。如果这个字段的值为空,帐号永久可用。
  • 保留字段:linux的保留字段,目前为空,以备linux日后发展之用。

参考

https://blog.csdn.net/longgeaisisi/article/details/78879119
https://blog.csdn.net/yajie_china/article/details/80745346
多用户管理: https://blog.csdn.net/u010285110/article/details/42773779
删去用户: https://blog.csdn.net/u014801157/article/details/50932747

猜你喜欢

转载自blog.csdn.net/happyhorizion/article/details/87076517
今日推荐