linux学习lesson13

本文详细介绍了Linux系统中su和sudo命令的使用方法,包括切换用户环境、临时获取root权限执行特定命令及配置sudo权限。同时,文章还讲解了如何通过编辑sudoers文件来精确控制用户权限,以及如何限制root用户远程登录,提高服务器安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1 su命令

2 sudo命令

3 限制root远程登录


1 su命令

  • 命令su的格式为su [-] username,-表示把该用户的环境变量也切换
[root@worker1 ~]# su - user3

Last login: Wed Sep 19 06:45:53 CST 2018 on pts/1

[user3@worker1 ~]$ whoami

user3

[user3@worker1 ~]$ id

uid=1111(user3) gid=1100(grp2) groups=1100(grp2),1002(user2)
  • 在root环境下,以user3用户环境在tmp目录创建file5.txt
[root@worker1 ~]# su - -c "touch /tmp/file5.txt" user3

[root@worker1 ~]# ls /tmp/

dir1  dir2  file5.txt  lesson8  lesson9  yum.log
  • 切换到user6,发现没有家目录,可以使用ctrl+d退出
[root@worker1 ~]# su - user6

su: warning: cannot change directory to /home/user6: No such file or directory

-bash-4.2$
  • 将user6的家目录需要文件补全
root@worker1 ~]# mkdir /home/user6

[root@worker1 ~]# ls -al /etc/skel/

total 24

drwxr-xr-x.  2 root root   59 Sep  5 22:52 .

drwxr-xr-x. 75 root root 8192 Sep 19 07:05 ..

-rw-r--r--.  1 root root   18 Nov 20  2015 .bash_logout

-rw-r--r--.  1 root root  193 Nov 20  2015 .bash_profile

-rw-r--r--.  1 root root  231 Nov 20  2015 .bashrc

[root@worker1 ~]# cp /etc/skel/.bash* /home/user6/

[root@worker1 ~]# chown -R user6:user6 /home/user6/

[root@worker1 ~]# su - user6

Last login: Wed Sep 19 07:05:43 CST 2018 on pts/0

[user6@worker1 ~]$

 

2 sudo命令

  • sudo可以不用切换到root用户下,可以临时拥有root权限执行命令,这可以可以避免登录root用户,造成root密码泄露
  • 需要编辑/etc/sudoers文件,增加这个命令权限,不用vi命令,而使用visudo命令编辑,而且还可以检查编辑后文件的语法是否正确

visudo命令编辑配置文件

根据root ALL=(ALL) ALL的模式

增加user3 ALL=(ALL) ALL (ALL)代表获取哪个用户权限,右二ALL 代表所有命令

[user3@worker1 ~]$ ls /root/

ls: cannot open directory /root/: Permission denied

[root@worker1 ~]# visudo //增加user3 ALL=(ALL) ALL

[user3@worker1 ~]$ sudo ls /root/ //第一次使用会有提示



We trust you have received the usual lecture from the local System

Administrator. It usually boils down to these three things:



    #1) Respect the privacy of others.

    #2) Think before you type.

    #3) With great power comes great responsibility.



[sudo] password for user3:

anaconda-ks.cfg  file1.txt.bak    file.txt      hard.txt.bak

dir1         file2.txt.bak    file_windows.txt

限制user3的sudo使用的命令:/bin/ls, /bin/cat,其他的命令会有受限制

修改为:user3 ALL=(ALL) /bin/ls, /bin/cat

[user3@worker1 ~]$ sudo ls /root/

anaconda-ks.cfg  file1.txt.bak    file.txt      hard.txt.bak

dir1         file2.txt.bak    file_windows.txt

[user3@worker1 ~]$ sudo cat /root/file.txt

hello world

[user3@worker1 ~]$ sudo mv /root/file.txt /root/file12.txt //因为mv命令没有授权

Sorry, user user3 is not allowed to execute '/bin/mv /root/file.txt /root/file12.txt' as root on worker1.

设置sudo命令执行命令,免密码输入

修改为:user3 ALL=(ALL) NOPASSWD: /bin/ls, /bin/cat

设置sudo命令中可允许执行的命令限制别名

修改为:Cmmd_Alias AMING_CMD = /bin/ls, /bin/cat

user3 ALL=(ALL) AMING_CMD

如果有多个用户需要设置sudo命令权限,可以将用户加到同一个组里,然后一起配置权限即可

修改为:Cmmd_Alias AMING_CMD = /bin/ls, /bin/cat

%wheel ALL=(ALL) AMING_CMD wheel为组名 AMING_CMD为允许执行的命令

 

3 限制root远程登录

  • 为了服务器安全,一般限制root用户远程登录,这样可以避免泄露root密码
  • 配置文件为/etc/ssh/sshd_config
[root@worker1 ~]# vi /etc/ssh/sshd_config

找到:#PermitRootLogin yes

改为:PermitRootLogin no

[root@worker1 ~]# systemctl restart sshd.service //重启sshd服务,生效

  • 使用putty工具root用户登陆,无法登录

 

扩展
sudo与su比较

http://www.apelearn.com/bbs/thread-7467-1-1.html 
sudo配置文件样例  
www.opensource.apple.com/source/sudo/sudo-16/sudo/sample.sudoers

sudo不错的教程

http://www.jianshu.com/p/51338e41abb7

sudo -i 也可以登录到root吗?  可以,前提是当前的普通用户要在sudoers的配置文件里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值