用户、用户组管理(CentOS)

centos中新建的非root用户是没有sudo的权限的,如果需要使用sudo权限必须在/etc/sudoers 中加入账户和权限,

所以切换到root账号的时候只需要输入:su加入root账号的密码即可。

在Ubuntu中,一般使用sudo+命令,如果是第一次使用会提示输入当前用户的密码(而不是root的密码)。

注意:在Ubuntu中两个命令:useradd和adduser,虽然功能一致,但用法却不尽相同,在Ubuntu系统上这是两条命令,而在Centos上则是同一条命令,adduser 是链接的形式存在。

一、账户管理

1. 新建用户

1.1 确保当前登录用户有创建新用户的权限

# 查看当前已存在用户:
cat /etc/passwd |cut -f 1 -d:

查看用户列表:
cat /etc/passwd

查看系统中有哪些用户:
cut -d : -f 1 /etc/passwd

查看可以登录系统的用户
cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1

注意:linux里没有windows的net user,net localgroup命令。

1.2 查看UID

# 查看用户ID

more
/etc/passwd

注意:参数(UID)为0即为系统管理员,1-499为系统帐号(新版本为1-999),500-65535为一般使用者(新版本系统以1000开头)。

本例中“root”的UID为0(即为系统管理员),“fairy”为1000(一般使用者)。

 

1.3 添加用户

 useradd [用户名]      // 默认主文件夹在 `/home` 目录 

添加一个名为“testuser”的帐号,默认会添加一个同名的组,并在/home新建一个同名目录。

useradd testuser

参数:

  -m 新账号名称
  -c comment 指定一段注释性描述。
  -d 目录 指定用户主目录,如果此目录不存在,则同时使用 -m 选项,可以创建主目录。
  -g 用户组 指定用户所属的用户组。
  -G 用户组,用户组 指定用户所属的附加组。
  -s Shell文件 指定用户的登录Shell。
  -u 用户号 指定用户的用户号,如果同时有 -o 选项,则可以重复使用其他用户的标识号。

 例如:

  此命令创建了一个用户testuseruser,其中-d和-m选项用来为登录名testuser产生一个主目录 /home/hh(/home为默认的用户主目录所在的父目录)。

  useradd –d /home/hh -m testuser

注意:此时帐号“testuser”处于锁定状态。

或直接给新用户/usr/local目录的读和写权限。

 

   sudo chmod u+rw /usr/local

 

在命令 'sudo chmod u+rw /usr/local' 中,'u' 是指 'user',表示对用户的权限进行更改。

这个命令是用来改变文件或目录的权限的,其中 'g+rw' 表示给用户添加读和写的权限。

1.4 设置密码

passwd [用户名]        // 设置用户密码

创建用户完毕后,必须修改密码否则无法登陆,Linux不显示密码。

# 需输入相同密码两次
passwd wtf123456

1.5 授权

新创建的用户并不能使用 sudo 命令,需要授权。

1.5.1 添加 sudoers 文件可写权限

chmod -v u+w /etc/sudoers

1.5.2 修改 sudoers 文件

使用 vim 编辑器打开 sudoers 文件

 

# 编辑 vi /etc/sudoers,在 sudoers 文件中找到如下位置并添加如下内容:

  [用户名]    ALL=(ALL)     ALL   

 

  备注:

  若新用户需要使用 sudo 时不输密码, 则将此行最后一个 ALL 改为 NOPASSWD:ALL 即可

  testuser   ALL=(ALL)       NOPASSWD:ALL

1.5.3 收回 sudoers 文件可写权限

chmod -v u-w /etc/sudoers

1.6 切换账户

# 切换到用户(testuser)下即可使用。
su - testuser

1.7 查看默认设置

# 查看此账户的默认设置
useradd -D

2. 删除账户

2.1 退出用户组

将名称为testuser的用户退出名称为testgroup的组

 gpasswd -d testuser testgroup

2.2  删除用户账号和主目录

# userdel 选项 用户名

  常用的选项是 -r,它的作用是把用户的主目录一起删除。

  例如:

# userdel -r testuser

  此命令删除用户testuser在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。

备注:

删除用户可能会提示用户被占用根据进程号,先杀进程再删除。

kill -9 进程号

2.3 查看文件内容命令

cat     由第一行开始显示内容,并将所有内容输出
tac     从最后一行倒序显示内容,并将所有内容输出
more    根据窗口大小,一页一页的现实文件内容
less    和more类似,但其优点可以往前翻页,而且进行可以搜索字符
head    只显示头几行
tail    只显示最后几行
nl      类似于cat -n,显示时输出行号
tailf   类似于tail -f 

3. 修改账户

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

修改已有用户的信息使用usermod命令,其格式如下:

usermod 选项 用户名

常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。

 另外,有些系统可以使用选项:-l 新用户名这个选项指定一个新的账号,即将原来的用户名改为新的用户名。

例如:

usermod -l testuser test         //将用户名称 test 改为 testuser

此命令将用户testuser的登录Shell修改为ksh,主目录改为/home/h,用户组改为testgroup。

二、用户组管理

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

1. 查看用户组列表

cat /etc/group

查看当前用户属于哪个用户组:
id 或 groups
id testuser
groups testuser

2. 新建用户组

2.1 增加一个新的用户组

使用groupadd命令。其格式如下:

groupadd 选项 用户组

可以使用的选项有:

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

例如:

# groupadd testgroup

此命令向系统中增加了一个新组testgroup,新组的组标识号是在当前已有的最大组标识号的基础上加1。

# groupadd -g 1000 testgroup

此命令向系统中增加了一个新组testgroup,同时指定新组的组标识号是1000。

2.2 新建用户同时添加组

新建用户同时增加用户组:
useradd -g testgroup testuser       //新建testuser用户并增加到testgroup用户组

给已有的用户增加用户组:

usermod -G groupname username 
或者: gpasswd
-a user group

Linux提供了集成的系统管理工具userconf,它可以用来对用户账号进行统一管理。

补充:查看用户和用户组的方法
用户列表文件:/etc/passwd
用户组列表文件:/etc/group
查看系统中有哪些用户:cut -d : -f 1 /etc/passwd
查看可以登录系统的用户:cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1
查看某一用户:w 用户名
查看登录用户:who
查看用户登录历史记录:last

给组添加文件夹的读写权限

 sudo chmod g+rw /usr/local

在命令 'sudo chmod g+rw /usr/local' 中,'g' 是指 'group',表示对组用户的权限进行更改。

这个命令是用来改变文件或目录的权限的,其中 'g+rw' 表示给组用户添加读和写的权限。

3. 修改用户组

3.1 修改组属性

修改用户组的属性使用groupmod命令。其语法如下:

groupmod 选项 用户组

常用的选项有:

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

例如:

将组testgroup的组标识号修改为1001

# groupmod -g 1001 testgroup

将组testgroup的标识号改为10000,组名修改为testgroup1

# groupmod –g 10000 -n testgroup1 testgroup

3.2 多用户组

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

用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。

例如:

# newgrp root

这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。

4. 删除用户组

4.1 删除组

#删除名称为testgroup的组

groupdel testgroup

三、总结

 4.1 创建用户、用户组、分配权限

useradd -s /bin/sh -g testgroup –G adm,root testuser

解释一下该命令的每个部分的含义:

  `useradd`:         这是一个用于创建用户的命令。
  `-s /bin/sh`:       指定新创建用户的默认Shell为`/bin/sh`,也称为Bourne shell。Shell是用于与操作系统进行交互的命令行解释器。
   `-g testgroup`: 指定新创建用户所属的主要用户组为`testgroup`。主要用户组是用户在创建时自动分配的初始组。在这种情况下,新用户的主要组将是`testgroup`。
  `-G adm,root`:   指定新创建用户所属的其他附加组。在这种情况下,新用户将同时属于`adm`组和`root`组,也就是将其添加到`adm`组和`root`组中。
  `testuser`:         新创建用户的用户名,这里指定为`testuser`。

该命令的含义是创建一个名为`testuser`的用户,属于`testgroup`作为其主要组,并且还添加到`adm`组和`root`组作为附加组。此外,`/bin/sh`被指定为该用户的默认Shell。

请注意,要执行该命令,通常需要以root用户或具有足够权限的用户身份登录。

这里可能新建组:

# groupadd testgroup 及 groupadd adm

增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。

四、用户口令的管理

用户管理的一项重要内容是用户口令的管理。用户账号创建完时没有口令,被系统锁定无法使用,必须为其指定口令后才可以使用,即使是指定空口令。

指定和修改用户口令的Shell命令是passwd。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。

命令的格式为:

passwd 选项 用户名

可使用的选项:

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

如果默认用户名,则修改当前用户的口令。

例如,假设当前用户是testuser,则下面的命令修改该用户自己的口令:

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

如果是超级用户,可以用下列形式指定任何用户的口令:

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

普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。

为了系统安全起见,用户应该选择比较复杂的口令,例如最好使用8位长的口令,口令中包含有大写、小写字母和数字,并且应该与姓名、生日等不相同。

为用户指定空口令时,执行下列形式的命令:

# passwd -d testuser

此命令将用户 testuser 的口令删除,这样用户 testuser 下一次登录时,系统就不再允许该用户登录了。

passwd 命令还可以用 -l(lock) 选项锁定某一用户,使其不能登录,例如:

# passwd -l testuser

五、设置用户首次登录必须修改密码

1. 添加新账户

useradd testuser

2. 设置初始密码

设置帐号初始密码为“wtf123456”

echo "wtf123456" | passwd --stdin testuser

3. 设置密码过期

chage -d 0 testuser

4. 登录新账户

提示必须修改密码,输入新密码并回车确定后,会自动中断连接,再次连接即可)。

 

posted @ 2022-10-22 14:12  O波V步  阅读(1738)  评论(0编辑  收藏  举报