十三、su命令、sudo命令、限制root远程登录

一、su命令

格式为su [-] username,后面可以跟-,也可以不跟。普通用户的su命令不加username时,就是切换到root用户。root用户也可以使用su命令切花到普通用户。该命令加上-后,会初始化当前用户的各种环境变量。示例加与不加-的区别,命令:

# su user1

[[email protected] root]$ pwd

/root

[[email protected] root]$ ls

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

[[email protected] root]$ su root

密码:

[[email protected] ~]# su - user1

上一次登录:二 2月  6 20:18:12 CST 2018pts/0 上

[[email protected] ~]$ pwd

/home/user1

[[email protected] ~]$ ls -la

总用量 12

drwx------. 2 user1 grp1  62 1月  30 18:46 .

drwxr-xr-x. 4 root  root  32 2月   6 18:50 ..

-rw-r--r--. 1 user1 grp1  18 8月   3 2017 .bash_logout

-rw-r--r--. 1 user1 grp1 193 8月   3 2017 .bash_profile

-rw-r--r--. 1 user1 grp1 231 8月   3 2017 .bashrc

不加-表示还在root用户下,没有彻底切换过来,加-后可以发现在自己的家目录下/home/user1,在自己的家目录下就会加载自己家目录下的配置文件,比如ls -la。

因此,切记切换用户的时候要加上“-”,这样切换才彻底。

用法:

root用户下,以普通用户的身份执行命令:

[[email protected] ~]# su - -c "touch /tmp/13.txt" user1

[[email protected] ~]# ls -lt /tmp/|head

总用量 0

-rw-r--r--. 1 user1 grp1  0 2月   6 20:28 13.txt

-rw-r--r--. 1 user1 grp1  0 2月   6 20:27 12.txt

drwx------. 3 root  root 17 2月   3 03:57 systemd-private-6777d80f894446f799d9a6e27f054b68-vmtoolsd.service-aSrK8x

drwx------. 3 root  root 17 2月   3 03:57 systemd-private-6777d80f894446f799d9a6e27f054b68-vgauthd.service-0Lc2Vi

drwxr-xr-x. 2 root  root 19 1月  30 19:10 test

drwx------. 3 root  root 17 1月  27 03:22 systemd-private-e8721cff7b864cf6acc2f0604f95bb97-vmtoolsd.service-8ks2ZG

drwx------. 3 root  root 17 1月  27 03:22 systemd-private-e8721cff7b864cf6acc2f0604f95bb97-vgauthd.service-T7GMmu

drwx------. 3 root  root 17 1月  26 04:41 systemd-private-13ad930731b445abbdd9798b690f2917-vmtoolsd.service-lslC0Q

drwx------. 3 root  root 17 1月  26 04:41 systemd-private-13ad930731b445abbdd9798b690f2917-vgauthd.service-iI6GMz

切换的用户若没有系统的配置文件,前缀会显示.bash字样,可进入系统的模板目录:/etc/skel/,复制下面的".bash"文件:

# ls -la /etc/skel

总用量 24

drwxr-xr-x.  2 root root   62 1月  22 01:48 .

drwxr-xr-x. 74 root root 8192 2月   6 18:57 ..

-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

# cp /etc/skel/.bash* /home/user5/         复制到它的家目录下去,比如user5。

# chown -R user5:user5 /home/user5      然后不要忘记了更改所有者及所属组,/home/user5可以用!$(上一条命令的最后一个参数)代替。

复制过去后,再登录查看,前缀即可正常显示。

二、sudo命令

sudo命令:只有root用户可以使用的命令,普通用户若想使用sudo命令,需要root预先设定。可以使用visudo命令编辑它的配置文件/etc/sudoers。若没有visudo这个命令,使用命令yum install -y sudo安装。

root默认支持sudo,因为这个文件中有一行root ALL=(ALL)ALL。

在该行下面加入test ALL=(ALL)ALL

就可以让test用户拥有sudo的特权。从左到右,第一段test这里为一个用户,指定让哪个用户拥有sudo特权,第二段ALL=(ALL),左边的ALL指的是所有的主机,右边的ALL指的是获取哪个用户的身份,第二段几乎不用配置;第三段设定可以使用sudo命令的有哪些。

visudo这个命令可以检测错误,因此建议使用这个命令。

使用visudo命令编辑/etc/sudoers配置文件,必须要使用root用户。

操作方法:进入这个文件,然后在root下面加上一行。示例:

## Allow root to run any commands anywhere (整个文件中最核心的一个项目)

root    ALL=(ALL)       ALL

user1   ALL=(ALL)     ALL(可以自定义一些命令,如ls,mv,cat,这些命令需要些绝对路径,否则不可用,找不到文件)

此时方可验证user1的权限了,方法如下:(如下操作是在root账户下进行的)

# su user1

[[email protected] root]$ ls

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

[[email protected] root]$ sudo ls

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

总结起来无外乎这三点:

#1) 尊重别人的隐私。

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

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

[sudo] user1 的密码:

123  1.txt  anaconda-ks.cfg  dir3  dir4

小技巧:在文件内,":set nu"可以显示文件内的行号。

使用sudo时,要输入自身的密码,也可设置不要密码。如下的user2:

## Allow root to run any commands anywhere

root    ALL=(ALL)       ALL

user1   ALL=(ALL)       ALL

user2   ALL=(ALL)      NOPASSWD: ALL:

这个下面也可以加入别名的组。

host可以设置别名,用户也可以。alias命令。

获取到的命令那里

由于切换到user1用户后当前目录还是root,user1没有任何权限,所以ls查看时,提示权限不够。然而使用命令sudo ls输入user1自身的密码后,就有权限了。初次使用sudo命令时,会出现上面的一大段提示,再次使用sudo命令时则不再提示。

若每增加一个用户就设置一行,这样就很麻烦,所以可以这样设置:

# %wheel        ALL=(ALL)

将# %wheel        ALL=(ALL)前面的#去掉,让这一行生效。它的意思是,wheel这个组的所有用户都拥有了sudo的权力。接下来,只要把需要设置sudo权限的用户加入到wheel这个组即可。如下所示:

## Allows people in group wheel to run all commands

%wheel  ALL=(ALL)       ALL

新加入别名的组,加入到这一行命令下面,如下:

# User_Alias ADMINS = jsmith, mikem

实用案例:

我们的需求是把Linux服务器设置成这个样子:只允许使用普通账户登录,登录后,可以不输入密码就能用sudo切换到root账户。配置方法是:

# visudo

在文件最后加入三行:

User_Alias USER_SU = user1, user2 user3

Cmnd_Alias SU = /usr/bin/su

USER_SU ALL=(ALL)NOPASSWD:SU

第一行设定了一个user别名,其实这个USER_SU相当于是user1,user2,user3三个账户;第二行设定了一个命令别名,SU相当于/usr/bin/su;

第三行,保存配置文件后,使用user1、2、3这三个账户登录Linux。

三、限制root远程登录

/etc/ssh/sshd_config为sshd服务的配置文件,默认允许root账户用过ssh远程登录Linux。要想限制root用户远程登录Linux,操作方法为:修改配置文件/etc/ssh/sshd_config,在文件中查找#PermitRootLogin yes并修改为PermitRootLogin no。保存配置文件后,重启sshd服务,如下所示:

# systemctl restart sshd.service

需注意的是,这个方法只适用于通过ssh远程登录Linux的情况。

原文地址:http://blog.51cto.com/13576245/2069630

时间: 2024-08-29 20:34:19

十三、su命令、sudo命令、限制root远程登录的相关文章

su、sudo、限制root远程登录

1.su命令 su用来切换用户. su -  用户    是完全切换,就是变成另一个用户. su 用户       是不完全切换,变量还是上一个用户. 其实,完全切换,就是在切换时加载用户的环境变量.bash_history,.bash_logout,.bash_profile. 一个没有家目录的用户,如何给这个没有家目录的用户配置变量. root用户操作的以下步骤 1.useradd -M can1 创建一个没家目录的用户. 2.mkdir /home/can1 创建家目录 3.cp -r /

Linux -su、sudo、限制root远程登录

su:2.1.su - root 完整切换到root2.su oracle 部分切换到oracle3.以某人身份去执行命令,而不切换到该用户下su - -c "touch /tmp/1.txt" user1 以user1的身份在tmp目录下创建一个1.txt文件.sudo:1.普通用户临时拥有其他用户的权限,去执行命令,一般用于,普通用户授权root权限.2.visudo 可查看配置文件,按i,可修改文件允许root在任何地方运行任何命令,user拥有执行所有命令的权限.最后一个ALL

su、sudo,限制root远程登录

su:切换用户的命令,在root用户下,可以用这个命令来切换.[[email protected] ~]# su - aming上一次登录:日 1月 21 20:36:34 CST 2018pts/0 上[[email protected] ~]$我们可以看到,用户已经从root转换到了aming.我们也可以输入命令id来查看它是谁[[email protected] ~]$ iduid=1001(aming) gid=1001(aming) 组=1001(aming) 环境=unconfine

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

3.7 su命令 3.8 sudo命令 3.9 限制root远程登录 3.7 su命令 su aming su - aming 切换用户的时候要加上 su - 这样才切换的彻底 切换到user5下面 因为之前 user5 的用户被锁定了 在切换到root下 更改下user5 的密码 但是前缀显示 -bash-4.5  是因为user5 用户没有家目录 先查看变user5的 所属主 所属组 退出aming 进入root用户 创建一个 目录 但是这样 前缀还是一样,是因为 /home/user5/

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

三周第三次课(12月27日)3.7 su命令3.8 sudo命令3.9 限制root远程登录 su命令: 用户和工作组管理: su命令用于切换当前用户身份到其他用户身份, 变更时须输入所要变更的用户帐号与密码. 语法: su(选项)(参数) 选项: -c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份: -f或--fast:适用于csh与tsch,使shell不用去读取启动文件: -l或--login:改变身份时,也同时变更工作目录,以及HOME,SHE

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

3.7 su命令 1.su命令 su命令是用来切换用户的: su命令需要使用- 进行切换,如果不使用- 也可以, 但当前目录是在root下,没有彻底切换 在root下 使用su命令创建文件,以指定用户的身份创建文件 切换后显示-bash-4.2 因为user5的用户的家目录是不存在的,也没有用户的配置文件进行加载 切换至user5后,还是不行,说明没有配置文件 系统的模块目录 !$:表示上一条命令的最后一个参数 3.8 sudo命令 1.sudo命令 给普通用户授权root的身份 sudo的配置

CentOS6.6下启用sudo,禁用root远程登录

CentOS默认不启用sudo,且可以直接用超级管理员身份登录服务器. 1.添加sudo用户 执行visudo命令,找到: 1 root    ALL=(ALL) ALL 在下面增加:(注意,sky9890是Linux新增的一个普通用户) 1 sky9890 ALL=(ALL) ALL #说明在此可以增加用户所有权限,以上增加用户与本实验无关. 2.禁止root用户登录 编辑/etc/ssh/sshd_config,将 1 PermitRootLogin yes 改为 1 PermitRootL

Linux学习笔记(十三) su 、sudo 、限制root远程登陆

一.su切换用户su - username带用户环境切换用户 su - -c "touch /tmp/123.txt" user1 以user1用户创建/tmp/123.txt 文件 如果需要切换到一个没有家目录的用户,会像图中一样报错 这时候首先需要创建家目录,然后将文件夹用户与组修改为目标用户与组 ,再将bash配置信息复制到家目录下, cp /etc/skel/.bash* /home/user4即可登陆 这里最好将家目录下配置文件属性也修改为目标用户的chown -R user

切换用户su命令、授权sudo命令、限制root远程登录

su命令 用来切换用户的 ctrl+d退出来 su - 彻底切换用户,包括自己的配置.环境变量 [[email protected] ~]# whoami root [[email protected] ~]# su - awei 上一次登录:一 5月  7 15:44:46 CST 2018pts/1 上 [[email protected] ~]$ id uid=1000(awei) gid=1000(awei) 组=1000(awei) 环境=unconfined_u:unconfined