ubuntu用户与用户组管理

0 前言

在使用Ubuntu时,经常会遇到用户和用户组,在此记录一下。

1 用户组

每个用户在创建的时候,有时会新建一个和用户同名的用户组,系统中也会有很多的用户组,有些程序在安装的时候,也会创建用户组,因此,在此需要详细说明。

1.1 查看所有用户组

1
2
3
4
5
# 查看所有用户
cat /etc/group

# 查看指定用户
cat /etc/group | grep sudo

1.2 设定用户组权限

1
2
3
4
5
6
7
8
9
10
11
# 这个文件是设定权限的,没事的情况下,不要乱动
sudo vi /etc/sudoers

# 以Ubuntu18.04为例,找到下面的两行,以%开头的:
%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
# 以%开头,表示这是一个用户组
# %目标用户组 host=(user : group) [NOPASSWD:] cmd1,cmd2······
# 允许使用的主机=(以谁的身份:以哪个用户组的身份) 允许使用的命令列表

# 因此呢,把用户加入sudo组,就可以使用sudo命令,提升权限。

2 用户

创建用户有两条命令:adduer和useradd,对应着两条删除用户的命令:deluser和userdel。
这两种命令之间的区别:

  • adduser:会自动为创建的用户指定主目录、系统shell版本,会在创建时输入用户密码,对应deluser。
  • useradd:需要使用参数选项指定上述基本设置,如果不使用任何参数,则创建的用户无密码、无主目录、没有指定shell版本,对应userdel。

2.1 adduser命令

输入命令:mqk@HPZ640-1:~$ sudo adduser tt
输出显示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[sudo] password for mqk: 
正在添加用户"tt"...
正在添加新组"tt" (1006)...
正在添加新用户"tt" (1006) 到组"tt"...
创建主目录"/home/tt"...
正在从"/etc/skel"复制文件...
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:已成功更新密码
正在改变 tt 的用户信息
请输入新值,或直接敲回车键以使用默认值
全名 []:
房间号码 []:
工作电话 []:
家庭电话 []:
其它 []:
这些信息是否正确? [Y/n] y

这样在创建用户名时,就创建了用户的主目录以及密码。

默认情况下:
adduser在创建用户时会主动调用 /etc/adduser.conf;
在创建用户主目录时默认在/home下,而且创建为 /home/用户名

如果主目录已经存在,就不再创建,但是此主目录虽然作为新用户的主目录,而且默认登录时会进入这个目录下,但是这个目录并不是属于新用户,当使用userdel删除新用户时,并不会删除这个主目录,因为这个主目录在创建前已经存在且并不属于这个用户。

为用户指定shell版本为:/bin/bash
常用参数选项为:

  1. –home: 指定创建主目录的路径,默认是在/home目录下创建用户名同名的目录,这里可以指定;如果主目录同名目录存在,则不再创建,仅在登录时进入主目录。
  2. –quiet: 即只打印警告和错误信息,忽略其他信息。
  3. –debug: 定位错误信息。
  4. –conf: 在创建用户时使用指定的configuration文件。
  5. –force-badname: 默认在创建用户时会进行/etc/adduser.conf中的正则表达式检查用户名是否合法,如果想使用弱检查,则使用这个选项,如果不想检查,可以将/etc/adduser.conf中相关选项屏蔽。如:

2.2 deluser命令

  • 只删除用户:sudo deluser tt

    1
    2
    3
    4
    输出显示:
    正在删除用户'tt'...
    警告:组"tt"没有其他成员了。
    完成。
  • 连同用户的主目录和邮箱一起删除:sudo deluser --remove-home tt

    1
    2
    3
    4
    5
    6
    输出显示:
    正在寻找要备份或删除的文件...
    正在删除文件...
    正在删除用户'tt'...
    警告:组"tt"没有其他成员了。
    完成。
  • 连同用户拥有的所有文件删除:sudo deluser --remove-all-filestt

2.3 useradd命令

注意: 在使用useradd命令创建新用户时,不会为用户创建主目录,不会为用户指定shell版本,不会为用户创建密码。

2.3.1 不使用任何参数

不使用任何参数选项创建用户:sudo useradd tt
为用户指定登录密码:sudo passwd tt
输出显示:

1
2
3
输入新的 UNIX 密码: 
重新输入新的 UNIX 密码:
passwd:已成功更新密码

2.3.2 指定参数

常用命令行选项:

  • -d:指定用户的主目录
  • -m:如果存在不再创建,但是此目录并不属于新创建用户;如果主目录不存在,则强制创建;-m和-d一块使用。
  • -s:指定用户登录时的shell版本
  • -M:不创建主目录

例如:sudo useradd -d "/home/tt" -m -s "/bin/bash" tt
解释: -d 指定/home/tt为主目录
    -m 如果/home/tt不存在就强制创建
    -s 指定shell版本

2.4 userdel命令

  • 只删除用户:sudo userdel tt
  • 连同用户主目录一起删除:sudo derlser -r tt
    如果创建时主目录已经存在,即主目录不属于当前要删除的用户,则无法删除主目录。

2.5 用户权限

2.5.1 命令设置

1
2
3
4
5
6
7
# 查看用户情况
id user
# 查看用户所属的组
groups zll

# 将当前用户加入到指定的组
sudo usermod -aG sudo $USER

2.5.2 sudoers文件

1
2
3
4
5
6
7
8
# 这个文件是设定权限的,没事的情况下,不要乱动
sudo vi /etc/sudoers

# 以Ubuntu18.04为例,找到下面:
root ALL=(ALL:ALL) ALL
# 参照这个格式,自己写
# 目标用户 host=(user : group) [NOPASSWD:] cmd1,cmd2······
# 允许使用的主机=(以谁的身份:以哪个用户组的身份) 允许使用的命令列表

3 总结

相关文件:

1
2
3
/etc/passwd -查看系统中所有用户相关情况(看不到密码)
/etc/group =查看系统中所有用户组相关情况
/etc/sudoers -用户和用户组的权限控制

4 参考

https://blog.csdn.net/taolusi/article/details/81304057

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2020-2024 zhanglonglong
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信