1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 第3周第3课:su sudo 限制root远程登录

第3周第3课:su sudo 限制root远程登录

时间:2019-11-23 20:31:59

相关推荐

第3周第3课:su sudo 限制root远程登录

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

3.7 su命令

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

[root@greenfinch ~]# whoamiroot[root@greenfinch ~]# pwd/root&&当前用户的工作目录是/root[root@greenfinch ~]# su - greenfinch上一次登录:日 12月 17 00:06:45 CST pts/0 上[greenfinch@greenfinch ~]$ whoamigreenfinch[greenfinch@greenfinch ~]$ pwd/home/greenfinch&&当前用户的工作目录是/home/greenfinch[greenfinch@greenfinch ~]$ iduid=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]$ iduid=1000(greenfinch) gid=1000(greenfinch) 组=1000(greenfinch) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023[greenfinch@greenfinch ~]$ ls -la&& 其中的.bash*均为配置文件总用量 16drwx------. 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 .bash_logout-rw-r--r--. 1 greenfinch greenfinch 193 12月 3 .bash_profile-rw-r--r--. 1 greenfinch greenfinch 231 12月 3 .bashrc

whoami命令:用于显示当前有效的用户名称。

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

su命令

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

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

注意:

只要是切换用户,用su命令时,建议都加上“-”选项。*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 afsddrwx------. 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.bakdrwx------. 3 root root 17 12月 11 21:44 systemd-private-c217caa1a96346558f12846a2bd8578e-vmtoolsd.service-6M74ui-rw-rw-r--. 1 user1user1 4 12月 11 05:18 user1.txt-rw-rw-r--. 1 user1user1 32 12月 11 04:51 11.txt-rw-rw-r--. 1 user1user1 0 12月 11 04:47 31.txtdrwxr-xr-x. 5 root root 165 12月 11 03:06 cc1drwx------. 3 root root 17 12月 10 23:24 systemd-private-9d4aad44896544c58d28c12c36634e21-vmtoolsd.service-QpOAYE[root@greenfinch ~]# id greenfinchuid=1000(greenfinch) gid=1000(greenfinch) 组=1000(greenfinch)[root@greenfinch ~]# date 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 - user3su: 警告:无法更改到 /home/user3 目录: 没有那个文件或目录-bash-4.2$ mkdir /home/user3mkdir: 无法创建目录"/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 pts/0 上-bash-4.2$ pwd/home/user3-bash-4.2$ 登出[root@greenfinch ~]# su - greenfinch上一次登录:日 12月 17 00:55:11 CST pts/0 上[greenfinch@greenfinch ~]$ ls -la&& 查看到用户greenfinch的目录下有4个.bash*的配置文件。总用量 16drwx------. 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 .bash_logout-rw-r--r--. 1 greenfinch greenfinch 193 12月 3 .bash_profile-rw-r--r--. 1 greenfinch greenfinch 231 12月 3 .bashrc[greenfinch@greenfinch ~]$ 登出[root@greenfinch ~]# ls -la /etc/skel&&几个.bash*配置文件所在的路径总用量 24drwxr-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 .bash_logout-rw-r--r--. 1 root root 193 12月 3 .bash_profile-rw-r--r--. 1 root root 231 12月 3 .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 pts/0 上[user3@greenfinch ~]$ iduid=1004(user3) gid=1004(user3) 组=1004(user3) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

3.8sudo命令

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

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

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

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

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

输入命令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.txtcat: /root/1.txt: 权限不够[greenfinch@greenfinch ~]$ sudo /usr/bin/cat /root/1.txtHello world.

扩展知识

sudo配置文件样例:www./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 -”

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。