抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

[TOC]

用户分级管理

初步设想:

image-20210910114926555

root 用户为超级管理员,

管理员-A 拥有管理权限,负责维护.

普通群组无超级管理员权限, 但拥有对docker镜像容器的创建修改删减启动等权限.

普通用户从dockerhub中拉取镜像,创建容器环境

步骤

安装Docker

查看版本

$ cat /proc/version
$ uname -a
$ lsb_release -a
$ cat /etc/issue

对症下药

ubuntu

参考文档 https://docs.docker.com/engine/install/ubuntu/

使用远程仓库安装

Install using the repository

Before you install Docker Engine for the first time on a new host machine, you need to set up the Docker repository. Afterward, you can install and update Docker from the repository.

  1. Update the apt package index and install packages to allow apt to use a repository over HTTPS

    $ sudo apt-get update
    # 必要软件
    $ sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
    
  2. Add Docker’s official GPG key:

    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  3. Use the following command to set up the stable repository. To add the nightly or test repository, add the word nightly or test (or both) after the word stable in the commands below. Learn about nightly and test channels.

    Note: The lsb_release -cs sub-command below returns the name of your Ubuntu distribution, such as xenial. Sometimes, in a distribution like Linux Mint, you might need to change $(lsb_release -cs) to your parent Ubuntu distribution. For example, if you are using Linux Mint Tessa, you could use bionic. Docker does not offer any guarantees on untested and unsupported Ubuntu distributions.

    $ echo \
      "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    $  echo \
      "deb [arch=armhf signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    $  echo \
      "deb [arch=arm64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    $ echo \
      "deb [arch=s390x signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Install Docker Engine

  1. Update the apt package index, and install the latest version of Docker Engine and containerd, or go to the next step to install a specific version:

    $ sudo apt-get update
    $ sudo apt-get install docker-ce docker-ce-cli containerd.io

    Got multiple Docker repositories?

    If you have multiple Docker repositories enabled, installing or updating without specifying a version in the apt-get install or apt-get update command always installs the highest possible version, which may not be appropriate for your stability needs.

Upgrade Docker Engine

To upgrade Docker Engine, first run sudo apt-get update, then follow the installation instructions, choosing the new version you want to install.

添加测试用户

$ sudo adduser test1
Adding user `test1' ...
Adding new group `test1' (1001) ...
Adding new user `test1' (1001) with group `test1' ...
Creating home directory `/home/test1' ...
Copying files from `/etc/skel' ...
New password: 
Retype new password: 
passwd: password updated successfully
Changing the user information for test1
Enter the new value, or press ENTER for the default
	Full Name []: 
	Room Number []: 
	Work Phone []: 
	Home Phone []: 
	Other []: 
Is the information correct? [Y/n] y

$ sudo adduser test2
Adding user `test2' ...
Adding new group `test2' (1002) ...
Adding new user `test2' (1002) with group `test2' ...
Creating home directory `/home/test2' ...
Copying files from `/etc/skel' ...
New password: 
Retype new password: 
passwd: password updated successfully
Changing the user information for test2
Enter the new value, or press ENTER for the default
	Full Name []: 
	Room Number []: 
	Work Phone []: 
	Home Phone []: 
	Other []: 
Is the information correct? [Y/n] y
siz@ubuntu:/etc/apt$ 

查看test1,test2 用户

$ id test1
# uid=1001(test1) gid=1001(test1) groups=1001(test1)
$ id test2
# uid=1002(test2) gid=1002(test2) groups=1002(test2)
# 可以发现 test1 test2 没有sudo 等权限,为 普通用户

授予docker权限

将test1,test2 普通用户 添加到docker组中

$ sudo usermod -aG docker test1
$ sudo usermod -aG docker test2

重新登陆ssh 或者 log out 在登陆后, 查看 用户标识

$ id test1
# uid=1001(test1) gid=1001(test1) groups=1001(test1),,998(docker)
# 可以发现多了docker的 组标识
# 此时运行docker info 测试
$ docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.6.1-docker)
  scan: Docker Scan (Docker Inc., v0.8.0)

image-20210916153752143

拉取 docker images

测试test1拉去docker镜像

$ docker pull sizaif2000/ubuntu2004v1:1.0

image-20210916153827220

image-20210916153920876

ubuntu:20.04 V1

使用清华源

已安装基本工具:

VIM - Vi IMproved 8.1 (2018 May 18, compiled Apr 15 2020 06:40:31)

cmake version 3.16.3

gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)

g++ (4:9.3.0-1ubuntu2).

wget,git,autoconf,automake,build-essential

Python 3.8.10 (default, Jun 2 2021, 10:49:15)

pip3 pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)

ubuntu:20.04 V2

使用清华源

已安装基本工具:

VIM - Vi IMproved 8.1 (2018 May 18, compiled Apr 15 2020 06:40:31)

cmake version 3.16.3

gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)

g++ (4:9.3.0-1ubuntu2).

wget,git,autoconf,automake,build-essential

Python 3.8.10 (default, Jun 2 2021, 10:49:15)

pip3 pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)

==java-jdk1.8.0_291==

参考知识

添加/移除 sudo 权限

给某个用户添加 sudo 权限

$ sudo adduser XXXX sudo

移除某个用户sudo权限

$ sudo deluser xxxx sudo

==注意!!!== 移除sudo时, 管理用不要把唯一的管理员的sudo权限移除掉, 否则需要 root 用户重新添加

ubuntu用户组

用户和用户标识号

用户

我们登录到Linux系统,使用的登录名和密码实际上就是用户的信息标识。用户拥有账号、登录名、真实姓名、密码、主目录、默认shell等属性。每个用户实际上代表了一组权限,而这些权限分别表示可以执行不同的操作,是能够获取系统资源的权限的集合。

用户标识号

Linux实际上并不直接认识用户的账号,而是查看用户标识号。

用户标识号(整数):

0: root,超级用户。

1-499:系统用户,保证系统服务正常运行,一般不使用。

500-60000:普通用户,可登录系统,拥有一定的权限。管理员添加的用户在此范围内。

用户名和标识号不一定一一对应,Linux允许几个登录名对应同一个用户标识号。

系统内部管理进程和文件访问权限时使用用户标识号。

账号和标识号的对应关系在/etc/passwd文件中。

/etc/passwd文件

该文件所有者和所属组为root,除了root用户外只有读取的权限。

在这里插入图片描述

格式:登录名:口令:用户标识号:组标识号:注释:用户主目录:Shell程序

登录名:同意系统中唯一,大小敏感。

口令:密码,root和用户可使用passwd命令修改。
用户标识号:唯一。
组标识号:每个用户可以同时属于多个组。
注释:相关信息,真实姓名、联系电话等。mail和finger等会使用这些信息。
用户主目录:用户登录后的默认工作目录。root为/root,一般用户在/home下。
Shell程序:登录后默认启动的Shell程序。

/etc/shadow文件

包含用户的密码和过期时间,只有root组可读写。

在这里插入图片描述

格式:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:密码禁用期:账户失效时间:保留字段

登录名:略。

加密口令:*表示账户被锁定,!表示密码被锁定。其他的前三位表示加密方式。

最后一次修改时间:最近修改密码的时间,天为单位,1970年1月1日算起。

最小时间间隔:最小修改密码的时间间隔。

最大时间间隔:最长密码有效期,到期要求修改密码。

警告时间:密码过期后多久发出警告。

密码禁用期:密码过期后仍然接受的最长期限。

账号失效时间:账户的有效期,1970年1月1日算起,空串表示永不过期。

保留字段:保留将来使用。

用户组和组标识号

用户组

用户组指,一组权限和功能相类似的用户的集合。

Linux本身预定义了许多用户组,包括root、daemon、bin、sys等,用户可根据需要自行添加用户组。

用户组拥有组名、组标识号、组成员等属性。

用户组编号

Linux内部通过组标识号来标识用户组。

用户组信息保存在 /etc/group 中。

/etc/group文件

在这里插入图片描述

格式:组名:口令:组标识符:成员列表

/etc/passwd文件指定的用户组在/etc/group中不存在则无法登录。

用户管理

添加用户

useradd命令

$ useradd [option] 登录名
# option参数自行查阅。
# 一般加-m创建目录。

adduser命令

$ adduser [option] user

如果没有指定–system和–group选项,则创建普通用户。

否则创建系统用户或用户组。

修改用户信息:usermod

$ usermod [option] 用户名
# 具体选项信息自行查阅。

删除用户:userdel

$ userdel [option] 用户名
# -f:强制删除(谨慎使用)
# -r:主目录中的文件一并删除。

修改用户密码:passwd

$ passwd [option] 登录名

显示用户信息

$ id [option] [用户]

用户间切换:su命令

$ su [option] [用户名]
# 用户名为 - ,则切换到root用户。

受限的特权:sudo命令

sudo使得用户可以在自己的环境下,执行需要root权限的命令。

该信息保存在/etc/sudoers中。

用户组管理

添加用户组
addgroup命令
类似adduser

groupadd
类似useradd

修改用户组
类似usermod,使用groupmod。

删除用户组
类似userdel,使用groupdel。

权限管理

权限组
一般创建文件的人为所有者,其所属的主组为所属组,其他用户为其他组。

基本权限类型

三种:读、写、执行。

权限及其表示值:

读:r或4

写:w或2

执行:x或1

特殊权限
setuid、setgid和黏滞位。

setuid和setgid能以文件所有者或所属组的身份运行。

黏滞位使得只有文件的所有者才可以重命名和删除文件。

访问控制列表
访问控制表ACL可以针对某个用户或者用户组单独设置访问权限。

改变文件所有者chown命令

$ chown [option]...[owner][:[group]] file...

改变文件所属组chgrp命令

用户不受文件的文件主或超级用户不能修改组。

设置权限掩码umask命令

文件的权限为666-掩码

目录的权限为777-掩码

修改文件访问权限

$ chmod [option]...mode[,mode]...file...

“+”:增加权限

“-”:减少权限

“=”:设置权限

修改文件ACL:setfacl命令

$ setfacl [option] file...

查询文件的ACL

$ getfacl [文件名]

评论吧



本站总访问量为 访客数为

鲁 ICP 备 20018157 号-1
Copyright 2021 - 2022 sizaif. All Rights Reserved