linux基础命令4
阅读原文时间:2023年07月09日阅读:2

用户和组群账户管理

用户的 角色是通过UID(用户ID号)来标识的,每个用户的UID都是不同的。

在Linux系统中有三大类用户,分别是root 用户、系统用户和普通用户。

root用户UID为0。root用户的权限是最高的

在系统中的每个文件、目录和进程都归属于某一个用户,没有用户许可,其它普通用户无法进行操作的,但对root用户除外。

系统用户也称为虚拟用户、伪用户或假用户,这类用户不具有登录Linux系统的能力, 但却是系统运行不可缺少的用户,比如bin、 daemon、adm、ftp、mail等,这类用户都是系统自身拥有的。系统用户的UID为 1~999

这类用户能登录系统,在Linux系统上进行普通操作,能操作自己目录的内容,其使用系统的权限受限,这类用户都是系统管理员创建的。普通用户的UID为1000~60000

/etc/passwd

系统识别用户的重要文件,linux中所有的用户都记录在该文件中

系统首先会检查/etc/passwd文件,看是否有zhangsan这个账户,然后确定用户zhangsan的UID,通过UID来确认用户的身份

如果存在则读取/etc/shadow文件中所对应的密码。如果密码核实无误则登录系统,读取用户的配置文件

任何用户都可以读取/etc/passwd文件内容,在/etc/passwd文件中,每一行表示的是一个用户账户的信息,一行有7个段位,每个段位用“:”分隔。zhangsan:x:1000:1000:张三:/home/zhangsan:/bin/bash

在系统中每一位用户的UID值都是惟一的,更确切地说每一位用户都要对应一个惟一的UID

Linux的发行版本都会预留一定的UID 给系统虚拟用户使用,比如ftp、nobody、adm、 bin以及shutdown等用户账户。

/etc/shadow文件是/etc/passwd的影子文件,这个文件并不是由/etc/passwd文件产生,这两个文件应该是对应互补的。/etc/shadow文件内容包括用户及被加密的密码以及其它/etc/passwd不能包括的信息,比如用户账户的有效期限等。

/etc/shadow文件只有root用可以读取和操作,文件的权限不能随便更改为其它用户可读,这样做是非常危险的。如果发现这个文件的权限变成了其它组群或用户可读了,要进行检查,以防系统安全问题的发生。

/etc/shadow文件的内容包括9个段位,每个段位 之间用“:”分隔。 zhangsan:$6$E/xvWMmh$rhYLQwwffEqIudVLFzMlvkb0iN4.0Ol uk6H.UovEYN0/99dVoHXcaCNGZZkFY1S3QHYgm7e6JPzEew6ybmN 4e0:16364:0:99999:7:::

http://c.biancheng.net/view/840.html

用户账户设置

创建用户账户就是在系统中创建一个新账户,为新账户分配用户UID、组群、主目录 和登录Shell等资源,新创建的用户账户默认是被锁定的,无法使用,需要使用 passwd命令设置密码以后才能使用。

创建用户在/etc/passwd中增加一条记录,同时更新/etc/shadow和/etc/group文件

useradd命令

useradd zhangsan

[root@rhel ~]# cat /etc/passwd|grep zhangsan zhangsan❌1000:1000::/home/zhangsan:/bin/bash

创建用户moon,并设置该用户UID为1510

[root@rhel ~]# useradd -u 1010 moon

[root@rhel ~]# cat /etc/passwd|grep moon moon❌1010:1010::/home/moon:/bin/bash

创建用户newuser,并设置该用户主目录为/home/www

[root@rhel ~]# useradd -d /home/www newuser

[root@rhel ~]# cat /etc/passwd|grep newuser newuser❌1003:1003::/home/www:/bin/bash //查看/etc/passwd文件,可以看到用户newuser的主目录是/home/www

创建用户pp,并指定该用户是属于组群root的成员。

[root@rhel ~]# useradd -g root pp

id pp

使用id命令,可以看到用户pp的主要组群是root

创建用户abc,并设置该用户的Shell类型是/bin/ksh。 [root@rhel ~]# useradd -s /bin/ksh abc

修改用户账户

使用usermod命令可以更改用户的Shell类型、所属的组群、用户密码的有效期,还能更改用户的登录名。

修改用户zhangsan的主目录为/home/kkk,并手动创建/home/kkk目录。

[root@rhel ~]# usermod -d /home/kkk zhangsan

# mkdir /home/kkk //必须使用mkdir命令创建/home/kkk目录,这样用户zhangsan 才能使用该主目录

修改用户wangwu的主目录为/home/opop,并自动创建 /home/opop目录。

# usermod -d /home/opop -m wangwu

修改用户wangwu的登录名为zhaoliu。

[root@rhel ~]# usermod -l zhaoliu wangwu

修改用户zhangsan的用户名全称为张三。

[root@rhel ~]# usermod -c 张三 zhangsan

修改用户zhangsan在密码过期后20天就禁用该账户。

[root@rhel ~]# usermod -f 20 zhangsan

修改用户sun所属的组群为root,该组群必须事先存在。

[root@rhel ~]# usermod -g root sun

锁住用户zhangsan密码,使密码无效。

[root@rhel ~]# usermod -L zhangsan

# passwd -S zhangsan zhangsan LK 2012-06-02 0 99999 7 20 (密码已被锁定。)

解除用户zhangsan密码锁住。

[root@rhel ~]# usermod -U zhangsan

修改用户zhangsan账户的过期日期是2012年12月12号。

# usermod -e 12/12/2012 zhangsan

# cat /etc/shadow|grep zhangsan

修改用户zhangsan的Shell类型为/bin/ksh

# usermod -s /bin/ksh zhangsan

删除用户账户 userdel

使用userdel命令删除用户账户并不会删除该用户主目录

# userdel -r moon//同时将其主目录删除

本节主要讲述Linux系统下的组群账户分类 以及与组群账户有关的配置文件 /etc/group和/etc/gshadow。

两种组群分类方法

1、

私有组群:创建新用户,没有指定组群,创建一个与用户同名的组群,该私有组群只包含该用户

标准组群:普通组群,包含多个用户,在创建用户时应指定其在某个组群

2、

主要组群:一个账户属于多个组群时,登陆后所属的组群是主要组群,一个用户只能属于一个主要组群

次要组群:附加组群,一个用户可以属于多个附加组群

/etc/group:

/etc/group文件是组群的配置文件,内容包括用户和组群, 并且能显示出用户是归属哪个组群或哪几个组群。一个用户可以归属一个或多个不同的组群,同一组群的用户之间 具有相似的特征。比如把某一用户加入到root组群,那么 这个用户就可以浏览root用户主目录的文件,如果root用户把某个文件的读写执行权限开放,root组群的所有用户都可以修改此文件;如果是可执行的文件,root组群的用户也是可以执行的。

/etc/group文件的内容包括组群名、组群密码、GID及该 组群所包含的用户,每个组群一条记录,一行有4个段位, 每个段位用“:”分隔。

组群GID和UID类似,是一个从0开始的正整数,GID为0的组群是root组群。Linux系 统会预留GID号1~999给系统虚拟组群使用, 创建的新组群GID是从1000开始的,查看 系统创建组群默认的GID范围应该查看 /etc/login.defs中的GID_MIN和GID_MAX 值,可以使用以下命令查看

/etc/gshadow

/etc/gshadow是/etc/group的加密文件,组群密码就是存放在这个文件中。

/etc/gshadow文件中每个组群都有一条记录。一 行有4个段位,每个段位用“:”分隔。

使用groupadd命令可以在Linux系统中创建 组群账户。

创建名为china的组群

[root@rhel ~]# groupadd china

[root@rhel ~]# cat /etc/group|grep china china❌1006: //查看文件/etc/group,可以看到已经创建了组群china,组群GID是1006

创建名为ou的组群,并且设置该组群GID为1800。

[root@rhel ~]# groupadd -g 1800 ou

[root@rhel ~]# cat /etc/group|grep ou ou❌1800: //查看文件/etc/group,可以看到已经创建了组群ou,组群GID是1800

创建名为chinese的系统组群

[root@rhel ~]# groupadd -r chinese

[root@rhel ~]# cat /etc/group|grep chinese chinese❌982: //查看/etc/group文件,可以看到系统组群chinese的GID是982,是小于 1000的

使用groupmod命令可以在Linux系统中修 改组群账户,比如组群名称、GID等

将组群ou的GID修改为1900。

[root@rhel ~]# groupmod -g 1900 ou

[root@rhel ~]# cat /etc/group|grep ou ou❌1900: //查看文件/etc/group,可以看到组群ou的GID已经更改为1900

修改组群ou的新组群名称为shanghai。

[root@rhel ~]# groupmod -n shanghai ou

[root@rhel ~]# cat /etc/group|grep shanghai shanghai❌1900: //查看/etc/group文件,可以通过原来的GID看到组群ou的名称 已经更改为shanghai

使用groupdel命令可以在Linux系统中删除组群账户。如果该组群中仍旧包括某些用 户,那么必须先删除这些用户后,才能删 除组群。

普通用户只 能更改自己的用户密码,root用户可以设置或修改任何用户的密码

passwd -l/-S/-u/-d

gpasswd 设置一个组群的组群密码,或者是在组群 中添加、删除用户。

使用su命令可以切换到其它用户账户进行 登录。如果su命令不加任何选项,默认为 切换到root用户,并且不改变Shell环境。

让用户账户以另一个组群的身份进行登录。 newgrp命令是以相同的账户名,不同的组群身份 登录系统。如果要使用newgrp命令切换组群,用 户必须是该组群的用户,否则将无法登录指定的 组群。单一用户如果要同时隶属多个组群,需要 利用交替用户的设置。如果不指定组群名称,则 newgrp命令会登录该用户名称的预设组群

使用groups命令可以显示指定用户账户的 组群成员身份。

使用id命令可以显示用户的UID以及该用户 所属组群的GID。