Ubuntu 用户管理/权限管理

小小记录一下 Ubuntu 下用户/权限管理常用的一些命令

  • 用户管理
  • 组管理
  • 文件权限
  • 给用户添加 sudo 权限
  • 给用户添加 sudo 权限

首先先给出几个文件

  • /etc/passwd:是用于保存用户信息的文件
  • /etc/shadow:保存了用于的密码信息
  • /etc/group:保存了组信息

用户管理

提示:创建用户/删除用户/修改其他用户密码 的终端命令都需要通过sudo / 使用 root账户 执行

创建用户/设置密码/删除用户

命令 作用 说明
useradd -m -g 组名 -u ID号 -s /bin/bash 用户名 添加新用户 -m:自动建立用户家目录;
-g:指定用户所在的组,无则为用户名组
-u:指定用户ID号,ID值时尽量要大于500
-s:指定用户登入后所使用的shell
passwd 用户名 设置用户密码 如果是普通用户,直接用 passwd 可以修改自己的账户密码
userdel -r 用户名 删除用户 -r 选项会自动删除用户家目录
cat /etc/passwd | grep 用户名 确认用户信息 新建用户后,用户信息会保存在/etc/passwd文件中

进一步说明

  • 创建用户时,如果忘记添加-m选项指定新用户的家目录——最简单的方法就是删除用户,重新创建

  • 创建用户时,若不指定组名则默认会创建一个和用户名同名的组名

  • 用户信息保存在 /etc/passwd 文件中,可通过 cat /etc/passwd查看,里面存放的用户信息,由 6 个:组成的 7 个信息,分别是:

    用户名 : 密码(x,表示加密的密码) : UID(用户标识) : GID(组标识) : 用户全名或本地帐号家目录 : 登录使用的 Shell,就是登录之后,使用的终端命令,ubuntu 默认是 bash

例如:创建一个名为 xianyuchao 的账户,如下

  1. # 1.创建账户
  2. (base) root@ubuntu-C246-WU4:~# useradd -m -u 1314 -s /bin/bash zhangsan
  3. # 2.查看账户
  4. (base) root@ubuntu-C246-WU4:~# cat /etc/passwd | grep zhangsan
  5. # 用户名:密码:UID:GID:家目录:/bin/bash
  6. zhangsan:x:1314:1314::/home/zhangsan:/bin/bash
  7. # 3.给账户设置密码
  8. (base) root@ubuntu-C246-WU4:~# passwd zhangsan
  9. 输入新的 UNIX 密码:
  10. 重新输入新的 UNIX 密码:
  11. passwd:已成功更新密码
  12. # 4.切换用户
  13. (base) root@ubuntu-C246-WU4:~# su zhangsan
  14. zhangsan@ubuntu-C246-WU4:/root$ cd ~
  15. zhangsan@ubuntu-C246-WU4:~$ ls
  16. # 5.删除用户
  17. zhangsan@ubuntu-C246-WU4:~$ exit
  18. exit
  19. (base) root@ubuntu-C246-WU4:~# userdel -r zhangsan

查看用户信息

命令 作用
id [用户名] 查看用户UID和GID信息
who 查看当前所有登录的用户列表
whoami 查看当前登录用户的账户名

切换用户

命令 作用 说明
su - 用户名 切换用户,并且切换目录 -可以切换到用户家目录,否则保持位置不变
exit 退出当前登录账户
sudo 以超级用户方式执行命令 在root下通过设置visudo设置需要使用sudo的用户
  • su不接用户名,可以切换到root,但是不推荐使用,因为不安全
  • exit 登陆逐级登陆,退出逐级退出
  • sudo,可临时赋予用户root的部分功能,具体的赋予的哪些操作需要通过root在visudo内进行相应的配置

修改用户所属组

  • usermod可以用来设置用户主组/附加组登录 Shell,命令格式如下:

    • 主组:通常在新建用户时指定,在etc/passwd的第4列GID对应的组
    • 附加组:在etc/group中最后一列表示该组的用户列表,用于指定用户的附加权限

注:设置了用户的附加组之后,需要重新登录才能生效!

  1. # 修改用户的主组(passwd 中的 GID)
  2. usermod -g 用户名
  3. # 修改用户的附加组(group文件中的最后一列)
  4. usermod -G 用户名
  5. # 修改用户登录Shell
  6. usermod -s /bin/bash 用户名

例:

  1. # 首先还是创建zhangsan用户
  2. (base) root@ubuntu-C246-WU4:~# useradd -m -u 1314 -s /bin/bash zhangsan
  3. # 由于 -m 因此zhangsan 账户的组为zhangsan且没有默认组、
  4. (base) root@ubuntu-C246-WU4:~# cat /etc/passwd | grep zhangsan
  5. zhangsan:x:1314:1314::/home/zhangsan:/bin/bash
  6. (base) root@ubuntu-C246-WU4:~# cat /etc/group | grep zhangsan
  7. zhangsan:x:1314: # 此时没有附属组
  8. # 修改zhangsan的组为 zcc 组
  9. (base) root@ubuntu-C246-WU4:~# cat /etc/passwd | grep zcc
  10. zcc:x:6666:6666::/home/zcc:/bin/bash # zcc的GID为6666
  11. (base) root@ubuntu-C246-WU4:~# usermod -g zcc zhangsan
  12. (base) root@ubuntu-C246-WU4:~# cat /etc/passwd | grep zhangsan
  13. zhangsan:x:1314:6666::/home/zhangsan:/bin/bash # 修改后zhangsan的组也变成了6666
  14. # 修改zhangsan的附加组
  15. (base) root@ubuntu-C246-WU4:~# usermod -G zhangsan zhangsan
  16. (base) root@ubuntu-C246-WU4:~# cat /etc/group | grep zhangsan
  17. zhangsan:x:1314:zhangsan # 对比上方,此时有附属组了,为zhangsan

组管理

提示:创建组/删除组的终端命令都需要通过sudo执行

命令 作用
groupadd 组名 添加组
groupdel 组名 删除组
cat /etc/group 确认组信息
chgrp -R 组名 文件/目录名 递归修改文件/目录的所属组

提示:

  • 组信息保存在/etc/group文件中
  • /etc目录是专门用来保存系统配置信息的目录
  • 在实际应用中,可以预先针对设置好权限,然后将不同的用户添加到对应的组中,从而不用依次为每一个用户设置权限

文件权限

文件权限说明

ls -l可以查看文件夹下文件的详细信息,从左到右依次是:

  1. d rwxr-xr-x. 21 root root 4.0k 12 21 2222 var
  2. 类型 权限 硬链接数 所属用于 所属用户组 大小 时间 名称
  • 类型:-普通文件;d目录文件;b块特殊文件;l符号链接;f命名管道;s套接字文件;
  • 权限:分别为u=拥有者权限,g=组权限,o=其他用户权限
权限 缩写 数字代号
read r 4
write w 2
execute x 1

权限限制的是非root用户,对于root用户而言没用

除了上述的读写执行权限,还有一些特殊权限:SUID,SGID,SBIT,不建议修改

  • 硬链接数,通俗地讲,就是有多少种方式,可以访问到当前目录/文件

权限修改

序号 命令 作用
01 chown 修改拥有者
02 chgrp 修改组
03 chmod 修改权限
  • 命令格式如下:
  1. # 修改文件|目录的拥有者
  2. chown 用户名 文件名|目录名
  3. # 修改文件|目录的组
  4. chown :组名 文件名|目录名
  5. # 递归修改文件|目录的组
  6. chgrp -R 组名 文件名|目录名
  7. # 递归修改文件权限
  8. chmod -R 755 文件名|目录名
  9. # 对拥有者添加执行权限
  10. chmod u+x 文件名
  11. # 对组删除写权限
  12. chmod g-w 文件名
  13. # 令其他用户的权限为可读
  14. chmod o=r 文件名
  15. # 对所有成员都加上读取权限
  16. chmod a+r 文件名
  • chmod 在设置权限时,可以简单地使用三个数字分别对应u=拥有者/g=组/o=其他用户的权限
  1. chmod num1num2num3 文件名|目录名

当拥有者权限和组权限冲突时,已拥有者权限为准

给用户添加 sudo 权限

  1. 用root账户打开文件 /etc/sudoers

  2. 在如下添加你需要赋予sudo权限的用户

    1. # Allow members of group sudo to execute any command
    2. %sudo ALL=(ALL:ALL) ALL
    3. zcc ALL=(ALL:ALL) ALL
    4. zhangsan ALL=(ALL:ALL) ALL
  3. esc :wq!保存退出

参考:https://www.jianshu.com/p/3d435e09712a

允许 root 通过 ssh 登录

  1. 打开:sudo vim /etc/ssh/sshd_config
  2. 修改如下:PermitRootLogin yes

参考:https://www.cnblogs.com/exmyth/p/10403079.html

Ubuntu 用户管理/权限管理的更多相关文章

  1. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理

    这是本人第一次写,写的不好的地方还忘包含.写这个的主要原因是想通过这个来学习下EF的CodeFirst模式,本来也想用AngularJs来玩玩的,但是自己只会普通的绑定,对指令这些不是很熟悉,所以就基 ...

  2. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理10

    今天把用户的菜单显示和页面的按钮显示都做好了,下面先来个效果图 接下来说下我实现的方法: 首先我在每个方法前面都加了这个属性, /// <summary> /// 表示当前Action请求 ...

  3. MySQL用户与权限管理

    执行mysql select 查询报错: SELECT command denied to user 'root'@'localhost' for table "xxx" 问题原因 ...

  4. mysql用户和权限管理

    用户和权限管理 Information about account privileges is stored in the user, db, host, tables_priv, columns_p ...

  5. 【linux相识相知】用户及权限管理

    linux系统是多用户(Multi-users)和多任务(Multi-tasks)的,这样的目的是为了一台linux主机可以给很多用户提供服务同时运行多种服务,但是我们是怎么区分每个用户呢?作为一个管 ...

  6. linux用户及权限管理

    [文件管理.管道.用户及组管理.用户及权限管理]\用户及组管理 用户与组管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这 ...

  7. Mysql 用户,权限管理的几点理解。

    前两天项目数据库要移植到mysql,为此临时抓了几天很久没用的mysql. 公司的数据库比较简单,从oracle迁移到mysql很简单,但是,中间的权限管理让我感觉既简单又复杂..简单是因为网上关于m ...

  8. DQL用户、权限管理(mysql8.0)

    DQL用户.权限管理(mysql8.0) 查看所有的用户: use mysql; -- 使用mysql数据库 select * from user; -- 查询user表中的全部信息,也就是用户 创建 ...

  9. Jenkins2.32用户和权限管理策略

    前言 在使用jenkins的过程中,需要为不同的角色分配相应的权限,如果jenkins的用户数据能和公司现在的帐号系统结合起来那会更好. 关于如何为用户分组,我推荐使用 role based auth ...

随机推荐

  1. Junit5快速入门指南-4

    Junit5套件测试 @RunWith(JUnitPlatform.class) 执行套件 @SelectPackages({"packageA","packageB&q ...

  2. Windos下通过Wpcap抓包实现两个网卡桥接

    目录 1. 背景: 2. 需要的技术手段: 3. 实现逻辑: 4. 应用实例: 1. 背景: 一台电脑允许接多个网口,当然大部分只有一个网口其余都是USB扩展而来,而每个网口之间需要配置不同的网段IP ...

  3. Identity用户管理入门二(显示用户列表)

    在Controllers中新建AccountController,并在构造方法(函数)中注入SignInManager,UserManager UserManager   用户管理(注册,查找,修改, ...

  4. Spring Cloud Eureka 之开发笔记

    Eureka客户端 -- 接口 com.netflix.discovery public interface EurekaClient /*常用方法*/ // 获取某个应用 Application g ...

  5. STM32,下载HAL库写的代码后J-Link识别不到芯片,必须要按住复位才能下载?

    问题描述:最近在学STM32的HAL库,据说可以统一STM32江湖,前途无量.最近一段时间参照STM32CubeMX和原子的资料自己学着建了两个HAL库的工程模板,F4的还好说,F1的出现了一个玄学问 ...

  6. Jmeter扩展组件开发(2) - 扩展开发第一个demo的实现

    maven工程src目录介绍 main:写代码 main/java:写Java代码 main/resources:写配置文件 test:写测试代码 test/java demo实现 创建Package ...

  7. Docker系列(26)- 发布镜像到阿里云容器服务

    1.登录阿里云 2.找到容器镜像服务 3.创建命名空间 4.创建镜像仓库 5.上传镜像

  8. Android命令行启动模拟器

    我们在平时的开发中会经常需要使用模拟器进行调试,这个时候我们就要先打开Android Studio来启动模拟器,然后再运行App.这个流程中启动Android Studio需要花费一些时间,而模拟器的 ...

  9. 制作python程序windows安装包(飞机大战源码)

    本文以飞机大战源码为例: 1.首先使用pyinstaller -w xxx.py打包   -w的意思是不显示命令行:飞机大战源码由多个.py文件以及一些图片,音乐文件组成,我们将main.py打包, ...

  10. 鸿蒙内核源码分析(中断概念篇) | 海公公的日常工作 | 百篇博客分析OpenHarmony源码 | v43.02

    百篇博客系列篇.本篇为: v43.xx 鸿蒙内核源码分析(中断概念篇) | 海公公的日常工作 | 51.c.h .o 硬件架构相关篇为: v22.xx 鸿蒙内核源码分析(汇编基础篇) | CPU在哪里 ...