谦卑的程序员






         静水流深

November 17, 2008

关于Ubuntu Server的root用户

Filed under: 1.9 操作系统 — Eric Tou @ 10:41 pm
Tags: , , ,

环境:Ubuntu Server 8.10

  Ubuntu Server除了在安装的过程中会提示设置第一个用户(非root)的用户名和密码,直至安装完成都完全没有涉及到root用户的设置。root用户的密码是什么,又要如何设置root用户,对于刚刚开始使用的用户来说,比较让人困惑。

概述

  这里是Ubuntu Server的官方文档关于该主题的相关章节,其解释如下:

  Ubuntu开发者决定默认禁用root账号,这并不意味着root账号被删除了或是不能访问。它只是被赋予了一个难以破解的密码,因此不应直接用其登录。

  相替代地,用户被鼓励使用一个名为sudo的工具在执行系统的管理任务,sudo允许被认证的用户通过他们自己的密码临时获取root的权限,而无需知道root帐户的密码。这种简单有效的方法为所有用户的行为提供了可述性,并且给予了管理员诸如一个用户给予特定权限后可以执行那些操作这样的粒度控制。

  默认地,Ubuntu安装时创建的第一个用户属于”admin”组的一员,而”admin”组作为已认证的sudo用户已被添加到了/etc/sudoers文件中。

Sudo简单应用

  使用创建的第一个用户(比如Bob)登录后,如果要执行需root权限的命令,比如reboot,则输入

sudo reboot

  命令执行时会提示输入Bob的密码,在15分钟内有效,即在15分钟内再使用sudo命令无需重复输入密码。

 

  如果因为某些原因需要启用root用户,需要赋予root一个密码

sudo passwd root

  系统会提示输入Bob的密码,并为root设置新的密码

[sudo] password for username: (enter your own password)
Enter new UNIX password: (enter a new password for root)
Retype new UNIX password: (repeat new password for root)
passwd: password updated successfully

 

  使用完毕后,应该立即锁定root用户。

sudo passwd -l root

 

  如果你想要让其他的用户通过sudo获得完整的root权限,你只需要简单地将其加入到admin用户组中即可。比如新用户Sam

sudo adduser sam
sudo adduser sam admin

 

Sudo的特点

  Redhat发行版的Linux中(Redhat,RHEL,Fedora)默认使用的是su,而Debian发行版的Linux中(Debian,Ubuntu)则默认启用了sudo。su为切换用户,在执行命令时实际上是切换为root用户运行,切换时需要输入root的密码。而启用sudo,默认将root用户锁定,密码未知,执行相应命令时输入当前用户的密码,由sudo用户判断是否有相应权限。此外

  1.sudo能够限制指定用户在指定主机上运行某些命令。
  2.sudo可以提供日志,忠实地记录每个用户使用sudo做了些什么,并且能将日志传到中心主机或者日志服务器。
  3.sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。它默认的存放位置是/etc/sudoers。
  4.sudo使用时间戳文件来完成类似“检票”的系统。当用户执行sudo并且输入密码后,用户获得了一张默认存活期为15分钟的“入场券”(默认值可以在编译的时候改变)。超时以后,用户必须重新输入密码。

  

  以下是一些个人的总结

  安全角度:sudo默认将root锁定,无论是本地、远程,SSH或桌面都无法登录,想要字典暴力破解root基本是不可能,想要破解只能从其他用户下手。首先得知道用户名,其次破解了该用户也未必有足够的权限。

  用户角度:执行命令时需要输入密码以提醒用户再次确认,同时输入密码有一定的有效期,避免了以root登录可以在任何时候做任何事的情况。

  管理角度:可以为不同的用户指定不同的权限(要实现这个还需要进一步学习sudo的配置),而且还可以通过日志记录用户的操作。

November 6, 2008

VMWare克隆后Ubuntu的"No such device eth0"错误

Filed under: 1.9 操作系统 — Eric Tou @ 10:30 pm
Tags: , , , ,

环境:VMWare 6.5,Ubuntu 8.10 Server

  在本地为Ubuntu创建VMWare的虚拟机后,复制,创建一个新的克隆镜像,启动,网卡无效,显示错误”eth0: ERROR while getting interface flags: No such device”。

原因

  新克隆的虚拟机镜像的网卡mac地址已经变更。打开虚拟机的.vmx文件,ethernet0.generatedAddress项记录了该虚拟机的mac地址。

查看所有适配器信息

ifconfig -a

发现除了原来的eth0外,Ubuntu已经将新网卡命名为eth1。
Ubuntu保存网卡mac地址和设备名的配置文件在

/etc/udev/rules.d/70-persistent-net.rules

网卡的网络配置保存在

/etc/network/interfaces

该配置文件中只有原来eth0的配置信息。

 
解决方案1

移动/删除rules文件。(未验证)
重启后Ubuntu会创建新的rules文件。
将新网卡辨认为eth0,沿用原eth0的网络配置。
如果网络配置是自动获取IP,则无需做其他修改。

sudo mv /etc/udev/rules.d/70-persistent-net.rules
    /etc/udev/rules.d/70-persistent-net.rules.old

解决方案2

修改rules文件。(未验证)

sudo pico /etc/udev/rules.d/70-persistent-net.rules

原内容如下

# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
    ATTR{address}=="00:0c:29:50:xx:xx", ATTR{type}=="1", NAME="eth0"

# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
    ATTR{address}=="00:0c:29:36:xx:xx", ATTR{type}=="1", NAME="eth1"

删除eth1的配置,用eth1的mac地址替代eth0的mac地址。

# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
    ATTR{address}=="00:0c:29:36:xx:xx", ATTR{type}=="1", NAME="eth0"

重启后Ubuntu同样会将新网卡辨认为eth0,沿用原eth0的网络配置。
如果网络配置是自动获取IP,则无需做其他修改。

解决方案3

修改interfaces文件。(已验证)

sudo pico /etc/network/interfaces

将所有的eth0替换为eth1。
如果是静态地址则同时修改相应设置。

November 5, 2008

Ubuntu Server网络配置

Filed under: 1.9 操作系统 — Eric Tou @ 8:37 pm
Tags: , , ,

环境:Ubuntu Server 8.10

  Ubuntu Server默认没有安装图形界面,网络配置需通过命令行来完成。

  如果是自动获取IP,Ubuntu会自行完成网络配置。如果要设置静态IP,在安装Ubuntu时或安装完成后都可以进行设置。

1.安装时设置

  用Ubuntu安装光盘启动后,出现选择语言界面,选择后,注意将光标停留在”Install Ubuntu Server”,按F6 – Other Options,在Base Options栏末尾输入

netcfg/disable_dhcp=true

ubuntu_install

  之后的安装过程中会逐步提示输入网络配置信息。

2.安装后设置

2.1 设置主机名

2.1.1 查看主机名

sudo hostname

2.1.2 临时修改主机名,命令执行后即时生效

sudo hostname yourhostname

2.1.3 永久修改主机名,将新的主机名写入,重启系统后生效

sudo pico /etc/hostname

2.2 设置IP地址及网关

2.2.1 查看网络配置,如果返回结果中只有lo,表示网卡未被配置

sudo ifconfig

2.2.2 临时修改IP地址,命令执行后即时生效。系统重启后,恢复原来的设置

sudo ifconfig eth0 xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx

2.2.3 查看路由信息

sudo route

2.2.4 临时修改缺省网关,命令执行后即时生效。系统重启后,恢复原来的设置

sudo route add default gw xxx.xxx.xxx.xxx

2.2.5 临时删除缺省网关,命令执行后即时生效。系统重启后,恢复原来的设置

sudo route del default gw

2.2.6 永久修改IP地址及网关

编辑保存网络配置的interfaces文件

sudo pico /etc/network/interfaces

默认的配置是DHCP自动分配,内容如下

auto eth0
iface eth0 inet dhcp

将其修改为,其中network和broadcast项不是必须

auto eth0
iface eth0 inet static
address xxx.xxx.xxx.xxx
netmask xxx.xxx.xxx.xxx
network xxx.xxx.xxx.xxx
broadcast xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx

2.2.7 让永久修改后的新配置生效

方法一:重启Ubuntu

sudo reboot

方法二:使用重启networking命令

sudo /etc/init.d/networking restart

方法三:重启网卡,优点是可以指定网卡,不影响其他网络接口

sudo ifdown eth0
sudo ifup eth0

2.3 设置DNS地址

编辑保存DNS信息的配置文件

sudo pico /etc/resolv.conf

最多可以使用3个DNS地址,内容如下

nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx

对resolv.conf文件的修改是即时生效的,可以使用nslookup命令进行查询。

WPMU Theme pack by WPMU-DEV.