2019独角兽企业重金招聘Python工程师标准>>>

3.7 su命令

e.g1 注意观察whoami、pwd、id、su(带“-”否)的输出结果。

[root@greenfinch ~]# whoami
root
[root@greenfinch ~]# pwd
/root                    && 当前用户的工作目录是/root
[root@greenfinch ~]# su - greenfinch
上一次登录:日 12月 17 00:06:45 CST 2017pts/0 上
[greenfinch@greenfinch ~]$ whoami
greenfinch
[greenfinch@greenfinch ~]$ pwd
/home/greenfinch              && 当前用户的工作目录是/home/greenfinch
[greenfinch@greenfinch ~]$ id
uid=1000(greenfinch) gid=1000(greenfinch) 组=1000(greenfinch) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[greenfinch@greenfinch ~]$ exit      && 退出当前用户,回到root用户。快捷键Ctrl+D
登出
[root@greenfinch ~]# su greenfinch    && 注意这里的su命令没有带选项-u
[greenfinch@greenfinch root]$ pwd     && 虽然用户已切换到greenfinch,但用户当前工作目录却为/root
/root
[greenfinch@greenfinch root]$ id
uid=1000(greenfinch) gid=1000(greenfinch) 组=1000(greenfinch) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[greenfinch@greenfinch ~]$ ls -la     && 其中的.bash*均为配置文件
总用量 16
drwx------. 2 greenfinch greenfinch  83 12月  16 23:26 .
drwxr-xr-x. 7 root       root        80 12月  15 06:41 ..
-rw-------. 1 greenfinch greenfinch  99 12月  17 00:10 .bash_history
-rw-r--r--. 1 greenfinch greenfinch  18 12月   3 2016 .bash_logout
-rw-r--r--. 1 greenfinch greenfinch 193 12月   3 2016 .bash_profile
-rw-r--r--. 1 greenfinch greenfinch 231 12月   3 2016 .bashrc
  • whoami命令:用于显示当前有效的用户名称。

  • pwd命令:以绝对路径的方式显示用户当前工作目录。命令将当前目录的全路径名称(从根目录)写入标准输出。全部目录使用/分隔。第一个/表示根目录,最后一个目录是当前目录。执行pwd命令可立刻得知您目前所在的工作目录的绝对路径名称。

su命令

用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。

  • 选项:
  • [ ] su命令后不加任何选项,普通用户将切换到root用户。
  • [ ] -:su命令后加上此选项,将初始化当前用户的各种环境变量,改变登录Shell。
  • [ ] -c:执行一个命令,然后退出所在的用户环境。

注意:

  1. 只要是切换用户,用su命令时,建议都加上“-”选项。*
  2. root用户切换到普通用户时,不需要输入密码。反之,需要。而普通用户之间切换时,也需要输入密码。
  • id命令:显示真实有效的用户ID(UID)和组ID(GID)。UID 是对一个用户的单一身份标识。组ID(GID)则对应多个UID。当我们想知道某个用户的UID和GID时,id命令是非常有用的。一些程序可能需要UID/GID来运行。id命令使我们更加容易地找出用户的UID和GID,而不必在/etc/group文件中搜寻。

e.g2 一条命令执行多种需求:在用户greenfinch的/tmp目录中创建文件afsd,使其文件的uid和gid均为greenfinch。

[root@greenfinch ~]# su - -c "touch /tmp/afsd" greenfinch
[root@greenfinch ~]# ls -lt /tmp/ |head
总用量 16
-rw-rw-r--. 1 greenfinch greenfinch   0 12月  17 00:55 afsd
drwx------. 3 root       root        17 12月  16 23:03 systemd-private-1882dd65265e4b85bdf0722554d55e24-vmtoolsd.service-S0EILa
-rw-rw-r--. 2 root       root         0 12月  12 04:58 1.txt.bak
drwx------. 3 root       root        17 12月  11 21:44 systemd-private-c217caa1a96346558f12846a2bd8578e-vmtoolsd.service-6M74ui
-rw-rw-r--. 1 user1      user1        4 12月  11 05:18 user1.txt
-rw-rw-r--. 1 user1      user1       32 12月  11 04:51 11.txt
-rw-rw-r--. 1 user1      user1        0 12月  11 04:47 31.txt
drwxr-xr-x. 5 root       root       165 12月  11 03:06 cc1
drwx------. 3 root       root        17 12月  10 23:24 systemd-private-9d4aad44896544c58d28c12c36634e21-vmtoolsd.service-QpOAYE
[root@greenfinch ~]# id greenfinch
uid=1000(greenfinch) gid=1000(greenfinch) 组=1000(greenfinch)
[root@greenfinch ~]# date
2017年 12月 17日 星期日 00:56:28 CST

小知识

现象:在Linux下用useradd添加用户时,有时会出现错误:Creating mailbox file(正在创建信箱文件): 文件已存在

原因:Linux下添加用户后,系统会自动加一个邮箱(系统邮箱),路径是/var/spool/mail/用户名。

解围:用命令rm -rf /var/spool/mail/用户名。这样就可以再次添加同一名字的用户了。

[root@greenfinch ~]# useradd -M user3
正在创建信箱文件: 文件已存在
[root@greenfinch ~]# rm -rf /var/spool/mail/user3

e.g3:没有家目录的用户,如何在#命令通配符前正常显示其信息。注意观察下面操作中的几个关键点:手动生成家目录、统一的配置文件、自定义uid和gid。

[root@greenfinch ~]# useradd -M user3
[root@greenfinch ~]# su - user3
su: 警告:无法更改到 /home/user3 目录: 没有那个文件或目录
-bash-4.2$ mkdir /home/user3
mkdir: 无法创建目录"/home/user3": 权限不够
-bash-4.2$ pwd
/root
-bash-4.2$ exit
登出
[root@greenfinch ~]# id user3             && 查看用户user3的uid、gid、扩展组
uid=1004(user3) gid=1004(user3) 组=1004(user3)
[root@greenfinch ~]# mkdir /home/user3  && 用户user3在创建时,没有设定家目录,这里手动生成。
[root@greenfinch ~]# su - user3
上一次登录:日 12月 17 02:19:50 CST 2017pts/0 上
-bash-4.2$ pwd
/home/user3
-bash-4.2$ 登出
[root@greenfinch ~]# su - greenfinch
上一次登录:日 12月 17 00:55:11 CST 2017pts/0 上
[greenfinch@greenfinch ~]$ ls -la  && 查看到用户greenfinch的目录下有4个.bash*的配置文件。
总用量 16
drwx------. 2 greenfinch greenfinch  83 12月  16 23:26 .
drwxr-xr-x. 7 root       root        80 12月  17 02:23 ..
-rw-------. 1 greenfinch greenfinch 106 12月  17 00:53 .bash_history
-rw-r--r--. 1 greenfinch greenfinch  18 12月   3 2016 .bash_logout
-rw-r--r--. 1 greenfinch greenfinch 193 12月   3 2016 .bash_profile
-rw-r--r--. 1 greenfinch greenfinch 231 12月   3 2016 .bashrc
[greenfinch@greenfinch ~]$ 登出
[root@greenfinch ~]# ls -la /etc/skel     && 几个.bash*配置文件所在的路径
总用量 24
drwxr-xr-x.  2 root root   62 12月   7 06:25 .
drwxr-xr-x. 77 root root 8192 12月  17 02:19 ..
-rw-r--r--.  1 root root   18 12月   3 2016 .bash_logout
-rw-r--r--.  1 root root  193 12月   3 2016 .bash_profile
-rw-r--r--.  1 root root  231 12月   3 2016 .bashrc
[root@greenfinch ~]# cp /etc/skel/.bash* /home/user3/  && 把统一的配置文件拷贝到用户user3的家目录下。目的是#命令符前的提示信息正常显示。
[root@greenfinch ~]# chown -R user3:user3 !$
chown -R user3:user3 /home/user3/
[root@greenfinch ~]# su - user3
上一次登录:日 12月 17 02:29:28 CST 2017pts/0 上
[user3@greenfinch ~]$ id
uid=1004(user3) gid=1004(user3) 组=1004(user3) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

3.8 sudo命令

使用su命令必须知道root密码,密码容易泄露,不安全。为了改进这个问题,产生了sudo命令。让普通用户临时执行一条命令,以指定用户的身份。通常给普通用户授权root用户的身份。

默认只有root用户才能使用sudo命令,普通用户要使用sudo,需要root预先设定。用命令visudo编辑配置文件/etc/sudoers。如果没有visudo命令,需要用yum install -y sudo 安装。

选项-i:以目标用户身份运行一个登录Shell。

为了频繁的执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用该命令。提示输入密码时该密码为当前账户的密码。没有时间限制。执行该命令后提示符变为“#”而不是“$”。想退回普通账户时可以执行“exit”或“logout” 。

  • 几个类似的用法:
  1. sudo /bin/bash: 这个命令也会切换到root的bash下,但不能完全拥有root的所有环境变量,比如PATH,可以拥有root用户的权限。这个命令和 sudo -s 是等同的。
  2. sudo -s:如上
  3. sudo su:这个命令,也是登录到了root,但是并没有切换root的环境变量,比如PATH。
  4. sudo su -:这个命令,纯粹的切换到root环境下,可以这样理解,先是切换到了root身份,然后又以root身份执行了 su - ,这个时候跟使用root登录没有什么区别。这个结果貌似跟sudo -i 的效果是一样的,但是也有不同,sudo 只是临时拥有了root的权限,而su则是使用root账号登录了Linux系统。
  • 总结:
  1. sudo su - 约等于 sudo -i
  2. sudo -s 完全等于 sudo /bin/bash 约等于 sudo su
  3. sudo 终究被一个"临时权限的帽子"扣住,不能等价于纯粹的登录到系统里。

输入命令visudo(比vi命令好,visudo命令可以检测语法错误),在打开的sudo的配置文件/etc/sudoers.tmp中,找到:

“## Allow root to run any commands anywhere”“root    ALL=(ALL)       ALL”

在这一行下面加入: “greenfinch ALL=(root) NOPASSWD: /usr/bin/ls, /usr/bin/cat”

提示:在用visudo命令编辑文件时,输入“:set nu”可以显示行号(nu=number)。

这样,用户greenfinch无需输入greenfinch的密码(NOPASSWD:的作用),使用ls和cat命令,就具有了root用户一样的权限。

[greenfinch@greenfinch ~]$ ls /root/
ls: 无法打开目录/root/: 权限不够
[greenfinch@greenfinch ~]$ sudo ls /root/
111  1.txt  anaconda-ks.cfg  yum.log
[greenfinch@greenfinch ~]$ cat /root/1.txt
cat: /root/1.txt: 权限不够
[greenfinch@greenfinch ~]$ sudo /usr/bin/cat /root/1.txt
Hello world.

扩展知识

sudo配置文件样例:www.opensource.apple.com/source/sudo/sudo-16/sudo/sample.sudoers

3.9 限制root远程登录

该方法只适用于通过ssh远程登录Linux的时候。

用命令vi修改配置文件/etc/ssh/sshd_config,在打开的文件中用“/itRoot”搜索关键字的方式,查找字段“#PermitRootLogin yes”。去掉该字段前的“#”,并将其中的“yes”修改为“no”。:wq存盘后,执行命令:systemctl restart sshd.service。即可。

vi /etc/ssh/sshd_config

systemctl restart sshd.service

扩展知识:

在限制了远程登陆程序访问Linux后,实现普通用户免root密码访问root账户的方法:

用visudo命令,打开配置文件/etc/sudoers:

在“#User_Alias ADMINS = jsmith, mikem”字段下,输入"User_Alias goroot = user1, user2, user3”。其中的“goroot”为别名,“user1”等为普通用户。

在“root ALL=(ALL) ALL”字段下,自定义一个规则,“goroot ALL=(ALL) NOPASSWD: /usr/bin/su”

在命令提示符下,输入命令“sudo su -”

转载于:https://my.oschina.net/greenfinch/blog/1595839

第3周第3课:su、sudo、限制root远程登录相关推荐

  1. 三周第三次课(11月1日) 3.7 su命令 3.8 sudo命令 3.9 限制root远程登录

    2019独角兽企业重金招聘Python工程师标准>>> 3.7 su命令 su - 用户名 切换用户(加-彻底切换用户包括一些配置文件) 不加 - 的话 还会在root 家目录下 加 ...

  2. 三周第三次课 3.7 su命令 3.8 sudo命令 3.9 限制root远程登录

    3.7 su命令 1.su命令 su命令是用来切换用户的: su命令需要使用- 进行切换,如果不使用- 也可以, 但当前目录是在root下,没有彻底切换 在root下 使用su命令创建文件,以指定用户 ...

  3. Linux的su命令,sudo命令和限制root远程登录

    3.7 su命令: su命令是用来切换用户的,例如我要从root用户切换到user2用户:   这个 - 选项是彻底切换用户的意思,如果不加 - 选项也可以,但是切换得不彻底,例如当前的家目录还是ro ...

  4. 3.7 su命令 3.8 sudo命令 3.9 限制root远程登录

    2019独角兽企业重金招聘Python工程师标准>>> mkpass  解释:make password [root@cham2 ~]# mkpasswd    make passw ...

  5. su命令 sudo命令 限制root远程登录

    su命令 sudo命令 限制root远程登录 su命令 日常操作中为了避免一些误操作,更加安全的管理系统,通常使用的用户身份都为普通用户,而非root.当需要执行一些管理员命令操作时,再切换成root ...

  6. su 、 sudo 命令及限制 root 远程登录

    2019独角兽企业重金招聘Python工程师标准>>> 1.su 命令 之前说到一个命令 su ,是用来切换用户的.见下图 命令 su - lys 中的 - ,是为了彻底切换用户,包 ...

  7. su、sudo、限制root远程登录

    2019独角兽企业重金招聘Python工程师标准>>> 3.7 su命令 1.切换用户命令 2.su - aming 切换哟on过户 加-的命令目的为彻底切换用户的配置配置包括环境变 ...

  8. 权限管理su、sudo、限制root远程登录

    2019独角兽企业重金招聘Python工程师标准>>> 第三章 用户和组管理 3.7 su命令 用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码. 语法: s ...

  9. su命令\sudo命令\限制root远程登录

    3.7su命令 [root@MOMOCO-02 ~]# whoami root [查看当前的用户] [root@MOMOCO-02 ~]# su - user01 上一次登录:三 12月 27 15: ...

最新文章

  1. 【ACM】杭电OJ 2034
  2. TCP/IP详解--第十二章
  3. anconda安装及opencv配置
  4. AXURE RP EXTENSION For Chrome
  5. mysql查看日志命令_面对成百上千台服务器产生的日志,试试这款轻量级日志搬运神器!
  6. vue+mintUI搭建移动端新闻类网站
  7. C/C++集成开发环境搭建
  8. 系统crontab指令
  9. python九九乘法表矩形_用Python实现九九乘法表
  10. 使用Go编译为可执行文件(windows/linux)
  11. 基于python 爬虫的数据库设计开题报告_基于博容舆情分析的Python爬虫系统的设计与应用开题报告...
  12. Windows 环境下 onenote中表格插入行和列的问题
  13. 谈谈两个互联网大佬的「认知革命」
  14. 盖茨自说不善招聘、管理:善于“借力”
  15. HTML图像和超链接及文字颜色与排版
  16. C++模板/泛型编程
  17. 读书笔记:时间与精力管理:你的精力管理决定你的人生层次
  18. matlab中的符号计算,sym、syms的区别
  19. yandex广告的投放要求 (网站篇)
  20. Win11无法删除文件夹怎么办?Win11无法删除文件夹的解决方法

热门文章

  1. 对于BI可视化分析平台,你了解多少?
  2. 欣向路由全自动一吧多网的实现(转)
  3. 邮件阅读总数统计小技巧
  4. 大屏统计图可以有多炫
  5. 以下是一个使用 VBA 的例子,演示了 ByVal 和 ByRef 的区别,以及如何在函数中传递参数和返回值。
  6. 什么样的地推才叫牛逼?他们给出了教科书般的示范
  7. apache poi Maven依赖
  8. 联想笔记本摄像头被禁用
  9. 五金冲压连续模(级进模)设计的九大细节
  10. 9种在wpf/winForm等客户端集成Web网页方案详解,全网最全,快收藏!!