新拿到一台服务器后我们一般都是要新建用户组,用户,并为其分配权限。

====================================================

赋予用户组sudo权限:

首先,看一下如何为用户组分配sudo权限:

打开配置文件:

sudo   vim    /etc/sudoers

可以看到:

这个是最原始的配置文件。

假设系统里面有用户组名为  wisd  , 我们需要为该用户组下面的所有用户都赋予 sudo 权限,需要添加下面代码:

%wisd ALL=(ALL:ALL) ALL

如下图:

保存退出, 这样变把  wisd  用户组下面的所有用户都赋予了sudo权限。

===============================================================

下一步就是介绍新建用户及用户组(本文的介绍为倒叙,实际操作中是需要先建用户组和用户的)

首先看下  系统的用户配置文件:

sudo  vim    /etc/passwd

由图中可以看到系统用户  devil 用户id为1000,所属用户组为1000, home目录为 /home/devil   ,shell的执行为 /bin/bash

sshd  用户id 为122   用户组为65534

==============================================================

新建用户组:

新建用户组   xxxxx

sudo addgroup xxxxx

为用户组 xxxxx  新建用户  xxx

sudo useradd -d /home/xxx -s /bin/bash -m xxx

-d 指定用户的home目录为  /home/xxx

-s 指定用户的shell

-m  表示home目录即  /home/xxx  不存在则创建

xxx则是我们要创建的用户名。

可以看到 /home目录下面已经为用户xxx创建home目录。

可以  /home/xxx目录下需要的文件已经全部创建,如   .bashrc     .profile  等。

为用户 xxx 设置密码:

sudo passwd  xxx

将新建的用户 xxx   添加到用户组   xxxxx   中:

sudo usermod -a -G xxxxx  xxx

用户xxx                       用户组 xxxxx

参考文献:

http://www.ruanyifeng.com/blog/2014/03/server_setup.html

以上操作也可以在创建新用户时直接将其加入到已有的用户组中, -g 为设置其主组  该方法可以再创建用户时不创建同名的用户组,

-G  为设置新建用户的附属组,   -a  -G 设置用户的不唯一的附属组

sudo useradd -d /home/xxx2 -s /bin/bash -m xxx2 -g xxxxx

在创建新用户xxx2时指定其主组为xxxxx ,  不创建和用户同名的xxx2用户组。

============================================================================

新发现

采用以下方法,先建立用户组,再创建用户,再将用户加入到用户组:

sudo addgroup xxxxx

sudo useradd -d /home/xxx -s /bin/bash -m xxx

sudo usermod -a -G xxxxx  xxx

则会出现以下问题:

我们可以发现,其实我们先创建了用户组 xxxxx, id为1001,  然后我们创建用户xxx时并没有指定其所属的用户组于是自动创建了它的同名用户组xxx,  id为1002 。

我们可以查看用户的情况:

可以发现,用户xxx所属的主组为1002(xxx),  同时所属的附属组为1001(xxxxx) 。

我们可以将用户xxx的主用户组设置为xxxxx, 这时用户xxx的附属组为xxx组,于是我们可以删掉用户组xxx :

sudo usermod xxx -g xxxxx
sudo groupdel xxx

再次查看:

=======================================================================

以下内容来源:  https://www.cnblogs.com/654wangzai321/p/8021573.html

usermod -G groupname username (这种会把用户从其他组中去掉,只属于该组)
如:usermod -G git git (git只属于git组)

usermod -a -G groupname username (把用户添加到这个组,之前所属组不影响)
如:usermod -a -G www git (git属于之前git组,也属于www组)

=============================================引用结束

usermod   -G  是指定用户的附属组是哪个,  如果 只有  -G  那么就是唯一指定用户附属组,该种方式用户只具备唯一附属组。

usermod  -a -G  是只将用户组加入到附属组, 而不是将附属组设置为唯一,该种方式可以使用户具有多个附属组。

所以像上面提到的问题,我们还可以这么解决, 就是在将用户加入到用户组的时候这么操作:

sudo usermod  -G xxxxx  xxx    而不是   sudo usermod -a -G xxxxx  xxx   ,

这样的话直接将 xxxxx 设置为 xxx 的主用户组和附属用户组。

从上图可以看到,  usermod  -a   -G  的确可以将xxx用户的附属组添加mysql组。

从上图可以看到   usemod -G 将用户xxx的附属用户组唯一的设置为mysql 。

小技巧:

如上图:

如果想将用户的附属组清空,可以先采用  usemod -G 将用户的附属组设置为唯一, 而所指定的唯一附属组和主组是同一个的话,那么自动就将用户的附属组清空了。

=========================================================================

Linux服务器新建用户和组,并分配sudo权限 (Ubuntu系统)的更多相关文章

  1. 管理Linux服务器的用户和组

    管理Linux服务器的用户和组 Linux操作系统是一个多用户多任务的操作系统,允许多个用户同时登录到系统,使用系统资源. 为了使所有用户的工作顺利进行,保护每个用户的文件和进程,规范每个用户的权限, ...

  2. 管理Linux服务器的用户和组(续篇)

    用户切换 新建用户 useradd命令的选项 设置用户口令 passwd命令的选项 chage命令 修改用户帐户 禁用和恢复用户帐户 禁用和恢复用户帐户- Passwd命令 禁用和恢复用户帐户-直接修 ...

  3. linux新建用户并分配sudo权限

    新建用户 useradd [username] 给用户设置密码 passwd [username] 设置sudo权限 首先将sudoers权限设置可写入 chmod u+w /etc/sudoers ...

  4. Linux下的用户、组和权限

    目录 一:用户和组信息的查看 查看用户信息 查看密码信息 查看组信息 特殊组wheel 二:用户和组信息的管理 用户管理 组管理 三:文件权限 文件权限的查看 文件权限的修改 ACL控制权限 setf ...

  5. linux下创建用户及组

    linux下创建用户及组: 1.创建组 groupadd  组名 2.创建用户,并将用户添加到组 useradd  用户名  -g  组名 3.更改用户的密码 password  用户名 4.修改目录 ...

  6. Gitlab用户在组中有五种权限:Guest、Reporter、Developer、Master、Owner

    Gitlab权限管理Gitlab用户在组中有五种权限:Guest.Reporter.Developer.Master.Owner Guest:可以创建issue.发表评论,不能读写版本库Reporte ...

  7. Gitlab用户在组中有五种权限

    Gitlab用户在组中有五种权限:Guest.Reporter.Developer.Master.Owner Guest:可以创建issue.发表评论,不能读写版本库 Reporter:可以克隆代码, ...

  8. Linux 新建用户和组命令

    用户的角色是通过UID和GID识别的. UID用户ID:相当于各为的身份证,在系统中是唯一的 GID组ID:相当于各为的家庭或者你们的学校. 1.新建用户及设置密码命令如下: useradd [参数] ...

  9. linux概念之用户,组及权限

    Linux 是一个多用户.多任务的操作系统:我们应该了解单用户多任务和多用户多任务的概念 单用户多任务一个beinan用户,为了完成工作,执行了几个任务:当然beinan这个用户,其它的人还能以远程登 ...

随机推荐

  1. windows 系统使用 git 和码云管理代码(本地已有项目)

    1. 为本地项目创建本地仓 找到项目所在的根目录(目录下有解决方案那个),右击目录,点击右键菜单中的“Git Bash Here”(前提是你的电脑已经装了Git,我用的是TortoiseGit) 然后 ...

  2. python中RabbitMQ的使用(远程过程调用RPC)

    在RabbitMQ消息队列中,往往接收者.发送者不止是一个身份.例如接接收者收到消息并且需要返回给发送者. 此时接收者.发送者的身份不再固定! 我们来模拟该情形: 假设有客户端client,服务端se ...

  3. Hadoop--单点故障修复

    nameNode单点故障修复 1.启动虚拟机,启动集群  此时我们将主机hadoop1关机(断掉主机),开始抢救: 1.使用 秘书(secondaryNameNode),成功率不是100%  (这里我 ...

  4. vue-navigation 实现前进刷新,后退不刷新

    vue-navigation GitHub地址 导航默认行为类似手机APP的页面导航(A.B.C为页面): A前进到B,再前进到C: C返回到B时,B会从缓存中恢复: B再次前进到C,C会重新生成,不 ...

  5. python3- __slots__

    Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class实例能添加的属性: class Student(object): __slots__ = ('name' ...

  6. 摄像头录制视频并且保存成mp4

    import cv2import numpy as npimport os cap = cv2.VideoCapture(1)#v4l2-ctl --list-devices 查看设备号,非正常中断时 ...

  7. Ubuntu 16.04 中安装谷歌 Chrome 浏览器

    http://jingyan.baidu.com/article/335530da98061b19cb41c31d.html 根据教程安装成功!! http://askubuntu.com/quest ...

  8. day06 元组类型

    一.什么是元组? 元组就是一个不可变的列表 元组的基本使用: 1.用途:  用于存放多个值,当存放多个任意类型的值 2.定义方式:在()内用逗号分隔开多个任意类型的值 t=(1,3.1,'aaa',( ...

  9. [POJ2985]The k-th Largest Group

    Problem 刚开始,每个数一个块. 有两个操作:0 x y 合并x,y所在的块 1 x 查询第x大的块 Solution 用并查集合并时,把原来的大小删去,加上两个块的大小和. Notice 非旋 ...

  10. .net core 之Hangfire任务调度

    Hangfire可用作任务调度,类似延迟任务.队列任务.批量任务和定时任务等. 一.nuget Hangfire包 找到Hangfire.AspNetCore和Hangfire.SqlServer包, ...