Linux操作系统基础

本文章内容简介


vLinux简介
vUbuntu安装
v常用指令介绍
v软件包管理
vVIM编辑器的使用
v用户和组账户管理
v文件权限管理
v软件的安装及删除
     ›Jdktomcat, eclipse
v远程登录



Linux简介

Linux是一个自由的,免费的,源码开放的操作系统。也是开源软件中最著名的例子。其最主要的目的就是为了建立不受任何商品化软件版权制约的,全世界都能使用的类Unix兼容产品.

Linux的产生

vLinux最初是由芬兰赫尔辛基大学学生Linus Torvalds由于自己不满意教学中使用的MINIX操作系统,所以在1990年底由于个人爱好设计出了LINUX系统核心。后来发布于芬兰最大的ftp服务器上,用户可以免费下载,所以它的周边的程序越来越多,Linux本身也逐渐发展壮大起来,之后Linux在不到三年的时间里成为了一个功能完善,稳定可靠的操作系统.

Linux的特点

开放性,多用户,多任务,丰富的网络功能,可靠的系统安全,良好的可移植性,具有标准兼容性,良好的用户界面    (命令界面,图形界面等),出色的速度性能


基于GPL(通用公共许可证)

Linux的组成

内核:是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序。

Shell:是系统的用户界面,提供了用户和内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器。但它不仅使命令解释器,而且还是高级编程语言,shell编程

文件系统:文件系统是文件存放在磁盘等存储设备上的组织方法,Linux支持多种文件系统,如ext3,ext2,NFS,SMB,iso9660

应用程序:标准的Linux操作系统都会有一套应用程序例如X-Window,Open Office

Linux版本

发行版本:是一些厂商将Linux系统内核与应用软件和文档包装起来,并提供一些安装界面和系统设定管理工具的一个软件包的集合,例如RedHatLinuxDebianUbuntu,Novell/SuSE Linux等。

Ubuntu版本号由该次发布的年份和月份组成,并未反映其实际版本.首次发布是在200410月,因此该版本为4.10。于2009年4月23日发布,因此版本号为9.04。 

Linux发展与未来

现在有很多公司都在使用Linux操作系统,Linux操作系统从桌面到服务器,从操作系统到嵌入式系统,从零散的应用到整个产业都初见雏形。Linux服务器操作系统在整个服务器操作系统市场格局中占据了越来越多的市场份额,并且形成了大规模的应用局面.



Ubuntu安装

安装步骤

一.    安装Vmware 虚拟机

第1步:执行 VMware-workstation-full-7.0.1.227600.exe

第2步:选择Typical安装

第3步:选择安装路径

第4步:安装 VMware完毕 restart Later

二.    安装Linux

第5步: 安装Linux 选择 File –》New—》Virtual Machine

第6步:选择Typical

第7步: 选择 Ubuntu 安装镜像

第8步:个人信息录入 (注意:user name 不能为root)

第9步:选择 Ubuntu 安装目录

第10步:Next

第11步:Finish

第12步: 开始安装

第13步:Linux 安装完成 进入登录界面


Linux目录结构

bin  存放二进制可执行文件(ls,cat,mkdir)
boot  存放用于系统引导时使用的各种文件
dev用于存放设备文件
etc  存放系统配置文件
home存放所有用户文件的根目录
lib  存放跟文件系统中的程序运行所需要的共享库及内核模块
mnt  系统管理员安装临时文件系统的安装点
opt  额外安装的可选应用程序包所放置的位置
proc  虚拟文件系统,存放当前内存的映射
root  超级用户目录
sbin  存放二进制可执行文件,只有root才能访问
tmp  用于存放各种临时文件
usr  用于存放系统应用程序,比较重要的目录/usr/local本地管理员软件安装目录
var  用于存放运行时需要改变数据的文件


常用指令介绍

文件目录操作命令

›ls 显示文件和目录列表  
-l 列出文件的详细信息
-a 列出当前目录所有文件,包含隐藏文件

›mkdir创建目录  

-p 父目录不存在情况下先生成父目录›

cd 切换目录

touch 生成一个空文件
echo 生成一个带内容文件
cat、tac显示文本文件内容
›cp复制文件或目录
›rm删除文件
-r 同时删除该目录下的所有文件
-f 强制删除文件或目录
›mv 移动文件或目录、文件或
mv aaabbb将aaa改名为bbb
›find 在文件系统中查找指定的文件

-name 文件名

›wc统计文本文档的行数,字数,字符数

›grep在指定的文本文件中查找指定的字符串

›rmdir删除空目录
›tree 显示目录目录改名树
›pwd显示当前工作目录
›ln 建立链接文件
›more、less 分页显示文本文件内容
head,tail分别显示文件开头和结尾内容

系统管理命令

stat 显示指定文件的相关信息 , ls 命令显示内容更多
who 显示 在线登录 用户
hostname 显示主机名称
uname 显示系统信息
top 显示当前系统中耗费资源最多的进程
ps 显示瞬间的进程状态
du 显示指定的文件(目录)已使用的磁盘空间的总量
df 显示文件系统磁盘空间的使用情况 
free 显示当前内存和交换空间的使用情况
ifconfig 显示网络接口信息
ping 测试网络的连通性
netstat 显示网络状态信息
man 命令帮助信息查询
alias 设置命令别名
clear 清屏
kill 杀死一个进程


*******************************详细说明*********************************
stat 显示指定文件的相关信息 
cd /home/itcast
stat familyA


who、w 显示在线登录用户 
who


whoami 显示用户自己的身份 


hostname 显示主机名称 
hostname
hostname -i 显示主机IP


uname 显示系统信息 
uname -a 显示全部信息 




top 显示当前系统中耗费资源最多的进程 动态显示过程,实时监控


ps 显示瞬间进程状态
ps -aux  显示所有瞬间进程状态


du 显示指定的文件(目录)已使用的磁盘空间的总量 .可以使用--help查看帮助
du
du familyA
du -h familyA


df 显示文件系统磁盘空间的使用情况 
df
df -h


free 显示当前内存和交换空间的使用情况


ifconfig 显示网络接口信息 


ping 测试网络的连通性 


netstat 显示网络状态信息 



备份压缩命令

gzip 压缩(解压)文件或目录,压缩文件后缀为 gz
bzip2 压缩(解压)文件或目录,压缩文件后缀为 bz2
tar 文件、目录打(解)包

gzip命令

命令格式:

gzip [ 选项 ] 压缩(解压缩)的文件名

参数:

-d 将压缩文件解压。
-l 对每个压缩文件,显示压缩文件的大小,未压缩文件的大小,压缩比,未压缩文件的名字
-v 对每一个压缩和解压的文件,显示文件名和压缩比。
- num 用指定的数字 num 调整压缩的速度, -1 --fast 表示最快压缩方法(低压缩比), -9 --best 表示最慢压缩方法(高压缩比)。系统缺省值为 6


gzip 命令示例


把/home/itcast目录下的familyA目录下所有文件压缩成.gz文件
cd /home/itcast
tar -cvf /home/itcast/familyA.tar /home/itcast/familyA 首先进行打包,因为gzip不能直接对目录进行压缩
gzip familyA.tar 进行压缩
gzip -l familyA.tar.gz 查看压缩包详细信息


解压缩familyA.tar
gzip -dv familyA.tar.gz
gzip -v -9 familyA.tar 高压缩比
gzip -l familyA.tar.gz




gzip -dv familyA.tar.gz
gizp -v -1 familyA.tar 低压缩比
gzip -l familyA.tar.gz







bzip2命令

命令格式:

bzip2 [-cdz] 档名


参数:

-d :解压缩的参数
-z :压缩的参数
- num 用指定的数字 num 调整压缩的速度, -1 --fast 表示最快压缩方法(低压缩比), -9 --best 表示最慢压缩方法(高压缩比)。系统缺省值为 6

bzip2 命令示例


把/home/itcast目录下的familyA目录下所有文件压缩成.bz2文件
cd /home/itcast
tar -cvf /home/itcast/familyA.tar /home/itcast/familyA
bzip2 -z familyA.tar 压缩需加上参数-z


解压缩itcast.tar.bz2
bzip2 -d familyA.tar.bz2 



tar命令

命令格式:

tar [- cxzjvf ]   压缩打包文档的名称 欲打包目录

参数:

-c :建立一个归档文件的参数指令
-x :解开一个归档文件的参数指令!
-z :是否需要用 gzip 压缩?
-j :是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件
-f :使用档名,在 f 之后要立即接档名
- tf :查看归档文件里面的文件




tar  命令示例


将整个/home/itcast/familyA目录下的文件全部打包成为/home/itcast/familyA.tar


仅打包,不压缩


tar -cvf /home/itcast/familyA.tar /home/itcast/familyA


打包后,以gzip压缩 gzip


tar -zcvf /home/itcast/familyA.tar.gz /home/itcast/familyA


打包后,以bzip2压缩 bzip2


tar -jcvf /home/itcast/familyA.tar.bz2 /home/itcast/familyA



# 特别注意,在参数f之后的文件档名是自己取的,我们习惯上都用.tar来作为辨识
# 如果加z参数,则以.tar.gz或.tgz来代表gzip压缩过的tar file
# 如果加j参数,则以.tar.bz2来作为文档名




关机/重启命令

shutdown 系统关机
- r 关机后重启
- h 关机后不重新启动
- now 立即关机
halt 关机后关闭电源
reboot 重新启动


Linux 通道

  简单地说,一个通道接受一个工具软件的输出,然后把那个输出输入到其它工具软件。使用UNIX/Linux的词汇,这个通道接受了一个过程的标准输出,并把这个标准的输出作为另一个过程的标准输入。如果你没有重新定向这个输出,这个输出就在屏幕上显示出来。使用一个通道,你可以重新定向这个输出,这样它就变成了另一个工具软件的标准的输入。

  例如:grep best /home/*  | more 


软件包管理工具 

dpkg(DebianPackage)管理工具

dpkg(DebianPackage)管理工具 ,Ubuntu相关的软件包文件使用 .deb后缀,就是因为UbuntuDebian GNU/Linux 发行版有着紧密的关系。要安装.deb 文件可以打开一个终端并输入:
sudodpkg -ipackage_file.deb  来安装 .deb 文件。


如需卸载.deb 文件输入:
sudodpkg -r package_name   


利用dpkg安装tree



1.安装tree软件包


sudo dpkg -i tree_1.5.3-1_i386.deb




2.删除tree软件包


sudo dpkg -r tree


3.查看软件包中信息


sudo dpkg -c tree_1.5.3-1_i386.deb


4.查看Ubuntu系统已安装所有软件包列表


sudo dpkg -l

APT软件包管理(推荐使用)

APT (Advanced Packaging Tool高级软件包工具) 是一个强大的包管理系统,而那些图形化程序如添加/删除应用程序 都是建立 在它的基础之上的。有了dpkg,Debian再次开发了apt,它能自动处理依赖文件并维护已有的配置文件,快速,实用,高效


APT使用的一些常用命令:

安装软件包:
sudo apt-get install packagename   

删除软件包:
sudo apt-get remove packagename   

获取新的软件包列表:
sudo apt-get update  

升级有可用更新的系统:
sudo apt-get upgrade  

列出更多命令和选项:
apt-get help  


将 .rpm文件转为 .deb文件

对于软件包为 .rpm 后缀的 Red Hat 软件包管理器文件。我们并不建议在 Ubuntu 系统中安装它们。在绝大多数情况下, Ubuntu 自身的 .deb 软件包是可用的。然而,如果绝对必要,可以使用程序 alien .rpm 文件转化为 .deb 文件。
安装 alien 程序。

在终端使用管理权限运行以下命令:
sudo alien package_file.rpm


VIM编辑器的使用

VIM的运行模式

编辑模式:等待编辑命令输入
插入模式:编辑模式下,输入 i , o,a 进入插入模式,插入文本信息
命令模式:在编辑模式下,输入 “:” 进行命令模式

VIM 使用的命令

q 直接退出 vi
wq 保存后退出 vi ,并可以新建文件
q! 强制退出
w file 将当前内容保存成某个文件
set number 在编辑文件显示行号
set nonumber   在编辑文件不显示行号


VIM示例



在/home/itcast/目录下建立一个bank.txt文件


cd /home/itcast/familyA/
touch bank.txt
vim bank.txt

数据命令i 进入插入模式


输入内容
ICBC
RMB:10000000000
USD:100000000000
user:familyA.father


ctrl+C 退出插入模式或者敲ESC切换至命令模式


:wq 回车 保存




编辑bank.txt 内容不保存 退出


vim bank.txt

数据命令i 进入插入模式


随便输入内容

ctrl+C 退出插入模式或者敲ESC


:q! 回车 强制退出


编辑bank.txt 内容并显示行号


vim bank.txt

:set number 回车


:q 回车 正常退出



用户和组账户管理

linux操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源。系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰。 

用户账户

A.普通用户账户:普通用户在系统上的任务是进行普通操作

B.超级用户账户:管理员在系统上的任务是对普通用户和整个系统进行管理。对系统具有绝对的控制权,能够对系统进行一切操作。

组账户

A. 私有组:当创建一个用户时没有指定属于哪个组,Linux就会建立一个与用户同名的私有组,此私有组只含有该用户。

B.标准组:当创建一个用户时可以选定一个标准组,如果一个用户同时属于多个组时,登录后所属的组为主组,其他的为附加组。


账户系统文件 

A/etc/passwd每行定义一个用户账户,此文件对所有用户可读。每行账户包含如下信息:

      用户名:口令:用户标示号:组标示号:注释:宿主目录:命令解释器

      root:x:0:0:RedHatLinux:/root:/bin/bash

      口令是X,说明用户的口令是被/etc/shadow文件保护的

      用户标识号:系统内唯一,root用户的UID0,普通用户从1000开始,1-999是系统的标准账户

      宿主目录:用户登录系统后所进入的目录

      命令解释器:指定该用户使用的shell ,默认的是/bin/bash


B/etc/shadow 为了增加系统的安全性,用户口令通常用shadow passwords保护。只有root可读。每行包含如下信息:

      用户名:口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

      root:$1$K4gXdkjf$TIKrvWuldq6oQ4HEoFIGQ/:14831:0:99999:7:::

      最后一次修改时间:从1970-1-1起,到用户最后一次更改口令的天数

      最小时间间隔:从1970-1-1起,到用户可以更改口令的天数

      最大时间间隔:从1970-1-1起,必须更改的口令天数

      警告时间:在口令过期之前几天通知

     不活动时间:在用户口令过期后到禁用账户的天数



C/etc/group

      将用户进行分组时Linux对用户进行管理及控制访问权限的一种手段。一个组中可以有多个用户,一个用户可以同时属于多个组。该文件对所有用户可读。

      组名:组口令:gid:组成员

      root:x:0:root


D/etc/gshadow

      该文件用户定义用户组口令,组管理员等信息只有root用户可读。

      root:::root


使用命令行工具管理账户

useradd 用户名
useradd –u UID 号)
useradd –p (口令)
useradd –g (分组)
useradd –s SHELL
useradd –d (用户目录)
usermod –u (新 UID
usermod –d (用户目录)
usermod –g (组名)
usermod –s SHELL
usermod –p (新口令)
usermod –l (新登录名)
usermod –L ( 锁定用户账号密码 )
usermod –U ( 解锁用户账号 )
userdel 用户名 ( 删除用户账号 )
userdel –r 删除账号时同时删除目录

组账户维护命令

groupadd 组账户名 ( 创建新组 )
groupadd –g 指定组 GID
groupmod –g 更改组的 GID
groupmod –n 更改组账户名
groupdel 组账户名 ( 删除指定组账户 )

口令维护命令

passwd 用户账户名 ( 设置用户口令 )
passwd –l 用户账户名 ( 锁定用户账户 )
passwd –u 用户账户名 ( 解锁用户账户 )
passwd –d 用户账户名 ( 删除账户口令 )
gpasswd –a 用户账户名 组账户名 ( 将指定用户添加到指定组 )
gpasswd –d 用户账户名 组账户名 ( 将用户从指定组中删除 )
gpasswd –A 用户账户名 组账户名 ( 将用户指定为组的管理员 )

用户和组状态命令

su     用户名 切换用户账户

su root

su - root

id      用户名 显示用户的 UID GID

whoami     显示当前用户名称

groups     显示用户所属组

sudo

cat / etc / sudoers

关于sodu(sudo及其配置文件sudoers 




sudo是linux下常用的允许普通用户使用超级用户权限的工具。



它的主要配置文件是sudoers,linux下通常在/etc目录下,如果是solaris,缺省不装sudo的,编译安装后通常在安装目录的etc目录下,不过不管sudoers文件在哪儿,sudo都提供了一个编辑该文件的命令:visudo来对该文件进行修改。强烈推荐使用该命令修改sudoers,因为它会帮你校验文件配置是否正确,如果不正确,在保存退出时就会提示你哪段配置出错的。

言归正传,下面介绍如何配置sudoers

首先写sudoers的缺省配置:

#############################################################

# sudoers file.

#

# This file MUST be edited with the 'visudo' command as root.

#

# See the sudoers man page for the details on how to write a sudoers file.

#

# Host alias specification

# User alias specification

# Cmnd alias specification

# Defaults specification

# User privilege specification

root ALL=(ALL) ALL

# Uncomment to allow people in group wheel to run all commands

# %wheel        ALL=(ALL)    ALL

# Same thing without a password

# %wheel        ALL=(ALL)    NOPASSWD: ALL

# Samples

# %users   ALL=/sbin/mount /cdrom,/sbin/umount /cdrom

# %users   localhost=/sbin/shutdown -h now

##################################################################

1. 最简单的配置,让普通用户support具有root的所有权限

执行visudo之后,可以看见缺省只有一条配置:

root ALL=(ALL) ALL

那么你就在下边再加一条配置:

support ALL=(ALL) ALL

这样,普通用户support就能够执行root权限的所有命令

以support用户登录之后,执行:

sudo su -

然后输入support用户自己的密码,就可以切换成root用户了

2. 让普通用户support只能在某几台服务器上,执行root能执行的某些命令

首先需要配置一些Alias,这样在下面配置权限时,会方便一些,不用写大段大段的配置。Alias主要分成4种

Host_Alias

Cmnd_Alias

User_Alias

Runas_Alias

1) 配置Host_Alias:就是主机的列表

Host_Alias    HOST_FLAG = hostname1, hostname2, hostname3

2) 配置Cmnd_Alias:就是允许执行的命令的列表

Cmnd_Alias    COMMAND_FLAG = command1, command2, command3

3) 配置User_Alias:就是具有sudo权限的用户的列表

User_Alias USER_FLAG = user1, user2, user3

4) 配置Runas_Alias:就是用户以什么身份执行(例如root,或者oracle)的列表

Runas_Alias RUNAS_FLAG = operator1, operator2, operator3

5) 配置权限

配置权限的格式如下:

USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG

如果不需要密码验证的话,则按照这样的格式来配置

USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD: COMMAND_FLAG

配置示例:

############################################################################

# sudoers file.

#

# This file MUST be edited with the 'visudo' command as root.

#

# See the sudoers man page for the details on how to write a sudoers file.

#

# Host alias specification

Host_Alias    EPG = 192.168.1.1, 192.168.1.2

# User alias specification

# Cmnd alias specification

Cmnd_Alias    SQUID = /opt/vtbin/squid_refresh, /sbin/service, /bin/rm

# Defaults specification

# User privilege specification

root ALL=(ALL) ALL

support EPG=(ALL) NOPASSWD: SQUID

# Uncomment to allow people in group wheel to run all commands

# %wheel        ALL=(ALL)    ALL

# Same thing without a password

# %wheel        ALL=(ALL)    NOPASSWD: ALL

# Samples

# %users   ALL=/sbin/mount /cdrom,/sbin/umount /cdrom

# %users   localhost=/sbin/shutdown -h now

###############################################################

我们不可以使用su让他们直接变成root,因为这些用户都必须知道root的密码,这种方法很不安全,而且也不符合我们的分工需求。一般的做法是利用权限的设置,依工作性质分类,让特殊身份的用户成为同一个工作组,并设置工作组权限。例如:要wwwadm这位用户负责管理网站数据,一般Apache Web Server的进程httpd的所有者是www,您可以设置用户wwwadm与www为同一工作组,并设置Apache默认存放网页目录 /usr/local/httpd/htdocs的工作组权限为可读、可写、可执行,这样属于此工作组的每位用户就可以进行网页的管理了。 

但这并不是最好的解决办法,例如管理员想授予一个普通用户关机的权限,这时使用上述的办法就不是很理想。这时您也许会想,我只让这个用户可以以 root身份执行shutdown命令就行了。完全没错,可惜在通常的Linux系统中无法实现这一功能,不过已经有了工具可以实现这样的功能—— sudo。 

sudo通过维护一个特权到用户名映射的数据库将特权分配给不同的用户,这些特权可由数据库中所列的一些不同的命令来识别。为了获得某一特权项,有资格的用户只需简单地在命令行输入sudo与命令名之后,按照提示再次输入口令(用户自己的口令,不是root用户口令)。例如,sudo允许普通用户格式化磁盘,但是却没有赋予其他的root用户特权。 

1、sudo工具由文件/etc/sudoers进行配置,该文件包含所有可以访问sudo工具的用户列表并定义了他们的特权。一个典型的/etc/sudoers条目如下: 

代码: 

liming ALL=(ALL) ALL 

这个条目使得用户liming作为超级用户访问所有应用程序,如用户liming需要作为超级用户运行命令,他只需简单地在命令前加上前缀sudo。因此,要以root用户的身份执行命令format,liming可以输入如下命令: 

代码: 

# sudo /usr/sbin/useradd sam 

注意:命令要写绝对路径,/usr/sbin默认不在普通用户的搜索路径中,或者加入此路径:PATH=$PATH:/usr/sbin;export PATH。另外,不同系统命令的路径不尽相同,可以使用命令“whereis 命令名”来查找其路径。 

这时会显示下面的输出结果: 

代码: 

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

Administrator. It usually boils down to these two things: 

#1) Respect the privacy of others. 

#2) Think before you type. 

Password: 

如果liming正确地输入了口令,命令useradd将会以root用户身份执行。 

注意:配置文件/etc/sudoers必须使用命令 Visudo来编辑。 

只要把相应的用户名、主机名和许可的命令列表以标准的格式加入到文件/etc/sudoers,并保存就可以生效,再看一个例子。 

2、例子:管理员需要允许gem用户在主机sun上执行reboot和shutdown命令,在/etc/sudoers中加入: 

代码: 

gem sun=/usr/sbin/reboot,/usr/sbin/shutdown 

注意:命令一定要使用绝对路径,以避免其他目录的同名命令被执行,从而造成安全隐患。 

然后保存退出,gem用户想执行reboot命令时,只要在提示符下运行下列命令: 

代码: 

$ sudo /usr/sbin/reboot 

输入正确的密码,就可以重启服务器了。 

如果您想对一组用户进行定义,可以在组名前加上%,对其进行设置,如: 

代码: 

%cuug ALL=(ALL) ALL 

3、另外,还可以利用别名来简化配置文件。别名类似组的概念,有用户别名、主机别名和命令别名。多个用户可以首先用一个别名来定义,然后在规定他们可以执行什么命令的时候使用别名就可以了,这个配置对所有用户都生效。主机别名和命令别名也是如此。注意使用前先要在/etc/sudoers中定义: User_Alias, Host_Alias, Cmnd_Alias项,在其后面加入相应的名称,也以逗号分隔开就可以了,举例如下: 

代码: 

Host_Alias SERVER=no1 

User_Alias ADMINS=liming,gem 

Cmnd_Alias SHUTDOWN=/usr/sbin/halt,/usr/sbin/shutdown,/usr/sbin/reboot 

ADMINS SERVER=SHUTDOWN 

、再看这个例子: 

代码: 

ADMINS ALL=(ALL) NOPASSWD: ALL 

表示允许ADMINS不用口令执行一切操作,其中“NOPASSWD:”项定义了用户执行操作时不需要输入口令。 

5、sudo命令还可以加上一些参数,完成一些辅助的功能,如 

代码: 

$ sudo –l 

会显示出类似这样的信息: 

代码: 

User liming may run the following commands on this host: 

(root) /usr/sbin/reboot 

说明root允许用户liming执行/usr/sbin/reboot命令。这个参数可以使用户查看自己目前可以在sudo中执行哪些命令。 

6、在命令提示符下键入sudo命令会列出所有参数,其他一些参数如下: 

代码: 

-V 显示版本编号。 

-h 显示sudo命令的使用参数。 

-v 因为sudo在第一次执行时或是在N分钟内没有执行(N预设为5)会询问密码。这个参数是重新做一次确认,如果超过N分钟,也会问密码。 

-k 将会强迫使用者在下一次执行sudo时询问密码(不论有没有超过N分钟)。 

-b 将要执行的命令放在背景执行。 

-p prompt 可以更改问密码的提示语,其中%u会替换为使用者的账号名称,%h会显示主机名称。 

-u username/#uid 不加此参数,代表要以root的身份执行命令,而加了此参数,可以以username的身份执行命令(#uid为该username的UID)。 

-s 执行环境变量中的 SHELL 所指定的 Shell ,或是 /etc/passwd 里所指定的 Shell。 

-H 将环境变量中的HOME(宿主目录)指定为要变更身份的使用者的宿主目录。(如不加-u参数就是系统管理者root。) 

要以系统管理者身份(或以-u更改为其他人)执行的命令。



##########################     实         例     ###############################



实例一:



beinan ALL=/bin/chown,/bin/chmod



假如我们在/etc/sudoers 中添加这一行,表示beinan 能够在任何可能出现的主机名的系统中,能够转换到root用户下执行 /bin/chown 和/bin/chmod 命令,通过sudo -l 来查看beinan 在这台主机上允许和禁止运行的命令;



值得注意的是,在这里省略了指定转换到哪个用户下执行/bin/shown 和/bin/chmod命令;在省略的情况下默认为是转换到root用户下执行;同时也省略了是不是需要beinan用户输入验证密码,假如省略了,默认为是需要验证密码。



为了更周详的说明这些,我们能够构造一个更复杂一点的公式;



授权用户 主机=[(转换到哪些用户或用户组)] [是否需要密码验证] 命令1,[(转换到哪些用户或用户组)] [是否需要密码验证] [命令2],[(转换到哪些用户或用户组)] [是否需要密码验证] [命令3]....



注解:



凡是[ ]中的内容,是能够省略;命令和命令之间用,号分隔;通过本文的例子,能够对照着看哪些是省略了,哪些地方需要有空格;



在[(转换到哪些用户或用户组)] ,假如省略,则默认为root用户;假如是ALL ,则代表能转换到任何用户;注意要转换到的目的用户必须用()号括起来,比如(ALL)、(beinan)



实例二:



beinan ALL=(root) /bin/chown, /bin/chmod



假如我们把第一个实例中的那行去掉,换成这行;表示的是beinan 能够在任何可能出现的主机名的主机中,能够转换到root下执行 /bin/chown ,能够转换到任何用户招执行/bin/chmod 命令,通过sudo -l 来查看beinan 在这台主机上允许和禁止运行的命令;



实例三:



beinan ALL=(root) NOPASSWD: /bin/chown,/bin/chmod



假如换成这个例子呢?表示的是beinan 能够在任何可能出现的主机名的主机中,能够转换到root下执行 /bin/chown ,无需输入beinan用户的密码;并且能够转换到任何用户下执行/bin/chmod 命令,但执行chmod时需要beinan输入自己的密码;通过sudo -l 来查看beinan 在这台主机上允许和禁止运行的命令;



关于一个命令动作是不是需要密码,我们能够发现在系统在默认的情况下是需要用户密码的,除非特加指出无需用户需要输入自己密码,所以要在执行动作之前加入NOPASSWD: 参数;



有可能有的弟兄对系统管理的命令不太懂,不知道其用法,这样就影响了他对 sudoers定义的理解,下面我们再举一个最简单,最有说服务力的例子;



实例四:



比如我们想用beinan普通用户通过more /etc/shadow文档的内容时,可能会出现下面的情况;



[beinan@localhost ~]?$ more /etc/shadow/etc/shadow: 权限不够



这时我们能够用sudo more /etc/shadow 来读取文档的内容;就需要在/etc/soduers中给beinan授权



于是我们就能够先su 到root用户下通过visudo 来改/etc/sudoers ;(比如我们是以beinan用户登录系统的)



[beinan@localhost ~]?$ su



Password: 注:在这里输入root密码



下面运行visodu;



[root@localhost beinan]# visudo 注:运行visudo 来改 /etc/sudoers



加入如下一行,退出保存;退出保存,在这里要会用vi,visudo也是用的vi编辑器;至于vi的用法不多说了;

beinan ALL=/bin/more 表示beinan能够转换到root下执行more 来查看文档;



退回到beinan用户下,用exit命令;



[root@localhost beinan]# exit



exit



[beinan@localhost ~]?$



查看beinan的通过sudo能执行哪些命令?



[beinan@localhost ~]?$ sudo -l



Password: 注:在这里输入beinan用户的密码



User beinan may run the following commands on this host: 注:在这里清楚的说明在本台主机上,beinan用户能够以root权限运行more ;在root权限下的more ,能够查看任何文本文档的内容的;



(root) /bin/more



最后,我们看看是不是beinan用户有能力看到/etc/shadow文档的内容;



[beinan@localhost ~]?$ sudo more /etc/shadow



beinan 不但能看到 /etc/shadow文档的内容,还能看到只有root权限下才能看到的其他文档的内容,比如;



[beinan@localhost ~]?$ sudo more /etc/gshadow



对于beinan用户查看和读取任何系统文档中,我只想把/etc/shadow 的内容能够让他查看;能够加入下面的一行;



beinan ALL=/bin/more /etc/shadow



题外话:有的弟兄会说,我通过su 转换到root用户就能看到任何想看的内容了,哈哈,对啊。但咱们现在不是在讲述sudo的用法吗?假如主机上有多个用户并且不知道root用户的密码,但又想查看某些他们看不到的文档,这时就需要管理员授权了;这就是sudo的好处;



实例五:练习用户组在/etc/sudoers中写法;



假如用户组出现在/etc/sudoers 中,前面要加%号,比如%beinan ,中间不能有空格;%beinan ALL=/usr/sbin/*,/sbin/*



假如我们在 /etc/sudoers 中加上如上一行,表示beinan用户组下的任何成员,在任何可能的出现的主机名下,都能转换到root用户下运行 /usr/sbin和/sbin目录下的任何命令;



实例六:练习取消某类程式的执行:



取消程式某类程式的执行,要在命令动作前面加上!号; 在本例中也出现了通配符的*的用法;



beinan ALL=/usr/sbin/*,/sbin/*,!/usr/sbin/fdisk 注:把这行规则加入到/etc/sudoers中;但您得有beinan这个用户组,并且beinan也是这个组中的才行;



本规则表示beinan用户在任何可能存在的主机名的主机上运行/usr/sbin和/sbin下任何的程式,但fdisk 程式除外;



[beinan@localhost ~]?$ sudo -l



Password: 注:在这里输入beinan用户的密码;



User beinan may run the following commands on this host:(root) /usr/sbin/*(root) /sbin/*(root) !/sbin/fdisk[beinan@localhost ~]?$ sudo /sbin/fdisk -lSorry, user beinan is not allowed to execute '/sbin/fdisk -l' as root on localhost.



注:不能转换到root用户下运行fdisk 程式;



实例七:别名的运用实践;



假如我们就一台主机localhost,能通过hostname 来查看,我们在这里就不定义主机别名了,用ALL来匹配任何可能出现的主机名;并且有beinan、linuxsir、lanhaitun 用户;主要是通过小例子能更好理解;sudo虽然简单好用,但能把说的明白的确是件难事;最好的办法是多看例子和man soduers ;



User_Alias SYSADER=beinan,linuxsir,%beinan



User_Alias DISKADER=lanhaitun



Runas_Alias OP=root



Cmnd_Alias SYDCMD=/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root



Cmnd_Alias DSKCMD=/sbin/parted,/sbin/fdisk 注:定义命令别名DSKCMD,下有成员parted和fdisk ;



SYSADER ALL= SYDCMD,DSKCMDDISKADER     ALL=(OP) DSKCMD



注解:



第一行:定义用户别名SYSADER 下有成员 beinan、linuxsir和beinan用户组下的成员,用户组前面必须加%号;



第二行:定义用户别名 DISKADER ,成员有lanhaitun



第三行:定义Runas用户,也就是目标用户的别名为OP,下有成员root



第四行:定义SYSCMD命令别名,成员之间用,号分隔,最后的!/usr/bin/passwd root 表示不能通过passwd 来更改root密码;



第五行:定义命令别名DSKCMD,下有成员parted和fdisk ;



第六行:表示授权SYSADER下的任何成员,在任何可能存在的主机名的主机下运行或禁止 SYDCMD和DSKCMD下定义的命令。更为明确遥说,beinan、linuxsir和beinan用户组下的成员能以root身份运行 chown 、chmod 、adduser、passwd,但不能更改root的密码;也能够以root身份运行 parted和fdisk ,本条规则的等价规则是;



beinan,linuxsir,%beinan ALL=/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,/sbin/parted,/sbin/fdisk



第七行:表示授权DISKADER 下的任何成员,能以OP的身份,来运行 DSKCMD ,无需密码;更为明确的说 lanhaitun 能以root身份运行 parted和fdisk 命令;其等价规则是:



lanhaitun ALL=(root) /sbin/parted,/sbin/fdisk



可能有的弟兄会说我想不输入用户的密码就能转换到root并运行SYDCMD和DSKCMD 下的命令,那应该把把NOPASSWD:加在哪里为好?理解下面的例子吧,能明白的;



SYSADER ALL= NOPASSWD: SYDCMD, NOPASSWD: DSKCMD



用户与组管理一些操作示例

添加一个账户


useradd -m ltw  参数-m用来设定系统添加账户时自动建立用户根目录


修改ltw账户的 登录名称

usermod -l litingwei ltw


修改litingwei账户的 登录目录 (注意:修改前需要提前手动建立好litingwei目录)


usermod -d /home/litingwei litingwei


锁定用户litingwei账号密码


usermod -L litingwei 锁定后账号不可使用


解锁用户litingwei账号密码


usermod -U litingwei






添加一个分组


groupadd superman


修改superman分组

groupmod -g 355 superman


删除 superman 分组

groupdel superman




修改root 密码(root密码尚未设定,需要设定密码后方可使用)


passwd root




root ,litingwei 账户切换


su - root


或sudo -i 切换root




删除litingwei账号 


userdel -r litingwei (-r 连同用户目录一起删除)






文件权限管理 

三种基本权限

R 读权限

W 写权限

X 执行权限 

查看文件和目录的权限

ls –l 文件名

显示信息包含:文件类型 (d 目录, - 普通文件, l 链接文件 ) ,文件权限,文件的属主,文件的所属组,文件的大小,文件的创建时间,文件的名称

- rw -r--r-- 1 itcast users  2254 2006-05-20 13:47 tt.htm

从第二个字符起 rw - 是说用户 itcast 有读、写权,没有运行权,接着的 r-- 表示用户组 users 只有读权限,没有运行权,最后的 r-- 指其他人( others )只有读权限,没有写权和运行权。

更改操作权限 

chmod 【u 属主 g 所属组用户 o 其他用户 a 所有用户 】 【+ 加权限 减权限 = 加权限同时将原有权限删除 】 【 rwx 文件或目录名
-R 下面的子目录做相同权限操作




也可以用数字来表示权限如 chmod 777 file

r 4    w 2    x 1

若要 rwx 属性则 4+2+1=7
若要 rw - 属性则 4+2=6
若要 r-x 属性则 4+1=5;



权限管理示例

显示出文件 /home/itcast/familyA/bank.txt 的权限
cd /home/itcast/familyA/
ls -l 


切换至litingwei用户


su litingwei


用litingwei账户查看是否可以读写bank.txt


cat bank.txt


vim bank.txt 此时litingwei没有权限进行修改文件


切换回 itcast
su itcast


修改bank.txt 权限为 其他用户可读写


chmod o+w bank.txt


再切换回litingwei


su litingwei


修改bank.txt
vim bank.txt

软件的安装

第一步 安装jdk


su - root 切换成root用户


sudo -i 不需要密码直接切换成root


1.进入usr目录


cd /usr


2.在usr目录下建立java安装目录


mkdir java


3.将jdk-6u24-linux-i586.bin拷贝到java目录下


cp /home/itcast/Desktop/jdk-6u24-linux-i586.bin /usr/java


4.安装jdk


cd /usr/java


./jdk-6u24-linux-i586.bin




5.安装完毕为他建立一个链接以节省目录长度


ln -s /usr/java/jdk1.6.0_24/ /usr/jdk


6.编辑配置文件


vim /etc/profile


添加如下内容:
JAVA_HOME=/usr/jdk
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH




8.重启机器


sudo shutdown -r now


9.查看安装情况
java -version


java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode, sharing)






第二步安装 tomcat


tar -zxvf apache-tomcat-6.0.29.tar.gz -C /opt       (解压到/opt下)
ln -s /opt/apache-tomcat-6.0.29/ /opt/tomcat   (建立链接文件)
启动tomcat
cd /opt/tomcat/bin/
./startup.sh   (注意:点代表当前目录下)
如果启动不了,请尝试
-i 切换到root用户再重新启动
./startup.sh
测试http://127.0.0.1:8080/




第三步 安装eclipse


tar -zxvf eclipse-jee-helios-linux-gtk.tar.gz -C /opt (解压到/usr/local目录下并生成/usr/local/eclipse目录)
cd /opt/eclipse/
./eclipse (注意:点代表当前目录下)


使用Telnet远程登录

telnet


1.安装telnet-server


sudo dpkg -i xinetd_1%3a2.3.14-7ubuntu3_i386.deb
sudo dpkg -i telnetd_0.17-36build1_i386.deb


如果连网的情况下可以 sudo apt-get install telnet 进行安装




2.设置一下ip


sudo ifconfig eth0 192.168.1.222 netmask 255.255.255.0


3.修改/etc/xinetd.conf配置文件


vim /etc/xinetd.conf

加入如下内容:


defaults
{
# Please note that you need a log_type line to be able to use log_on_success
# and log_on_failure. The default is the following :
# log_type = SYSLOG daemon info(插入如下部分)
instances = 60 
log_type = SYSLOG authpriv 
log_on_success = HOST PID 
log_on_failure = HOST 
cps = 25 30
}


4.修改/etc/xinetd.d/telnet 配置文件


vim /etc/xinetd.d/telnet


加入如下内容:


# default: on 
# description: The telnet server serves telnet sessions; it uses \ 
# unencrypted username/password pairs for authentication. 
service telnet 
disable = no
flags = REUSE 
socket_type = stream 
wait = no 
user = root 
server = /usr/sbin/in.telnetd 
log_on_failure += USERID 
}  


5.重启网络服务


            sudo /etc/init.d/xinetd restart


6.打开window命令行 telnet 192.168.1.222






  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值