6.13 3.7-3.9

3.7 su命令

su命令用于切换用户

[[email protected] ~]# whoami 查看当前用户

root

[[email protected] ~]# su - hyc2

[[email protected] ~]$ id 查看当前用户

uid=1006(hyc2) gid=1001(hyc1) 组=1001(hyc1) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

su和su-的区别:

都可以切换用户;

su只会切换登录的用户,切换时不会加载被切换用户的配置文件、环境变量等内容;

su-会直接切换到用户家目录下加载被切换用户的配置文件、环境变量等内容;

su - –c 指定以某个用户的身份执行某个命令

[[email protected] ~]# whoami

root

[[email protected] ~]# su - -c "touch /tmp/ldp" hyc

[[email protected] ~]# ls -l /tmp/ldp

-rw-rw-r--. 1 hyc hyc 0 6月  13 20:54 /tmp/ldp ldp文件的属主和属组为hyc

[[email protected] ~]# tail -7 /etc/passwd

hyc:x:1000:1000::/home/hyc:/bin/bash

hyc1:x:1001:1001::/home/hyc1:/bin/bash

hyc2:x:1006:1001::/home/hyc2:/bin/bash

hyc3:x:1007:1005::/home/hyc111:/sbin/nologin

hyc4:x:1008:1008::/home/hyc4:/bin/bash

hyc5:x:1014:1001::/home/abc:/sbin/nologin

hyc6:x:1015:1015::/home/hyc6:/bin/bash

[[email protected] ~]# date

2018年 06月 13日 星期三 21:00:22 CST

从root切换到普通用户不需要密码,从一个普通用户切换到另一个普通用户需要密码

[[email protected] ~]# whoami

root

[[email protected] ~]# su - hyc

上一次登录:三 6月 13 21:01:10 CST 2018pts/1 上

[[email protected] ~]$ whoami

hyc

[[email protected] ~]$ su - hyc1

密码:

上一次登录:五 6月  8 01:09:00 CST 2018pts/0 上

最后一次失败的登录:三 6月 13 21:01:33 CST 2018pts/1 上

最有一次成功登录后有 2 次失败的登录尝试。

[[email protected] ~]# ls /home home目录不存在用户hyc4的家目录

3.txt-  hyc  hyc1  hyc111  hyc2  hyc5  hyc6  hyc7

[[email protected] ~]# tail -7 /etc/passwd

hyc:x:1000:1000::/home/hyc:/bin/bash

hyc1:x:1001:1001::/home/hyc1:/bin/bash

hyc2:x:1006:1001::/home/hyc2:/bin/bash

hyc3:x:1007:1005::/home/hyc111:/sbin/nologin

hyc4:x:1008:1008::/home/hyc4:/bin/bash

hyc5:x:1014:1001::/home/abc:/sbin/nologin

hyc6:x:1015:1015::/home/hyc6:/bin/bash

[[email protected] ~]# su - hyc4 导致切换时无法加载用户hyc4的配置文件

su: 警告:无法更改到 /home/hyc4 目录: 没有那个文件或目录

-bash-4.2$

解决办法:

用户缺少家目录

[[email protected] ~]# mkdir /home/hyc4 创建hyc4家目录

[[email protected] ~]# chown hyc4:hyc4 /home/hyc4 修改目录权限

[[email protected] ~]# su - hyc4

上一次登录:三 6月 13 21:07:57 CST 2018pts/1 上

-bash-4.2$ 由于缺少配置文件导致依然无法正常登录

[[email protected] ~]# ls -al /etc/skel/ 该目录下为用户家目录配置文件模板

总用量 24

drwxr-xr-x.  2 root root   62 5月  25 04:49 .

drwxr-xr-x. 74 root root 8192 6月  13 21:07 ..

-rw-r--r--.  1 root root   18 8月   3 2017 .bash_logout

-rw-r--r--.  1 root root  193 8月   3 2017 .bash_profile

-rw-r--r--.  1 root root  231 8月   3 2017 .bashrc

[[email protected] ~]# cp /etc/skel/.bash* /home/hyc4 复制模板到hyc4家目录下

[[email protected] ~]# chown -R hyc4:hyc4 !$

chown -R hyc4:hyc4 /home/hyc4 连带修改hyc4目录下所有文件的属主和属组

[[email protected] ~]# su - hyc4

上一次登录:三 6月 13 21:13:04 CST 2018pts/1 上

[[email protected] ~]$ 切换正常

普通用户显示$,root用户显示#

3.8 sudo命令

可以让普通用户临时拥有某个用户(包括root)的权限

[[email protected] ~]# visudo

visudo专门用于编辑/etc/sudoers.tmp文件,可以帮助检测语法错误;

若使用vi命令无法检测语法错误;

91 ## Allow root to run any commands anywhere

92 root    ALL=(ALL)       ALL 允许root用户在任何地方以任何用户的身份执行任何命令

93 hyc     ALL=(root)      ls,mv,cat 允许hyc用户在任何地方以root身份执行ls、mv、cat

第二段的ALL通常不修改,这个ALL的=后面的括号中写需要获得哪个用户的身份,可以写ALL表示任何用户;

第三段可以写多个或一个命令表示执行的命令,写ALL则为执行任何命令;

正常保存退出出现提示:

>>> /etc/sudoers: 语法错误 near line 93 <<<

现在做什么? 此处回车出现以下信息

选项有:

重新编辑 sudoers 文件(e)

退出,不保存对 sudoers 文件的更改(x)

退出并将更改保存到 sudoers 文件(危险!)(Q)

现在做什么? 按e重新编辑

91 ## Allow root to run any commands anywhere

92 root    ALL=(ALL)       ALL

93 hyc     ALL=(root)      /usr/bin/ls, /usr/bin/mv, /usr/bin/cat

最后一段命令需要写绝对路径;

命令间用逗号和空格分开;

[[email protected] ~]$ ls /root 普通用户无权限查看root家目录

ls: 无法打开目录/root: 权限不够

[[email protected] ~]$ sudo /usr/bin/ls /root/ 使用户hyc以root身份执行ls命令

我们信任您已经从系统管理员那里了解了日常注意事项。

总结起来无外乎这三点:

#1) 尊重别人的隐私。

#2) 输入前要先考虑(后果和风险)。

#3) 权力越大,责任越大。

[sudo] hyc 的密码: 第一次用sudo执行命令时都要输入当前用户的密码

111  222  3.txt  anaconda-ks.cfg.1  hyc2  ls2  test.txt  新建文本文档.txt

[[email protected] ~]$ sudo /usr/bin/ls /root/

111  222  3.txt  anaconda-ks.cfg.1  hyc2  ls2  test.txt  新建文本文档.txt

[[email protected] ~]# visudo

91 ## Allow root to run any commands anywhere

92 root    ALL=(ALL)       ALL

93 hyc     ALL=(root)      NOPASSWD:/usr/bin/ls, /usr/bin/mv, /usr/bin/cat

在最后一段最前面加NOPASSWD:则首次使用sudo时将不提示输入密码

[[email protected] ~]# su - hyc

上一次登录:三 6月 13 22:11:03 CST 2018pts/1 上

[[email protected] ~]$ sudo ls /root 此处未提示密码

111  222  3.txt  anaconda-ks.cfg.1  hyc2  ls2  test.txt  新建文本文档.txt

[[email protected] ~]# visudo

# Host_Alias     FILESERVERS = fs1, fs2 为主机做别名

# Host_Alias     MAILSERVERS = smtp, smtp2

# User_Alias ADMINS = jsmith, mikem 为用户做别名

27 # Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dh        client, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /s        bin/iwconfig, /sbin/mii-tool

28 Cmnd_Alias HYC_CMD = /usr/bin/ls, /usr/bin/mv, /usr/bin/cat

91 ## Allow root to run any commands anywhere

92 root    ALL=(ALL)       ALL

93 hyc     ALL=(root)      HYC_CMD

此处命令别名需要大写

[[email protected] ~]# su - hyc

上一次登录:三 6月 13 22:20:46 CST 2018pts/1 上

[[email protected] ~]$ sudo ls /root 修改别名成功

[sudo] hyc 的密码:

111  222  3.txt  anaconda-ks.cfg.1  hyc2  ls2  test.txt  新建文本文档.txt

3.9 限制root远程登录

用户无法直接远程到root,但可以执行su命令切换到root

设置用户可以以任何用户的身份使用su命令方便从普通用户切换到root

[[email protected] ~]# visudo

User_Alias HYCS = hyc, hyc1

## Allow root to run any commands anywhere

root    ALL=(ALL)       ALL

hyc     ALL=(root)      HYC_CMD

HYCS    ALL=(ALL)       NOPASSWD:/usr/bin/su

[[email protected] ~]# su - hyc

上一次登录:三 6月 13 23:30:41 CST 2018pts/1 上

[[email protected] ~]$ sudo su – 在使用su时直接获得root权限执行

上一次登录:三 6月 13 23:36:33 CST 2018pts/1 上

限制root用户远程登录

[[email protected] ~]# vi /etc/ssh/sshd_config

38 #PermitRootLogin no

[[email protected] ~]# systemctl restart sshd.service 修改配置后重启服务

此时会发现root用户无法远程登录

[[email protected] ~]$ su – root 用普通用户登录后切换到root下,发现需要密码但不知道密码,导致无法切换

密码:

su: 鉴定故障

[[email protected] ~]$

[[email protected] ~]$ sudo su – root 使用sudo命令以root身份切换root不需要密码

上一次登录:三 6月 13 23:56:40 CST 2018tty1 上

最后一次失败的登录:三 6月 13 23:57:48 CST 2018pts/0 上

最有一次成功登录后有 1 次失败的登录尝试。

用户执行su – root时获得了root权限,所以切换root不需要密码

原文地址:http://blog.51cto.com/12216458/2129116

时间: 2024-10-12 06:59:04

6.13 3.7-3.9的相关文章

python 各模块

01 关于本书 02 代码约定 03 关于例子 04 如何联系我们 1 核心模块 11 介绍 111 内建函数和异常 112 操作系统接口模块 113 类型支持模块 114 正则表达式 115 语言支持模块 12 _ _builtin_ _ 模块 121 使用元组或字典中的参数调用函数 1211 Example 1-1 使用 apply 函数 1212 Example 1-2 使用 apply 函数传递关键字参数 1213 Example 1-3 使用 apply 函数调用基类的构造函数 122

转:Python标准库(非常经典的各种模块介绍)

Python Standard Library 翻译: Python 江湖群 10/06/07 20:10:08 编译 0.1. 关于本书 0.2. 代码约定 0.3. 关于例子 0.4. 如何联系我们 核心模块 1.1. 介绍 1.2. _ _builtin_ _ 模块 1.3. exceptions 模块 1.4. os 模块 1.5. os.path 模块 1.6. stat 模块 1.7. string 模块 1.8. re 模块 1.9. math 模块 1.10. cmath 模块

13.Linux键盘按键驱动 (详解)

版权声明:本文为博主原创文章,未经博主允许不得转载. 在上一节分析输入子系统内的intput_handler软件处理部分后,接下来我们开始写input_dev驱动 本节目标: 实现键盘驱动,让开发板的4个按键代表键盘中的L.S.空格键.回车键 1.先来介绍以下几个结构体使用和函数,下面代码中会用到 1)input_dev驱动设备结构体中常用成员如下: struct input_dev { void *private; const char *name; //设备名字 const char *ph

JAVA 初识类加载机制 第13节

JAVA 初识类加载机制 第13节 从这章开始,我们就进入虚拟机类加载机制的学习了.那么什么是类加载呢?当我们写完一个Java类的时候,并不是直接就可以运行的,它还要编译成.class文件,再由虚拟机解释给当前的操作系统去执行.这些过程都是我们看不见的,我们能看见的也就是一个.class文件.既然虚拟机要解释这些.class文件给当前的操作系统听,那么他怎么获得这些.class文件呢?虚拟机获得这些.class文件的过程就是类加载了. 所以,总结来说就是:虚拟机将.class文件从磁盘或者其他地

RedHat6.6上安装MySQL5.7.13

由于公司需要更换新的架构,将采用MySQL5.7作为数据库的主要版本,下面将全面介绍在RedHat6.6上二进制安装MySQL5.7.13.后期也将依次介绍在MySQL5.7上的运维管理及优化. 1.下载MySQL5.7.13安装包 下载地址如下,现在的MySQL5.7稳定版已更新到5.7.14 http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.14-linux-glibc2.5-x86_64.tar.gz 2.新建MySQL用户和组

第20章 异常和状态管理20.7-20.13

20.7用可靠性换取开发效率 面向对象编程,编译器功能,CLR功能以及庞大的类库——使.Net Framework成为一个颇具吸引力的开发平台.但所有的这些东西,都会在你的代码中引入你没有什么控制权的“错误点”,如果 OutOfMemoryExcepton等.程序开发不可能对这些异常进行一一捕捉,让应用程序变得绝对健壮.意料意外的异常往往造成程序状态的破坏,为 了缓解对状态的破坏,可以做下面几件事: ●执行catch或finally块时,CLR不允许终止线程,所以可以向下面这样写是Transfe

12.13周记

周数 专业学习目标 专业学习时间 新增代码量 博客发表量 人文方面的学习 知识技能总结 12.13 12.13周web网页制作学习 12周7小时: 13周9小时: 12周300行: 13周400行: 一共发表4篇博客 12.13周<三国志> 12周web中的js应用: 13周C语言的二叉树,以及web中css的应用:

2016年4月13日作业

一.外包管理 1.外包的形式有哪五种?什么是利益关系? 活动外包.服务外包.内包.合包.利益关系 利益关系是一种长期的合作关系,双方先为此关系进行投资,再根据预先拟定的协议分享利益,共同承担风险,同时共享利益. 2.外包管理的目标是什么?要实现这个目标,对外包管理提出哪四个方面的要求? 软件外包管理的总的目标是用强有力的手段来管理同时进行的众多外包项目,满足进度.质量.成本的要求.要实现这个目标就对外包管理提出了以下四方面的要求. 1)慎重选择合格的软件承包商; 2)互相同意对方的承诺; 3)需

MDK5.13新建工程步骤

http://www.stmcu.org/module/forum/thread-600249-1-1.html 本人也是接触stm32没多久,之前用的MDK是5.1,现在用的是5.13,MDK5.0之前的版本(本人简称旧版)和之后的版本(本人简称新版)新建工程有很大区别.对于刚开始用学stm32的新手来说,基本上stm32 的视频教程,都是使用的旧版MDK,如果新手直接安装的是新版的MDK的话,往往总是会有一些困惑.     本人深有作为新手刚入手MDK5.13时新建工程的困惑感受,特地发了该

Android基础入门教程——8.1.3 Android中的13种Drawable小结 Part 3

Android基础入门教程--8.1.3 Android中的13种Drawable小结 Part 3 标签(空格分隔): Android基础入门教程 本节引言: 本节我们来把剩下的四种Drawable也学完,他们分别是: LayerDrawable,TransitionDrawable,LevelListDrawable和StateListDrawable, 依旧贴下13种Drawable的导图: 1.LayerDrawable 层图形对象,包含一个Drawable数组,然后按照数组对应的顺序来