首先,我们要知道系统当中存在哪些用户。

1、用户名和密码的存储位置

存储帐号的文件:/etc/passwd

存储密码的文件:/etc/shadow

通过/etc/shadow获取的只是密码加密后的Hash散列值,需要解密才能看见

在输入ls -l /etc/passwd /etc/shadow可以看查密码的权限

添加新用户及用户组

使用“useradd ashui”命令给linux系统添加一个新的用户。

使用“passwd ashui”命令给用户“ashui”添加密码。输入两次一样的密码即可完成创建。

使用“groupadd groupTest”命令创建用户组。

使用“usermod -G groupTest ashui”将已有的用户添加到已有的组中。

使用“cat /etc/group |grep group”命令查看是否将刚才的用户添加到组中

1.su

su是最简单的身份切换名,用su我们可以进行任何用户的切换,一般都是su - username,然后输入密码就ok了,但是root用su切换到其他身份的时候是不需要输入密码的。

一般我们切换身份都是切换到root,然后进行一些只有root能干的事,比如修改配置文件,比如下载安装软件,这些都只能是root才有权限干的事,切换到root可以是单纯的su,或者是su -和su - root,后面两个是一样的意思。

为何刚开始只有root能执行sudo,切换到root身份通过visudo查看/etc/sudoers这个配置文件,如果是vim /etc/sudoers是可以查看的,但是不能修改,因为sudoers这个文件是由语法的,只能通过visudo来修改。

1).单个用户的sudoers语法:

如果我要我当前这个用户能执行root的所有操作,那么我只要加一行learnpython ALL=(ALL) ALL。那么如果有很多人需要执行sudo,那不是要写编写很多行啊,这样不是很麻烦,这样就要用到用户组了。

2).利用用户组处理visudo:

看看第二个红色方框那行代码,%wheel代表wheel用户组,如果我们将需要执行root所有操作的用户都加入到wheel用户组,或者我们自定义的用户组,然后添加一行代码,那么就不用一个用户一个用户的添加进来了,这样不是很省事啊。

3).限制用户sudo的权限:

但是经常我们不需要用户有那么大的权限,只要让他们具有他们负责范围的权限就可以了,比如有的有的人来管理密码,我们就只让他能进行密码的管理,而不让他有别的权限,这样就需要权限的控制了。如果我让我当前用户来管理密码,即learnpython这个用户能使用passwd这个命令来帮root修改用户密码,只要加这行learnpython ALL=(root) /usr/bin/passwd,那么learnpython这个用户就可以使用passwd这个命令了:

4).通过别名设置visudo

查看sudoers这个文件的时候,你会看见User_Alias,Host_Alias和Cmnd_Alias这些东西,他们都是一些别名,User_Alias表示具有sudo权限的用户列表,就是第一列参数,Host_Alias表示主机的列表,就是第二列参数,Cmnd_Alias表示允许执行命令的列表,就是第四列参数,还有个Runas_Alias,我初始的sudoers里是没有的,这个表示用户以什么身份登录,也就是第三列参数。

3.总结

了解完su和sudo,是不是发现sudo有太多的好处了。su方式切换是需要输入目标用户的密码,而sudo只需要输入自己的密码,所以sudo可以保护目标用户的密码不外流的。当帮root管理系统的时候,su是直接将root所有权利交给用户,而sudo可以更好分工,只要配置好/etc/sudoers,这样sudo可以保护系统更安全,而且分工明确,有条不紊。

sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码。不过有时间限制,Ubuntu默认为一次时长15分钟。
su : 切换到某某用户模式,提示输入密码时该密码为切换后账户的密码,用法为“su 账户名称”。如果后面不加账户时系统默认为root账户,密码也为超级账户的密码。没有时间限制。
sudo -i: 为了频繁的执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用该命令。提示输入密码时该密码为当前账户的密码。没有时间限制。执行该命令后提示符变为“#”而不是“$”。想退回普通账户时可以执行“exit”或“logout” 。

sudo -i 直接运行sudo命令加-i参数
sudo su 运行sudo命令给su命令提权,运行su命令。
sudo -i 运行结果 PWD=/root
sudo su 运行结果 PWD=/home/用户名(当前用户主目录)

sudo passwd root  给root设置密码

注:su和sudo的区别是:

  1) su的密码是root的密码,而sudo的密码是用户的密码;

  2) su直接将身份变成root,而sudo是以用户登录后以root的身份运行命令,不需要知道root密码.

Linux 的su 与sudo 的区别,查看所有用户的更多相关文章

  1. Linux命令--su与sudo

    su(switch user)命令的作用:切换用户,一般是普通用户与root用户之间的切换.例:>su                #输入su命令Password:      #提示输入密码 ...

  2. su和sudo的区别与使用,su命令,linux命令

    su和sudo的区别与使用 一.   使用 su 命令临时切换用户身份 1. su 的适用条件和威力 su命令就是切换用户 的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务, ...

  3. Linux中su、su -和sudo的区别

    su 切换到root用户,但是并没有转到root用户家目录下,即没有改变用户的环境. su - 切换到root用户,并转到root用户的家目录下,即改变到了root用户的环境. 这个涉及到不同用户下的 ...

  4. linux 下su 和sudo 的用法以及区别

    一. 使用 su 命令临时切换用户身份 1.su 的适用条件和威力 su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务,执行useradd ,beinan用 ...

  5. 【linux】su和sudo命令的区别

    来源:http://www.jb51.net/LINUXjishu/12713.html 一. 使用 su 命令临时切换用户身份 1.su 的适用条件和威力 su命令就是切换用户的工具,怎么理解呢?比 ...

  6. 【linux】su、sudo、sudo su、sudo -i的用法和区别

    来源:http://bbs.csdn.net/topics/390938651 sudo : 暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码.不过 ...

  7. linux中su和sudo区别

    su切换用户,切换成root用户,要输入root用户的密码 su - 用户名 sudo  涉及到 /etc/sudoers文件 ,内容如下: # User privilege specificatio ...

  8. Linux 中su和sudo命令的几个注意点

    1 su与su - 的区别 1.1命令说明 su对应是是no-login shell的方式进行账号登陆,命令行的变量配置还是切换账号前的变量. su-对应的是login shell的方式进行账号登陆, ...

  9. Linux中su和sudo的用法

    su -#su - oldboy //当执行这个命令的时候表示切换到oldboy用户,并且重新读取用户环境相关配置文件,具体的来说就是执行下用户家目录下.bash_profile和.bashrc文件, ...

随机推荐

  1. Android手游2048核心功能

    private void swipeUp(){ //向上滑动函数 for (int x = 0; x < 4; x++) { //行从上到下 for (int y = 0; y < 4; ...

  2. Mac下配置Java Web开发环境(Mac 10.12)

    1.JDK http://www.cnblogs.com/EasonJim/p/6277541.html 2.MySQL http://www.cnblogs.com/EasonJim/p/62758 ...

  3. (转)mysql数据库高可用高扩展性架构方案实施

    http://shanhu.blog.51cto.com/1293405/1212605-----mysql数据库高可用高扩展性架构方案实施

  4. CentOS 开启安装EPEL YUM源

    我们用yum安装软件时,经常发现我们的yum源里面没有该软件,需要自己去wget,然后configure,make,make install,太折腾了. 其实,CentOS 还有一个源叫做 EPEL ...

  5. 使用EditPlus编辑Linux上的文本文件

    在Linux上我们都使用vim 或者vi命令对文件进行编辑,但是我们习惯的一般都是windows系统, 那么怎么才能像在windows上一样编辑我们Linux上的文件呢?下面我们就来看看如何使用 wi ...

  6. 侵入式单链表的简单实现(cont)

    前一节介绍的侵入式链表实现在封装性方面做得不好,因为会让消费者foo.c直接使用宏container_of().这一节对list的定义做了一点改进,如下所示: typedef struct list_ ...

  7. 10种jquery选择器操作详解(转)

    jquery选择器大体上可分为4 类: 1.基本选择器2.层次选择器3.过滤选择器4.表单选择器 其中过滤选择器可以分为:1.简单过滤选择器2.内容过滤选择器3.可见性过滤选择器4.属性过滤选择器5. ...

  8. [Mysql 查询语句]——集合函数

    count() 统计记录条数 select count(*) from student; +----------+ | count(*) | +----------+ | +----------+ s ...

  9. ASP.NET MVC Core的ViewComponent

    MVC Core新增了ViewComponent的概念,直接强行理解为视图组件,用于在页面上显示可重用的内容,这部分内容包括逻辑和展示内容,而且定义为组件那么其必定是可以独立存在并且是高度可重用的. ...

  10. imx6 Android6.0.1 init.rc解析

    1. 概述 1.1 概述 之前分析过android5的init.rc,不过还是不够仔细,现在来看看android6的,多的就不写了,只写关键点 忘记一些基本概念可以先看看之前的笔记: Android5 ...