轻松管理Linux用户/组

一,用户/组简介

Linux是一个多用户操作系统,允许多个用户同时登录系统使用系统资源。

一种秩序以区分不同用户。这就是用户ID,即账户、用户共有两种。超级用户和普通用户。超级用户又被成为管理员,用来管理整个系统,因此具有所有权限(当然也具有摧毁整个系统的能力,一定要慎用)。普通用户拥有一般的、可设定的权限,以进行正常工作。组是用户的集合。创建用户时,若没有指定属组,系统会创建一个与其同名的私有组。此私有组只包含其一个用户。当用户登录时,其当前所属的组为主组,其它组成为附加组。

安全上下文机制:

  • 进程以其发起者的身份运行,即进程对文件的访问前线,取决于发起此进程的用户的权限。
  • 系统用户:为了能够让那些后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户;这类用户从不用登陆系统。
  • 系统组:与系统用户类似

二,Linux的用户/组系统文件

1,/etc/passwd

/etc/passwd为用户的信息库(The /etc/passwd file is a text file that describes user login accounts for the system. )

我们man一下passwd,输入‘man 5 passwd’。在man手册中可知,/etc/passwd中的每一行定义了一个用户的信息,分为7个字段,以:作为分隔符。

name:password:UID:GID:GECOS:directory:shell

各字段说明:

  • name:用户登录系统时使用的用户名,是唯一的。
  • password:由于口令受/etc/shadow保护,此字段可以是加密的密码,也可以用x占位。所有加密的口令以及和口令有关的设置都保存在/etc/shadow中。
  • UID:用户标识符。系统用来标识用户。每个用户的标识符都是唯一的。root的UID为0,系统用户的UID为0-499,普通用户的UID为500-60000。
  • GID:用户所属的主组的ID号。
  • GECOS:保存用户的注释信息。
  • directory:用户登录系统后所进入的目录,即用户的主目录、家目录
  • shell:用户的默认shell;登录时默认。

2,/etc/shadow

由于/etc/passwd文件对所有用户均是可读的,为了安全起见,其中的口令经过加密后保存在本文件中,它只对root可读。每一行有9个字段,以:为分隔符。

各字段说明如下:

  • 用户名:用户的账户名
  • 口令:是加密过的用户的口令;此字段又以$分割成三部分:


    jeffrey:$1$p7agobhA$HnDl86u18D4Ru95CTMEoi1:17772:0:99999:7:::


    第一部分:$1-6 .第一个$之后的内容为数字1-6,其指明了密码字段所使用的加密算法;对应关系如下:
    1 —- md5加密算法
    2 —- sha160
    3 —- sha224
    4 —- sha256
    5 —- sha384
    6 —- sha512


    第二部分: $salt . 这一部分是在加密算法中为了提高密码安全性而加入的一些随机数,称为salt(杂质),第2个$之后的字符串就是对这些随机数加密生成的。


    第三部分:$passwd: . 这一部分是用户设置的密码,第三个$后面的字符串就是经过加密算法加密后生成的字符串。

  • 最近一次修改密码的时间:从1970.1.1起,到用户最后一次更改口令之间的天数

  • 密码最短使用期限:从1970.1.1起,到用户可以更改口令的天数
  • 密码最长使用期限:从1970.1.1起,到用户必须更改口令的天数
  • 警告时间:在用户口令过期之前多少天气象用户更新
  • 不活动时间:在用户口令过期之后到禁用账户的天数
  • 过期期限:从1970.1.1起,到账户被禁用的天数
  • 标志:保留位

3,/etc/group

将用户分组是Linux管理用户及控制访问权限的一种手段。组的属性都保存在本文件中,并且本文件对所有用户均可读。每行共有4个字段,以:为分割符。

各字段说明如下:

  • 组名:该组的名称
  • 组口令:由于受/etc/gshadow保护,此文件中只以x占位。加密的组口令保存在/etc/gshadow中。
  • GID:组的ID号。
  • 组成员列表:以此组为附加组的用户列表,多个成员以 ,分割。

4,/etc/gshadow

文件用于定义用户组口令、组管理员等信息,只有root可以读取。共有4个字段,以:分割。

各字段说明如下:

  • 组名:组名称,与group文件中的组名称对应
  • 组口令:保存加密的组口令
  • 组的管理员账号:组的管理员账号,管理员有权对该组添加、删除账号
  • 组成员:属于该组的用户成员列表,列表中多个用户间以,分割

总结:账户管理的是指就是管理上述4个账户系统文件。

三,用户/组命令

用户管理:常用的有useradd ,userdel, usermod, passwd, chsh, chfn, finger, id, chage.

接下来一一详解:


useradd 添加用户


选项:

-u , - - uid UID 指定UID,若不指定GID,则默认GID与UID相同。
-g , - - gid GID/Group 指定基本组,可以跟上组名或GID,但此组必须事先存在;
-G, - - groups GROUP1[,GROUP2,…[,GROUPN]]] 指定用户所属的附加组,多个组之间用逗号分隔。
-c , - - comment “COMMENT” 指定注释信息
-d , - - home /path/to/directory 指定用户的家目录:通过复制目录/etc/skel并重命名为指定的目录名来实现,若指定的目录事先已经存在,则不会为用户复制“环境配置文件”。
-s , - - shell /path/to/shell 指定用户默认的shell,可用的所有shell列表存储在/etc/shell文件中。
-m -k 创建家目录
-r ,- - system 添加系统用户
-M 不创建家目录

注意:创建用户时的诸多默认设定保存在配置文件/etc/login.defs

useradd -D : 显示用户创建的默认配置
usradd -D options : 修改选项对应的值,修改的结果保存于文件/etc/default/useradd中。

例:

[root@localhost jeffrey]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

[root@localhost jeffrey]# useradd -D -s /bin/csh
[root@localhost jeffrey]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/csh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes


shell类型主要为:
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh


示例:

//指定UID
[root@localhost jeffrey]# useradd -u 1111 Cherry
[root@localhost jeffrey]# tail -1 /etc/passwd
Cherry:x:1111:1111::/home/Cherry:/bin/bash

//指定UID、GID
[root@localhost jeffrey]# useradd -u 2222 -g 1111 Barry
[root@localhost jeffrey]# tail -2 /etc/passwd
Cherry:x:1111:1111::/home/Cherry:/bin/bash
Barry:x:2222:1111::/home/Barry:/bin/bash

//为新用户指定附加组GID为1111(组名为Cherry)、注释信息、shell和家目录。
[root@localhost jeffrey]# useradd -G 1111 -c "My name is Sarry" -d /etc/Sarry -s /bin/csh  Sarry
[root@localhost jeffrey]# tail -1 /etc/passwd
Sarry:x:2223:2223:My name is Sarry:/etc/Sarry:/bin/csh

//可以看出组Cherry的附加组成员列表中有Sarry
[root@localhost jeffrey]# tail -3 /etc/group
leonard:x:1001:
Cherry:x:1111:Sarry
Sarry:x:2223:

userdel 删除用户(不删除家目录)


选项

-r 删除用户时一并删除其家目录

示例:

[root@localhost /]# userdel Barry
[root@localhost /]# ls /home
Barry  Cherry  jeffrey
[root@localhost /]# userdel -r Cherry
[root@localhost /]# ls /home
Barry  jeffrey

usermod 修改用户账号属性


选项

-u , - - uid UID 修改用户UID为指定的UID
-g , - - gid Group 修改用户所属的基本组
-G, - - groups GROUP1[,GROUP2,…[,GROUPN]]] 修改用户所属的附加组,多个组之间以逗号隔开
-a . - - append : 与-G一起使用,用于为用户追加新的附加组
-c , - - comment COMMENT 修改用户注释信息
-d , - - home HOME_DIR : 修改用户的家目录,并且用户原家目录中的文件不会被转移到新位置
-m , - - move HOME 指定新家目录位置,并将原来的家目录中的文件移动到新的家目录
-l , - - login NEW_login 改用户名
-s , - - shell SHELL 改用户默认shell为指定的SHELL
-L , –lock : 锁定用户密码,即在用户密码字符串之前添加一个“ !”。
-U , - - unlock : 解锁用户密码,即去点被锁定密码字符串前面的“ !”


su 切换用户


用法:
# su - USERNAME
# su -l USERNAME
登录式切换,会通过读取目标用户的配置文件来重新初始化环境

# su USERNAME
非登录式切换,不会通过读取目标用户的配置文件来重新初始化环境

# su -c COMMAND
表示仅以指定用户的身份运行此处指定的命令

示例:

[root@localhost /]# su jeffrey -c passwd
Changing password for user jeffrey.
Changing password for jeffrey.
(current) UNIX password: 

id 查看用户ID属性信息(UID,GID)


用法:
#id 直接使用,显示当前用户的ID信息

选项

-u 只查看UID

-g 只查看基本组的GID

-G 查看所有组,包括基本组和附加组GID

-n 与上述选项结合使用,显示其名字(而不是其id)

示例:

[root@localhost jeffrey]# id jeffrey
uid=1000(jeffrey) gid=1000(jeffrey) groups=1000(jeffrey)

finger USER 查看用户账号信息


示例:

[root@localhost jeffrey]# finger jeffrey
Login: jeffrey                  Name: jeffrey
Directory: /home/jeffrey                Shell: /bin/bash
On since Sun Sep  9 05:43 (PDT) on :0 from :0 (messages off)
On since Mon Sep 10 02:58 (PDT) on pts/0 from :0
   7 seconds idle
No mail.
No Plan.

chsh 修改用户的默认shell


用法:
# chsh 修改当前用户的默认shell
# chsh Username 修改指定用户的默认shell

选项

-s 修改用户的shell

-l 显示系统支持的shell

示例:

[root@localhost jeffrey]# chsh jeffrey
Changing shell for jeffrey.
New shell [/bin/bash]: /bin/csh
Shell changed.

[root@localhost jeffrey]# chsh -s /bin/bash jeffrey
Changing shell for jeffrey.
Shell changed.


[root@localhost jeffrey]# chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh

chfn 修改用户的finger信息


用法:
# chfn 直接执行会出现修改finger信息的提示

示例:

[root@localhost jeffrey]# chfn jeffrey
Changing finger information for jeffrey.
Name [jeffrey]: jeffrey
Office []: Security
Office Phone []: 911
Home Phone []: 9111

Finger information changed.

whoami 显示当前用户名称



passwd 修改用户密码


用法:
#passwd 修改当前用户的密码
#passwd USERNAME : 修改用户指定的密码,但仅root由此权限。

选项

-l 锁定用户账号
-u 解锁用户账号
-d 删除用户密码
-e DATE : 过期期限,日期;
-i DAYS :非活动期限;
-n DAYS : 密码的最短使用期限;
-x DAYS : 密码的最长使用期限;
-w DAYS : 警告期限;

- - stdin 从标准输入中修改密码;

示例:修改Jeffrey的密码为helloworld

[root@localhost /]# echo helloworld | passwd --stdin jeffrey
Changing password for user jeffrey.
passwd: all authentication tokens updated successfully.

pwck 查看用户账号的完整性


用法:

# pwck USERNAME

示例:

[root@localhost jeffrey]# pwck
user 'ftp': directory '/var/ftp' does not exist
user 'saslauth': directory '/run/saslauthd' does not exist
user 'pulse': directory '/var/run/pulse' does not exist
user 'gnome-initial-setup': directory '/run/gnome-initial-setup/' does not exist
pwck: no changes

chage 修改用户密码的过期信息


选项 :

-d 修改用户密码最近一次修改的时间

-E 修改密码过期时间

-I 修改密码活动时间

-m 修改密码最短使用期限

-M 修改密码最长使用期限

-W 修改密码警告时间


组管理:常用命令有groupadd, groupdel, groupmod, gpasswd, newgroup


groupadd 创建新工作组


用法:

#groupadd GROUPNAME

选项

-g 指定GID,默认条件下创建的组ID为前一ID号+1

-r 创建系统组

示例:

[root@localhost jeffrey]# groupadd leonard
[root@localhost jeffrey]# tail -2 /etc/group
jeffrey:x:1000:
leonard:x:1001:

[root@localhost jeffrey]# groupadd -g 1111 Cherry
[root@localhost jeffrey]# tail -2 /etc/group
leonard:x:1001:
Cherry:x:1111:

groupdel 删除工作组


用法:

#groupdel GROUPNAME

示例:

[root@localhost jeffrey]# tail -2 /etc/group
leonard:x:1001:
Tom:x:1234:
[root@localhost jeffrey]# groupdel Tom
[root@localhost jeffrey]# tail -2 /etc/group
jeffrey:x:1000:
leonard:x:1001:

groupmod 修改工作组信息


选项:

    -g   GID               指定新GID
    -n    GROUPNAME        指定新组名

示例:

[root@localhost jeffrey]# tail -1 /etc/group
Cherry:x:1111:
[root@localhost jeffrey]# groupmod -g 1234 Cherry
[root@localhost jeffrey]# tail -1 /etc/group
Cherry:x:1234:
[root@localhost jeffrey]# groupmod -n Tom Cherry
[root@localhost jeffrey]# tail -1 /etc/group
Tom:x:1234:

gpasswd 工作组文件管理工具


用法:
#gpasswd 直接使用会
选项

-a USERNAME 向组内添加用户
-d USERNAME 从组内删除用户
-A 设置组管理员


newgrp 临时切换用户基本组


用法:
#newgrp [-] [group]

选项:

- : 会模拟用户重新登陆以实现重新初始化其工作环境

使用exit可返回原基本组


groups 显示指定用户所属的基本组和附加组


用法:
# groups USERNAME

示例:

[root@localhost jeffrey]# groups jeffrey
jeffrey : jeffrey
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux中所属是用来管理用户的。每个用户都必须属于至少一个是一种逻辑概念,可以将用户分类,并授予相应的权限。每个可以包含一个或多个用户,一个用户也可以属于多个。 在Linux系统中,可以使用以下命令来管理用户之间的关系: 1. groupadd:创建新 2. groupdel:删除现有 3. useradd:创建新用户 4. userdel:删除现有用户 5. usermod:修改现有用户的属性,包括所属 6. groups:显示用户所属的 通过使用这些命令,管理员可以轻松管理Linux系统中的用户。 ### 回答2: 在Linux中,每个用户都有其所属的用户管理是通过系统中的密码文件和文件来实现的。 用户管理方面,Linux中的用户信息存储在/etc/passwd文件中。该文件以文本形式存储,每行表示一个用户的信息,各字段之间使用冒号分隔。每个用户的记录包含用户名、加密后的密码(或者是加密密码的占位符x)、用户ID(UID)、所属ID(GID)、用户的主目录、登录shell等信息。通过修改/etc/passwd文件,可以添加、修改或删除用户,包括修改用户的所属管理方面,Linux中的信息存储在/etc/group文件中。该文件也以文本形式存储,每行表示一个的信息,各字段之间使用冒号分隔。每个的记录包含名、加密后的密码(或者是加密密码的占位符x)、ID(GID)、内的用户列表等信息。通过修改/etc/group文件,可以添加、修改或删除,包括为添加或删除用户用户的关系是通过用户ID(UID)和ID(GID)来建立的。每个用户在/etc/passwd文件中都有一个唯一的UID,而在/etc/group文件中也有一个唯一的GID。用户可以同时属于多个,其中一个是用户的主,其他则是附加。通过修改用户的所属ID,可以将用户从一个切换到另一个Linux中通过所属的权限设置来实现文件的访问控制。文件的所属和其他的成员可以获得相应的权限,而其他用户则没有权限操作该文件。管理员可以通过修改文件的所属或者用户的所属来调整文件的访问控制。 总之,Linux中的用户管理是通过/etc/passwd和/etc/group文件来实现的。通过这些文件的修改,可以添加、修改或删除用户,并通过设置用户的所属来实现文件的访问控制。 ### 回答3: 在Linux系统中,用户可以被分配到一个或多个所属。所属用户进行管理和权限控制。 首先,Linux系统创建用户时会自动为该用户分配一个默认的所属,通常与用户名相同。用户可以通过修改配置文件或使用命令行工具来修改所属。 所属管理主要体现在权限控制方面。文件和目录在Linux系统中有所属用户和所属的概念,这决定了用户是否具有对文件和目录的读取、写入、执行等权限。 当一个用户创建新文件或目录时,它们会继承该用户的所属。其他属于同一用户可以共享该文件或目录,并具有相同的操作权限。这样可以方便多个用户共同在一个工作目录下进行协作。 同时,管理员也可以通过更改文件或目录的所属,将其移动到其他,从而改变用户对该文件或目录的访问权限。 所属也可以用于授权,管理员可以设置文件或目录的权限为可执行,这样内的用户就可以执行该文件或访问该目录。例如,一个共享文件夹可以被设置为只有用户才能访问。 此外,用户可以通过将其他用户添加到自己的所属中,来与其他用户共享资源和权限。这种方式在进行团队协作或权限委托时非常有用。 总之,Linux中的所属可以通过方便地管理和控制用户的文件和目录访问权限,实现用户之间的资源共享和权限控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值