Linux 用户管理

2023-11-09

一、useradd命令--创建普通用户的

语法

-c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中;

-d<登入目录>:指定用户登入时的启始目录;

-D:变更预设值;

-e<有效期限>:指定帐号的有效期限;

-f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;

-g<群组>:指定用户所属的群组;

-G<群组>:指定用户所属的附加群组;

-m:自动建立用户的登入目录;

-M:不要自动建立用户的登入目录;

-n:取消建立以用户名称为名的群组;

-r:建立系统帐号;

-s<shell>:指定用户登入后所使用的shell;

-u<uid>:指定用户id。

    1.创建一个普通用户(什么参数都不加)

[root@seven01 ~]# useradd ljs123

    2.在哪里可以看到你创建的ljs123?

[root@seven01 ~]#  cd /home
[root@seven01 home]# ll
总用量 8
drwx------.  3 ljs123 ljs123 4096 12月  6 19:59 ljs123
drwx------. 16 tom    tom    4096 11月  3 23:51 tom
[root@seven01 home]# ls
ljs123  tom

    3.通过grep(过滤)命令可以将你创建用户的信息过滤出来

[root@seven01 home]# grep -w ljs123 /etc/passwd

    4.查看一下密码相关的文件shadow(默认是没有设置密码的)

[root@seven01 home]# grep -w ljs123 /etc/shadow

二、用户且指定uid和属组

        1.创建一个用户组为xxx,组id 为1234

[root@seven01 home]# groupadd -g 1234 tmd

        2.查看一下你创建的工作组:

[root@seven01 home]# tail -5 /etc/group
tcpdump:x:72:
tom:x:1000:tom
mysql:x:27:
ljs123:x:1001:
tmd:x:1234:

用户名:密码占位符:uid:gid:注释:家目录:使用的shell

        3.创建用户组

 创建一个名为  ruanjian212工作组 指定id为801

[root@seven01 home]# groupadd -g 801 ruanjian212

        4.创建新用户

 创建一个新的用户hhh并指定组为ruanjian212

[root@seven01 home]# useradd -g ruanjian212 -u 888 hhh

 

        5.检查用户信息

[root@seven01 home]# id hhh
uid=888(hhh) gid=801(ruanjian212) 组=801(ruanjian212)

                #创建用户禁止登陆,且不创建家目录

[root@seven01 home]# useradd -M -s  /sbin/nologin qwe
[root@seven01 home]#  tail -5 /etc/passwd
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
mysq:x:987:27::/home/mysq:/bin/bash
ljs123:x:1001:1001::/home/ljs123:/bin/bash
hhh:x:888:801::/home/hhh:/bin/bash
qwe:x:1002:1002::/home/qwe:/sbin/nologin
[root@seven01 home]# ls
hhh  ljs123  tom

                /sbin/nologin不可登录

                /bin/bash可登录

三、groupdel:删除用户组

                删除软件212组:

[root@seven01 home]# groupadd ruanjian
[root@seven01 home]# groupdel ruanjian

语法

选项

-f:强制删除用户,即使用户当前已登录;

-r:删除用户的同时,删除与用户相关的所有文件

        1.普通的删除用户

                 ls查询目录的时候发现hhh目录内无任何数据

[root@seven01 home]# userdel hhh
[root@seven01 home]#  ls
hhh  ljs123  tom
[root@seven01 home]# ls hhh/

                这个时候你会发现这个hhh依然存在,这只是普通的将用户删除

                linux系统会依然为你保留一个家目录(当然只剩下目录了)

        2.使用参数强制性删除:(一般来说这个命令会在你即将离职的时候使用)

 

四、userdel:删除普通用户

语法

passwd(选项)(参数)

选项

-d:删除密码,仅有系统管理者才能使用;

-f:强制执行;

-k:设置只有在密码过期失效后,方能更新;

-l:锁住密码;

-s:列出密码的相关信息,仅有系统管理者才能使用;

-u:解开已上锁的帐号。

-i:密码过期多少天后禁用账户

-x:设置x天后可以修改密码

-n:设置n天内不得改密码

-e:密码立即过期,强制用户修改密码

-w:用户在密码过期前收到警告信息的天数

        1.修改当前用户密码

        使用此用户可能会报以下错误:
        1、无效的密码: 码未通过字典检查 - 它基于字典单词
        2、无效的密码: 密码少于 8 个字符
        3、无效的密码: 密码包含用户名在某些地方
        4、无效的密码: 与旧密码过于相似

[root@seven01 home]# passwd
更改用户 root 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 它基于字典单词
重新输入新的 密码:

 

        2.修改普通用户密码 passwd 用户名

                主要是我不想改

                无效的密码: 原因同上

 

[root@seven01 home]# passwd tom

        3.  列出用户密码信息

[root@seven01 home]# passwd -S tom
tom PS 2022-11-03 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)

        4.一条命令设置密码,企业常用(写到你的任务清单当中

                 echo是输出命令 这句命令的意思就是 从管道左边读取密码 付给tom用户

[root@seven01 home]# echo "123" | passwd --stdin tom
更改用户 tom 的密码 。
passwd:所有的身份验证令牌已经成功更新。

        5.passwd实际场景(写到你的任务清单当中)

                 设置tom用户7天不能修改密码,60天后可以修改密码,用户在密码过期前10天收到警告信息密码过期30天后禁用账户

[root@seven01 home]# passwd -n 7 -x 60 -w 10 -i 30 tom
调整用户密码老化数据tom。
passwd: 操作成功

、su命令

su命令用于切换到指定用户

语法

su(选项)(参数)

选项

-c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份;

-f或——fast:适用于csh与tsch,使shell不用去读取启动文件;

-l或——login:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量;

-m,-p或--preserve-environment:变更身份时,不要变更环境变量;

-s<shell>或--shell=<shell>:指定要执行的shell;

--help:显示帮助;

--version;显示版本信息。

        1.第一种切换

                直接切换用户--这种方式不规范   用户的环境变量没有切换过来

                查询环境变量 发现是root的环境变量

[root@seven01 home]# su tom
[tom@seven01 home]$ env|egrep "USER|MAIL|PWD|LOGNAME"
USER=tom
MAIL=/var/spool/mail/root
PWD=/home
LOGNAME=tom

        2.第二种切换

                root 用户切换到普通用户不用输入密码

[root@seven01 home]# su tom

        3.普通用户切换其他用户,需要输入用户密码

 

[tom@seven01 ~]$ su - root
密码:

六、visudo命令

visudo用于编辑/etc/sudoers文件,且提供语法检测,用于配置sudo命令

sudo命令就相当于是尚方宝剑,你现在是一个普通的小官,皇上让你拿尚方宝剑惩恶扬善,所以说我现在得帮你把尚方宝剑放到你身上

语法

sudo(选项)(参数)

选项
-b:在后台执行指令;
-h:显示帮助;
-H:将HOME环境变量设为新身份的HOME环境变量;
-k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。
-l:列出目前用户可执行与无法执行的指令;
-p:改变询问密码的提示符号;
-s<shell>:执行指定的shell;
-u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;
-v:延长密码有效期限5分钟;
-V :显示版本信息。

sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。普通用户不需要root密码即可用root权限执行命令。

        1.切换到tom用户

[root@seven01 home]# su - tom
上一次登录:二 12月  6 20:52:24 CST 2022pts/1 上
[tom@seven01 ~]$ ls /root
ls: 无法打开目录/root: 权限不够

        2.利用sudo来访问 ls /root

                由于刚刚把密码改了所以输错了一次

[tom@seven01 ~]$ sudo ls /root
[sudo] tom 的密码:
对不起,请重试。
[sudo] tom 的密码:
anaconda-ks.cfg  hello.java            ljs1  mysql57-community-release-el7-10.noarch.rpm  公共  视频  文档  音乐
hello.class      initial-setup-ks.cfg  ljs2  mysql80-community-release-el7-3.noarch.rpm   模板  图片  下载  桌面

        3.切换到root用户

                (多吊啊)

                 不用输入密码直接切换到root用户

[tom@seven01 ~]$ sudo su - 
上一次登录:二 12月  6 20:53:55 CST 2022pts/1 上
[root@seven01 ~]# 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 用户管理 的相关文章

  • ioctl 命令的用户权限检查

    我正在实现 char 驱动程序 Linux 并且我的驱动程序中有某些 IOCTL 命令仅需要由 ADMIN 执行 我的问题是如何在 ioctl 命令实现下检查用户权限并限制非特权用户访问 IOCTL 您可以使用bool capable in
  • Linux 中 m 标志和 o 标志将存储在哪里

    我想知道最近收到的路由器通告的 m 标志和 o 标志的值 从内核源代码中我知道存储了 m 标志和 o 标志 Remember the managed otherconf flags from most recently received R
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • linux下无法创建僵尸进程

    嗯 我有一个奇怪的问题 我无法在我的项目中创建僵尸进程 但我可以在其他文件中创建僵尸进程 有简单的说明 int main if fork 0 printf Some instructions n else sleep 10 wait 0 r
  • docker 非 root 绑定安装权限,WITH --userns-remap

    all 尝试让绑定安装权限正常工作 我的目标是在容器中绑定安装卷 以便 a 容器不以 root 用户身份运行入口点 二 docker daemon 配置了 userns remap 这样容器 主机上没有 root c 我可以绑定挂载和读 写
  • 在centos中安装sqlite3 dev和其他包

    我正在尝试使用 cpanel 在 centos 机器上安装 sqlite dev 和其他库 以便能够编译应用程序 我对 debian 比 centos 更熟悉 我知道我需要的库是 libsqlite3 dev libkrb5 dev lib
  • linux-x64 二进制文件无法在 linuxmusl-x64 平台上使用错误

    我正在安装Sharp用于使用 package json 的 Nodejs 项目的 docker 映像上的映像压缩包 当我创建容器时 我收到有关 Sharp 包的以下错误 app node modules sharp lib libvips
  • 如何阻止ubuntu在使用apt安装或更新软件包时弹出“Daemons using outdatedlibraries”? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我最近新安装了 Ubuntu 22 04 LTS 我发现每次使用 apt 安装或更新软件包时 它都会询问我有关Which servic
  • GMail 421 4.7.0 稍后重试,关闭连接

    我试图找出为什么它无法使用 GMail 从我的服务器发送邮件 为此 我使用 SwiftMailer 但我可以将问题包含在以下独立代码中
  • 尽管 if 语句,Visual Studio 仍尝试包含 Linux 标头

    我正在尝试创建一个强大的头文件 无需更改即可在 Windows 和 Linux 上进行编译 为此 我的包含内容中有一个 if 语句 如下所示 if defined WINDOWS include
  • 如何获取 (Linux) 机器的 IP 地址?

    这个问题和之前问的几乎一样如何获取本地计算机的IP地址 https stackoverflow com questions 122208 get the ip address of local computer 问题 但是我需要找到一个的I
  • 并行运行 shell 脚本

    我有一个 shell 脚本 打乱大型文本文件 600 万行和 6 列 根据第一列对文件进行排序 输出 1000 个文件 所以伪代码看起来像这样 file1 sh bin bash for i in seq 1 1000 do Generat
  • CMake 链接 glfw3 lib 错误

    我正在使用 CLion 并且正在使用 glfw3 库编写一个程序 http www glfw org docs latest http www glfw org docs latest 我安装并正确执行了库中的所有操作 我有 a 和 h 文
  • 使用 MAX_ORDER / 包含 mmzone.h

    根据https www kernel org doc Documentation networking packet mmap txt https www kernel org doc Documentation networking pa
  • 在 Mono 上运行 .Net MVC5 应用程序

    我正在 Windows 上的 Visual Studio 2013 中开发 Net 4 5 1 MVC5 应用程序 现在我想知道 是否可以在Linux Ubuntu 12 04 上运行这个应用程序 可以使用OWIN吗 Owin 可以自托管运
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t
  • 绕过 dev/urandom|random 进行测试

    我想编写一个功能测试用例 用已知的随机数值来测试程序 我已经在单元测试期间用模拟对其进行了测试 但我也希望用于功能测试 当然不是全部 最简单的方法是什么 dev urandom仅覆盖一个进程 有没有办法做类似的事情chroot对于单个文件并
  • Apache 访问 Linux 中的 NTFS 链接文件夹

    在 Debian jessie 中使用 Apache2 PHP 当我想在 Apache 的文档文件夹 var www 中创建一个新的小节时 我只需创建一个指向我的 php 文件所在的外部文件夹的链接 然后只需更改该文件夹的所有者和权限文件夹
  • 我什么时候应该编写 Linux 内核模块?

    有些人出于某种原因想要将 Linux 中的代码从用户空间移动到内核空间 很多时候 原因似乎是代码应该具有特别高的优先级 或者只是 内核空间更快 这对我来说似乎很奇怪 我什么时候应该考虑编写内核模块 有一套标准吗 我怎样才能激励将代码保存在

随机推荐

  • 【数据挖掘】知识点总结

    一 绪论 什么是数据挖掘 就是通过算法从大量的数据中搜索隐藏在其中的信息 数据挖掘的基本任务 聚类分析 异常检测 关联分析和预测建模 高维性和维灾难 随着维度的增加计算复杂度也随之增加 二 数据 不同的属性类型 标称 例如 邮政编码 定性数
  • 大数据应用——Linux常用的命令

    帮助命令 1 基本语法 help 命令 功能描述 获得shell内置命令的帮助信息 2 案例实操 1 查看cd命令的帮助信息 root hadoop01 help cd 常用快捷键 常用快捷键 功能 ctrl c 停止进程 ctrl l 清
  • Python(十五)读取Excel

    今天来实战演示如何封装读取Excel方法 第一步 准备一个Excel文件 sheet页命名为 login 学习技术交流群 704807680 第二步 编写代码找到Excel文件所在的文件夹路径 path os path dirname os
  • 机器学习算法——混淆矩阵(Confusion Matrix)之鸢尾花实例

    一 理论 什么是混淆矩阵 其实就是把所有类别的预测结果与真实结果按类别放置到了同一个表里 在这个表里我们可以清楚地看到每个类别正确识别的数量和错误识别的数量 混淆矩阵在什么情况下最好呢 答案是类别不平衡时 混淆矩阵是除了ROC曲线和AUC之
  • chatGPT高考作文

    百花齐放 春满人间 吹灭别人的灯 并不会让自己更加光明 阻挡别人的路 也不会让自己行得更远 这是一句古老而智慧的话语 告诉我们要尊重和包容他人 要与人和睦相处 要共同进步 同样的道理 也适用于文化的交流和发展 文化是一个民族的灵魂 是一个国
  • 华为OD机试真题-不爱施肥的小布

    题目描述 某农场主管理了一大片果园 fields i 表示不同果林的面积 单位 m 2 现在要为所有的果林施肥且必须在n天之内完成 否则影响收成 小布是果林的工作人员 他每次选择一片果林进行施肥 且一片果林施肥完后当天不再进行施肥作业 假设
  • C++复合类型

    1 数组 数组声明应该指出元素类型 数组名和元素个数 数组的初始化需要遵循以下规则 a 只有定义数组时才能使用初始化 此后就不能使用了 也不能将一个数组赋给另一个数组 int narray1 4 1 2 3 4 int narray2 4
  • 操作系统 实验二 银行家算法

    题目描述 已知进程 P0 P1 P2 P3 P4 有三类系统资源A B C的数量分别为10 5 7 在T0时刻的资源分配情况如下图所示 1 若进程P1请求资源 发出请求向量Request1 1 0 2 编写程序用银行家算法判断系统能否将资源
  • 【javascript-基础小练习】角度转弧度,已知角度90,转成弧度?

    角转弧度的公式为 jiao 180 pai hu 假设pai的值为 3 14
  • 数据库的事务及变量声明方法

    事务 简单来说事务就是为了保持数据一致性的一种手段 在事务中的sql语句作为一个整体一起向系统提交 要么都执行 要么都不执行 可以回滚到原来的状态 事务的语法 开始事务 begin tran 或者transaction 提交事务 commi
  • Spring为什么不推荐你使用@Autowired ?

    Spring为什么不推荐你使用 Autowired 我们总能发现当使用IDEA写代码的时候 Autowired注解会报黄 我们把鼠标悬停在上面 可以看到这个如下图所示的警告信息 当我们按住alt 回车键 idea就会帮我们修改成这样 我向来
  • 微服务架构

    3 注册中心与服务发现 前言 1 服务发现基础知识 1 1 注册中心与服务发现的联系 1 2 使用 DNS 与负载均衡器发现服务的弊端 1 3 云中的服务发现应该具备的特点 1 4 服务发现架构 1 5 服务治理的概念 1 6 服务注册的概
  • Linux服务器(centos7)中Word转换PDF,文档出现中文乱码或方格【亲测可用,已解决】

    提示 在centos服务器使用aspose word转换word文件为pdf的时候只有中文乱码或则方格 但是在win服务器上使用可以正常转换 本次文章主要解决字体缺失问题 目录 前言 一 在linux服务器上生成的pdf都是这种格式的 二
  • 信号和槽函数的扩展

    信号和槽函数的扩展 一个信号连接多个槽函数 一个槽函数连接多个信号 信号连接信号 一个信号可以连接多个槽函数 发送一个信号有多个处理动作 需要写多个connect 连接 槽函数的执行顺序和信号的发射顺序相同 QT5中 信号的接收者可以是一个
  • C++primer总结

    目录 第一章 数据处理 2 整形 2 第二章 复合类型 3 数组 3 字符串 4 枚举 5 指针 5 第三章 函数的使用 6 内联函数 6 默认参数 6 函数的重载 7 函数的模板 7 第四章 内存模型和名称空间 7 文件的单独存放 7 变
  • Transaction rolled back because it has been marked as rollback-only

    http hsyd iteye com blog 586772 错误信息 Transaction rolled back because it has been marked as rollback only 原因 事务提交多次 检查代码
  • 小程序无法获取头像和昵称(已解决)

    从基础库 2 21 2 开始支持 当小程序需要让用户完善个人资料时 可以通过微信提供的头像昵称填写能力快速完善 根据相关法律法规 为确保信息安全 由用户上传的图片 昵称等信息微信侧将进行安全检测 组件从基础库2 24 4版本起 已接入内容安
  • Python+Selenium+phantomjs实现网页模拟登录和截图

    Python Selenium phantomjs实现网页模拟登录和截图 本文全部操作均在windows环境下 安装 Python Python是一种跨平台的计算机程序设计语言 它可以运行在Windows Mac和各种Linux Unix系
  • C++ Primer 学习笔记 第十章 泛型算法

    标准库容器很小 并未给每个容器添加大量功能 而是提供了一组算法 这些算法大多数都独立于任何特定的容器 这些算法是通用的 或者说是泛型的 generic 可用于不同类型容器和元素 大多数泛型算法定义在头文件algorithm中 头文件numb
  • Linux 用户管理

    一 useradd命令 创建普通用户的 语法 c lt 备注 gt 加上备注文字 备注文字会保存在passwd的备注栏位中 d lt 登入目录 gt 指定用户登入时的启始目录 D 变更预设值 e lt 有效期限 gt 指定帐号的有效期限 f