目录
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的配置文件里