用户管理

新建用户 useradd

useradd 命令用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。 帐号建好之后,再用passwd设定帐号的密码.可用userdel 删除帐号。 使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中

useradd 选项 用户名

  • 选项:
-c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中;
-d<登入目录>:指定用户登入时的启始目录;
-D:变更预设值;
-e<有效期限>:指定帐号的有效期限;
-f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;
-g<群组>:指定用户所属的群组;
-G<群组>:指定用户所属的附加群组;
-m:自动建立用户的登入目录;
-M:不要自动建立用户的登入目录;
-n:取消建立以用户名称为名的群组;
-r:建立系统帐号;
-s<shell>:指定用户登入后所使用的shell;
-u<uid>:指定用户id。

创建用户jk-nyy, 创建主目录, 指定到root用户组 useradd jk-nyy -m -g root

创建用户yang, 创建主目录, 指定root用户组, 密码 useradd yang -m -g root -p 'xxx'

创建用户, 创建主目录, 指定到root用户组, 密码(注意引号) useradd ftppf -m -g root -p 'account.com'

伪用户

创建创建用户, 指定一个不存在的shell即可 sudo useradd git -m -r -s /usr/sbin/nologin

用户口令 passwd

passwd命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。

passwd (选项)(参数)

  • 选项:
-d:删除密码,仅有系统管理者才能使用;
-f:强制执行;强迫用户下次登录时修改口令。
-k:设置只有在密码过期失效后,方能更新;
-l:锁住密码;
-s:列出密码的相关信息,仅有系统管理者才能使用;
-u:解开已上锁的帐号。
# //更改或创建user_ftp用户的密码;
passwd user_ftp 
 
# //--- 锁定
passwd -l user_ftp 
 
# //--- 查看状态
passwd -S user_ftp
 
# //--- 解锁 
passwd -u user_ftp
 

删除用户 userdel

userdel 可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。

-r(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。

userdel -r user_ftp

修改用户 usermod

修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。

例: 禁用shell

usermod –s /bin/false ftp_user
也可以使用 chsh [username]

chsh命令用来更换登录系统时使用的shell。若不指定任何参数与用e户名称,则chsh会以应答的方式进行设置。 /bin/bash

useradd user_ftp
passwd user_ftp
usermod –s /bin/false ftp_user
//
useradd -d -p yang 
passwd yang
usermod -g root yang
//usermod -s 无效 使用chsh 命令改变登陆shell
chsh yang
// /bin/bash

与用户账号有关的系统文件

与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括/etc/passwd, /etc/shadow, /etc/group等。

/etc/passwd

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

cat /etc/passwd

$ cat /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
sync:x:5:0:sync:/sbin:/bin/sync

内容格式:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

1. 用户名

“用户名”是代表用户账号的字符串。 通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(:),因为冒号在这里是分隔符。

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

2. 口令 /etc/shadow

/etc/shadow 文件,用于存储 Linux 系统中用户的密码信息,又称为“影子文件”。

早期的 UNIX 密码放在 /etc/passwd 文件中,由于该文件允许所有用户读取,易导致用户密码泄露,因此从 /etc/passwd 文件中分离出来,并单独放到了此文件中。/etc/shadow 文件只有 root 用户拥有读权限。

现在许多Linux 系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。

3. 用户标识号

一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。

通常用户标识号的取值范围是0~65 535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。

4. 组标识号 /etc/group

“组标识号”字段记录的是用户所属的用户组。 它对应着/etc/group文件中的一条记录。

5. 注释性描述

这个字段并没有什么实际的用途。在不同的Linux 系统中,这个字段的格式并没有统一。

6. 主目录

它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下, 而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。

7. 登录Shell

用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。

系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh

所有可用的 Shell 都记录在 /etc/shells文件中。

修改​​自己​​的 Shell,直接运行 chsh即可

/usr/bin/bash

伪用户

系统中有一类用户称为伪用户(pseudo users)。 这些用户在 /etc/passwd 文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件宿主的要求。

定义 sudo 命令用户 /etc/sudoers

/etc/sudoers 是Linux系统中​​sudo权限的核心配置文件​​,控制着:

  • 哪些用户可以执行特权命令
  • 以什么身份执行(通常是root)
  • 可以执行哪些特定命令
  • 是否需要密码验证

不要直接使用普通编辑器修改此文件! 必须使用 visudo 命令(会锁定文件并检查语法错误)

修改定义可以执行sudo命令的用户和权限

# 改权限编辑
chmod 770 /etc/sudoers  
vi /etc/sudoers  
 
 
# 添加内容
# jk-nyy    ALL=(ALL)       ALL
# yang ALL=(ALL) NOPASSWD: ALL
 
# 改回去
chmod 220 /etc/sudoers  
usermod -aG root yang

踢掉用户

pkill -kill -t pts/1

SSH配置

允许root远程登录

  1. 编辑SSH配置文件sshd_config,可以使用以下命令:
sudo vi /etc/ssh/sshd_config

在配置文件中找到以下两行,并按照以下指示修改: 找到 PermitRootLoginPasswordAuthentication 参数,将其值修改为 yes。如果该行被注释掉,需要去掉注释。这样SSH服务才允许使用密码进行认证。

  1. 重启SSH服务以应用新的配置
sudo systemctl restart ssh

用户组管理

新建用户组 groupadd

groupadd 选项 用户组

-g GID 指定新用户组的组标识号(GID)。
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

groupadd yang_group

删除用户组 groupdel

此命令从系统中删除组 yang_group groupdel yang_group

修改用户组 groupmod

groupmod 选项 用户组 常用的选项有: -g GID 为用户组指定新的组标识号。 -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。 -n 新用户组 将用户组的名字改为新名字

切换用户组 newgrp

如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。

//这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组 newgrp root

用户组系统文件 /etc/group

//系统所有组 cat /etc/group

组名:口令:组标识号:组内用户列表

“组名”是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。 “口令”字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。 “组标识号”与用户标识号类似,也是一个整数,被系统内部用来标识组。 “组内用户列表”是属于这个组的所有用户的列表/b],不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。

查询用户所在的组

groups yang