centos visudo(centos7 vi命令)
如何在CentOS 7.2下安装 Emacs
打开终端提交回答
sudo yum install emacs提交回答
输入你的root密码然后回车确定
但是问题不是这么简单,出现 XXX is not in the sudoers file的问题。。。
解决方案:
首需要切换到root身份
$su-
(注意有-,这和su是不同的,在用命令"su"的时候只是切换到root,但没有把root的环境变量传过去,还是当前用户的环境变量,用"su-"命令将环境变量也一起带过去,就象和root登录一样)
然后
$visudo//切记,此处没有vi和sudo之间没有空格
1、移动光标,到最后一行(最好是找到root ALL=(ALL)
ALL,在下面添加一行)
2、按a,进入append模式
3、输入
your_user_name ALL=(ALL) ALL
4、按Esc
5、输入“:w”(保存文件)
6、输入“:q”(退出)
这样就把自己加入了sudo组,可以使用sudo命令了。
问题是这个问题又衍生另一个问题,就是:
[root@VM_207_245_centos~]# visudo
visudo:/etc/sudoers busy, try again later
。。。
没退出vi,退出一次就好
CentOS系统常规初始化操作详解
环境准备:
1)设置本地国际化语言为en_US.UTF-8
[root@c58~]#sed-i's/^\(LANG=\).*$/\1en_US.UTF-8/'/etc/sysconfig/i18n
[root@c58~]#cat/etc/sysconfig/i18n
LANG=en_US.UTF-8
[root@c58~]#LANG=en_US.UTF-8
2)更新系统软件包
备份默认yum源:
find/etc/yum.repos.d-name'*.repo'-execmv{}{}.bak\;
添加163yum源:
redhat5或centos5:
wget
redhat6或centos6
wget
添加epel yum源:
redhat5.x 32bit:
rpm-ivh
redhat5.x 64bit:
rpm-ivh
redhat6.x 32bit:
rpm-ivh
redhat6.x 64bit:
rpm-ivh
更新证书:
yum-yupgradeca-certificates--disablerepo=epel
更新系统所有软件包:
yumcleanallyummakecacheyum-yupgrade
下文以redhat5/centos5为例
一、服务最小化原则
关闭所有开机自启动服务,仅开启sshd、crond、network、iptables、syslog(redhat5)、rsyslog(redhat6),然后在此基础上按需添加需要开机启动的服务。
1)关闭所有开机自启动服务
[root@c58~]#foriin`chkconfig--list|awk'{if($1~/^$/){exit0;}else{print$1}}'`;dochkconfig$ioff;done
2)开启基础服务
[root@c58~]#foriinsshdnetworksyslogcrondiptables;dochkconfig$ion;done
3)查看开启的服务
[root@c58~]#chkconfig--list|grep'3:on'
crond0:off1:off2:on3:on4:on5:on6:off
iptables0:off1:off2:on3:on4:on5:on6:off
network0:off1:off2:on3:on4:on5:on6:off
sshd0:off1:off2:on3:on4:on5:on6:off
syslog0:off1:off2:on3:on4:on5:on6:off
二、用户登录限制
1)禁止使用root用户使用远程ssh
[root@c58~]#cd/etc/ssh
[root@c58ssh]#cpsshd_configsshd_config~
[root@c58ssh]#sed-i's/#\(PermitRootLogin\)yes/\1no/'sshd_config
[root@c58ssh]#grep'PermitRoot'/etc/ssh/sshd_config
PermitRootLoginno
2)禁用登录提示信息
[root@c58ssh]#/etc/motd
3)修改ssh的默认监听端口(tcp:22)
#这里修改为tcp的11983端口
[root@c58ssh]#sed-i's/#\(Port\)22/\11983/'sshd_config
[root@c58ssh]#grep'Port'sshd_config
Port11983
4)只允许指定的ip可以ssh(可选)
方法1(使用tcpwrapper):
#只允许192.168.124.0网段的ip使用ssh
echosshd:192.168.124.0/255.255.255.0/etc/hosts.allow
echosshd:ALL/etc/hosts.deny
方法2(使用iptables):
#注意,远程操作时需留心,以免把自己也拒绝而导致无法远程连接。如只允许192.168.1.0网段的所有ip进行ssh,其他所有ip都拒绝#先允许自己的ip,以防被后面的操作误伤
iptables-IINPUT-s10.0.0.1-ptcp--dport22-jACCEPT
#允许192.168.1.0网段
iptables-I2INPUT-s192.168.1.0/24-ptcp--dport22-jACCEPT
#拒绝所有
iptables-I3INPUT-ptcp--dport22-jDROP
#保存iptables的设置:
cp/etc/sysconfig/iptables/etc/sysconfig/iptables~
iptables-save/etc/sysconfig/iptables
最后,重启sshd服务使上面配置生效(不用担心重启时已打开的远程终端连接会断开,重启只会对新开的终端生效)
[root@c58ssh]#/etc/init.d/sshdrestart
Stoppingsshd:[OK]
Startingsshd:[OK]
三、用户及命令权限最小化
创建一个普通用户tom,将其加入sudo组,该用户作为系统管理员
groupaddsudo#创建sudo组
useradd-Gsudotom#创建tom用户,加入sudo组
passwdtom#设置tom用户的登陆密码
修改sudo配置文件,授权sudo组的用户可以以root身份执行所有命令(可以针对不同用户授予不同的命令执行权限,这里允许执行所有命令,生产环境中系统管理员应该按需为用户分配尽可能少的可执行命令,以实现权限最少化),用户执行的所有sudo操作都将记录在/var/log/sudo.log中,以便日后的安全事件排查。执行命令如下:
[root@cloud~]#cat/etc/sudoersEOF
%sudoALL=(root)ALL
Defaultslogfile=/var/log/sudo.log
EOF
[root@cloud~]#visudo-c
[root@cloud~]#echolocal2.debug/var/log/sudo.log/etc/syslog.conf
[root@cloud~]#/etc/init.d/syslogrestart
注:visudo-c命令用于检查/etc/sudoers文件的语法正确性
四、内核安全参数设置
vim/etc/sysctl.conf#添加如下内容:
#关闭对ping包的响应(可选,一般不建议,因为不方便网络故障时的排查)
net.ipv4.icmp_echo_ignore_all=1
#关闭对广播ping的响应
net.ipv4.icmp_echo_ignore_broadcasts=1
#开启syncookie用于防范synflood攻击,当出现syn等待队列溢出时(syn数量超过tcp_max_syn_backlog的设置值),启用cookie来处理,server在回复syn_ack前会先请求client回复一个序列号,该序列号中要求包含原先syn包中的信息,如果序列号不正确,则server端会忽略此syn连接。
net.ipv4.tcp_syncookies=1
#设置sync_ack的最大重传次数,默认值为5,范围0-255,重传5次的时间大约为180s
net.ipv4.tcp_synack_retries=3
#设置当keepalive打开的情况下,keepalive消息的发送间隔,默认为2小时(由于目前网络攻击等因素,造成了利用这个进行的攻击很频繁,如果两边建立了连接,然后不发送任何数据或者rst/fin消息,那么持续的时间就是2小时,成就了空连接攻击,tcp_keepalive_time就是预防此情形的.)
net.ipv4.tcp_keepalive_time=1200
保存退出后,执行sysctl-p命令将以上设置加载到内核使其立刻生效
五、内核性能相关参数设置(可选)
vim/etc/sysctl.conf#添加如下内容:
#设置syn等待队列的长度,对于内存大于128M的机器,默认值是1024,在并发请求较大时,可以调大该值
net.ipv4.tcp_max_syn_backlog
#开启timewait重用。允许将time_waitsocket重新用于新的tcp连接
net.ipv4.tcp_tw_reuse=1
#开启tcp连接中time_waitsocket的快速回收
net.ipv4.tcp_tw_recycle=1
#TCP发送keepalive探测以确定该连接已经断开的次数,默认值为9
net.ipv4.tcp_keepalive_probes=5
#指定探测消息发送的频率,该值乘以tcp_keepalive_probes就可以得到从开始探测到连接被删除所需的时间。默认值为75,也就是没有活动的连接将在大约11分钟以后将被丢弃。(对于普通应用来说,这个值有一些偏大,可以根据需要改小.特别是web类服务器需要改小该值,15是个比较合适的值)
net.ipv4.tcp_keepalive_intvl=15
#表示系统同时保持TIME_WAITsocket的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并输出警告信息。默认为180000,改为5000.对于squid服务器来说,此参数可以控制TIME_WAIT套接字的最大数量,避免squid服务器被大量的TIME_WAITsocket拖死。
net.ipv4.tcp_max_tw_buckets=5000
#表示向外连接的端口范围。默认值很小:32768~61000,改为1024~65000
net.ipv4.ip_local_port_range=102465000
保存退出后,执行sysctl-p命令将以上设置加载到内核使其立刻生效
CentOS上配置VirtualBox虚拟机及安装Windows的教程
开始之前,首先需要使用 VirtualBox最小化安装 CentOS 7.0。
系统设置
使用 root账号登录,进行系统设置。
安装组件
安装系统必须的组件。
复制代码
代码如下:
yum install gcc bzip2 kernel-devel wget
修改主机名称
设置一个便于识别的主机名称,便于以后使用 ssh登录时方便识别。
复制代码
代码如下:
vi/etc/hostname
SSH设置
取消 DNS解析,使 ssh登录更快。编辑/etc/ssh/sshd_config文件,更改以下配置项:
复制代码
代码如下:
UseDNS no
安装 VBoxGuestAdditions
安装了 VBoxGuestAdditions后才可以使用共享目录的功能。
注意:此时需要重启一下系统,否则可能无法继续安装。
点击 VirtualBox运行界面的 Devices菜单,选择 Insert Guest Additions CD Image。
挂载光盘并安装 VBoxGuestAdditions
复制代码
代码如下:
mkdir/media/cdrom
mount/dev/cdrom/media/cdrom
/media/cdrom/VBoxLinuxAdditions.run
umount/media/cdrom
rm-rf/media/cdrom
用户配置
设置 root用户密码为 vagrant。
创建 vagrant用户,密码与用户名相同。
配置 vagrant用户执行 sudo命令时不需要输入密码。并且可以后台执行指令。运行 visudo命令。然后添加如下配置:
复制代码
代码如下:
vagrant ALL=(ALL) NOPASSWD: ALL
Defaults requiretty
设置 vagrant用户证书,使其可以无密码登录系统
复制代码
代码如下:
cd/home/vagrant
mkdir.ssh
wget--no-check-certificate
chmod 700.ssh
chmod 600.ssh/authorized_keys
chown-R vagrant:vagrant.ssh
清理系统
清理临时文件以减小制作出来的 Box文件体积。
复制代码
代码如下:
yum clean all
rm-rf/tmp/*
rm-f/var/log/wtmp/var/log/btmp
history-c
然后关闭虚拟系统。
打包
回到物理机终端,使用下面的命令打包输出 box.
复制代码
代码如下:
vagrant package--base [virtualbox name]--output [box name].box
创建一个 windows的虚拟环境
开始之前,需要先准备一个 windows的安装文件,如 win2003.iso。
使用命令行创建 VirtualBox虚拟机
创建一个名为 win2003的虚拟机:
复制代码
代码如下:
vboxmanage createvm--name win2003--register
设置虚拟机
复制代码
代码如下:
#设置系统类型
vboxmanage modifyvm win2003--ostype Windows2003
#开启电源管理
vboxmanage modifyvm win2003--acpi on
#设置系统内存
vboxmanage modifyvm win2003--memory 512
#添加网卡,网络模式为 NAT
vboxmanage modifyvm win2003--nic1 nat
创建一个的虚拟硬盘,容量为 5G
复制代码
代码如下:
vboxmanage createhd--filename win2003.vdi--size 5000
绑定虚拟硬盘
复制代码
代码如下:
#创建虚拟机的硬盘控制器
vboxmanage storagectl win2003--name HDD--add ide--bootable on
#绑定创建的虚拟硬盘
vboxmanage storageattach win2003--storagectl HDD--port 0--device 0--type hdd--medium win2003.vdi
添加光驱并绑定系统安装文件
复制代码
代码如下:
vboxmanage storageattach win2003--storagectl HDD--port 0--device 1--type dvddrive--medium win2003.iso
启动并安装系统
复制代码
代码如下:
vboxheadless-s win2003
在桌面环境的电脑上使用远程桌面软件,连接服务器的 3389端口就可以看到虚拟机的画面,并进行安装操作了。
使用 vboxheadless命令启动的虚拟机是会话模式的,而且默认启用了远程桌面功能 VRDP。适合首次运行虚拟机安装系统。安装完系统后,想要以后台服务的方式运行,应当使用 vboxmanage startvm命令:
复制代码
代码如下:
vboxmanage startvm win2003--type headless
安装增强包
VirtualBox默认安装好系统后,使用起来不是很顺畅。特别是鼠标操作时,迟滞感十分严重。安装增强包可以明显改善操作感。首先下载 VirtualBox Guest Additions增强包: VBoxGuestAdditions_4.3.20.iso。然后使用下面的命令挂载增强包到光驱:
复制代码
代码如下:
vboxmanage storageattach win2003--storagectl HDD--port 0--device 1--type dvddrive--medium VBoxGuestAdditions_4.3.20.iso
然后启动系统,双击光驱盘符,执行安装程序后重启完成。
添加共享目录
共享目录方便虚拟机和主机之间交换文件,使用下面的命令进行共享目录的添加和删除:
添加共享目录:
复制代码
代码如下:
vboxmanage sharedfolder add win2003--name share-name--hostpath/host/path/folder/--automount
删除共享目录:
复制代码
代码如下:
vboxmanage sharedfolder remove win2003--name share-name
其它常用技巧
1.添加 NAT网络模式下的端口转发
复制代码
代码如下:
#添加远程桌面的转发
vboxmanage modifyvm vmname--natpf1"remote desktop,tcp,,33089,,3389"
vboxmanage modifyvm vmname--natpf2"remote desktop,udp,,33089,,3389"
2.关闭虚拟机
复制代码
代码如下:
vboxmanage controlvm vmname poweroff
3.开机自动启动虚拟机
设置自动开机的数据库路径:
复制代码
代码如下:
vboxmanage setproperty autostartdbpath/etc/vbox
添加要开机启动的虚拟机:
复制代码
代码如下:
vboxmanage modifyvm vmname--autostart-enabled on--autostop-type acpishutdown
启动管理服务:
复制代码
代码如下:
service vboxautostart-service restart