??xml version="1.0" encoding="utf-8" standalone="yes"?>
FTPQfile transfer protocolQ这是案传输的通讯协议Q也是一般最常用来传送档案的方式。读者在使用RedHat9 的时候,可能会感受到ftp server 有一些改变:W一Q就是ftp server 只剩下vsftpQ原有的wuftp {都没放?nbsp;W二Q就是vsftp 从XINETD 中独立出来,q将讑֮档从/etc/vsftpd.conf 之中Ud/etc/vsftpd/vsftpd.conf?nbsp;
Z么做q样的改变?可以惌的是vsftp 已有独立q作的能力,不需要XINETD 来做更进一步的控Qƈ且类似sendmail、httpd、ssh、samba {,设定文件的攑օ/etc 下独立的目录?nbsp;
FTP 分ؓ两类Q一UؓPORT FTPQ也是一般的FTP 另一cLPASVFTPQ分q如下:
PORT FTP
q是一般Ş式的FTPQ首先会建立控制频道Q默认值是port 21Q也是跟port 21 建立联机Qƈ透过此联Z达指令。第二,由FTP server 端会建立数据传输频道Q默认gؓ20Q也是跟port 20 建立联机Qƈ透过port 20 作数据的传输?nbsp;
PASV FTP
跟PORT FTP cMQ首先会建立控制频道Q默认值是port 21Q也是跟port 21 建立联机Qƈ透过此联Z达指令。第二,会由client 端做出数据传输的hQ包括数据传输port 的数字?nbsp;
q两者的差异ZQPORT FTP 当中的数据传输port 是由FTP server 指定Q而PASV FTP 的数据传输port 是由FTP client 军_。通常我们使用PASV FTPQ是在有防火墙的环境之下Q透过client 与server 的沟通,军_数据传输的port?br>
3.2.2 范例
3.2.1. 直接启动VSFTP 服务
q个范例是套用RedHat 的预设范?直接启动vsftp?nbsp;
[root@relay vsftpd]# /sbin/service vsftpd start
Starting vsftpd for vsftpd: OK ]
3.2.2. 更换port 提供服务Q将预设的port 21 更换?121
Z安全Q或是以port 来区隔不同的ftp 服务Q我们可能会ftp port 改ؓ21 之外的portQ那么,可参考以下步骤?nbsp;
Step1. 修改/etc/vsftpd/vsftpd.conf
新增底下一?nbsp;
listen_port=2121
Step2. 重新启动vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
3.2.3. 特定使用者peter、john 不得变更目录
使用者的预设目录?home/usernameQ若是我们不希望使用者在ftp 时能?nbsp;
切换C一层目?homeQ则可参考以下步骤?nbsp;
Step1. 修改/etc/vsftpd/vsftpd.conf
底下三?nbsp;
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list
改ؓ
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
Step2. 新增一个档? /etc/vsftpd/chroot_list
内容增加两行Q?nbsp;
peter
john
Step3. 重新启动vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
若是peter Ʋ切换到根目录以外的目录Q则会出C下警告:
ftp> cd /home
550 Failed to change directory.
3.2.4. 取消anonymous d
若是读者的L不希望用者匿名登入,则可参考以下步骤?br>Step1. 修改/etc/vsftpd/vsftpd.conf
?nbsp;
anonymous_enable=YES
改ؓ
anonymous_enable=NO
Step2. 重新启动vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
3.2.5. 安排Ƣ迎话语
若是我们希望使用者在dӞ能够看到Ƣ迎话语Q可能包括对该主机的说明Q或是目录的介绍Q可参考以下步骤?br>首先定?etc/vsftpd/vsftpd.conf 当中是否有底下这一?nbsp;
dirmessage_enable=YES
RedHat9 的默认值是有上面这行的?nbsp;
接着Q在各目录之中,新增名ؓ.message 的档案,再这边假设有一个用者test1Q且此用者的根目录下有个目录名ؓabcQ那首先我们?home/test1
之下新增.messageQ内容如下:
Hello~ Welcome to the home directory
This is for test only...
接着Q在/home/test1/abc 的目录下新增.messageQ内容如下:
Welcome to abc's directory
This is subdir...
那么Q当使用者test1 dӞ会看C下讯息:
230- Hello~ Welcome to the home directory
230-
230- This is for test only...
230-
若是切换到abc 的目录,则会出现以下讯息Q?nbsp;
250- Welcome to abc's directory
250-
250- This is subdir ...
3.2.6. 对于每一个联机,以独立的process 来运?br>一般启动vsftp Ӟ我们只会看到一个名为vsftpd 的process 在运作,但若是读者希望每一个联机,都能以独立的process 来呈玎ͼ则可执行以下步骤?br>Step1. 修改/etc/vsftpd/vsftpd.conf
新增底下一?nbsp;
setproctitle_enable=YES
Step2. 重新启动vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
使用ps -ef 的指令,可以看告不同使用者联机的情ŞQ如下图所C:
[root@home vsftpd]# ps -ef|grep ftp
root 2090 1 0 16:41 pts/0 00:00:00 vsftpd: LISTENER
nobody 2120 2090 0 17:18 ? 00:00:00 vsftpd: 192.168.10.244:
connected
test1 2122 2120 0 17:18 ? 00:00:00 vsftpd: 192.168.10.244/test1:
IDLE
nobody 2124 2090 0 17:19 ? 00:00:00 vsftpd: 192.168.10.244:
connected
test2 2126 2124 0 17:19 ? 00:00:00 vsftpd: 192.168.10.244/test2:
IDLE
root 2129 1343 0 17:20 pts/0 00:00:00 grep ftp
[root@home vsftpd]#
3.2.7. 限制传输案的速度Q?br>本机的用者最高速度?00KBytes/sQ匿名登入者所能用的最高速度?0KBytes/s
Step1. 修改/etc/vsftpd/vsftpd.conf
新增底下两行
anon_max_rate=50000
local_max_rate=200000
Step2. 重新启动vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
在这辚w度的单位ؓBytes/sQ其中anon_max_rate 所限制的是匿名d?nbsp;
使用者,而local_max_rate 所限制的是本机的用者。VSFTPD 对于速度的限
Ӟ范围大概?0%?20%之间Q也是我们限制最高速度?00KBytes/sQ?nbsp;
但实际的速度可能?0KBytes/s ?20KBytes/s 之间Q当Ӟ若是频宽不
Ӟ数g低于此限制?br>
3.2.8. 针对不同的用者限制不同的速度Q?br>假设test1 所能用的最高速度?50KBytes/sQtest2 所能用的最高速度?00KBytes/s?nbsp;
Step1. 修改/etc/vsftpd/vsftpd.conf
新增底下一?nbsp;
user_config_dir=/etc/vsftpd/userconf
Step2. 新增一个目录:/etc/vsftpd/userconf
mkdir /etc/vsftpd/userconf
Step3. ?etc/vsftpd/userconf 之下新增一个名为test1 的?nbsp;
内容增加一行:
local_max_rate=250000
Step4. ?etc/vsftpd/userconf 之下新增一个名为test2 的?nbsp;
内容增加一行:
local_max_rate=500000
Step5. 重新启动vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
3.2.9-1. 建置一个防火墙下的ftp serverQ用PORT FTP modeQ?br>预设的ftp port:21 以及ftp data port:20
启动VSFTPD 之后执行以下两行指oQ只允许port 21 以及port 20 开放,其它关闭?nbsp;
iptables -A INPUT -p tcp -m multiport --dport 21,20 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
3.2.9-2. 建置一个防火墙下的ftp serverQ用PORT FTP modeQ?br>ftp port:2121 以及ftp data port:2020
Step1. 执行以下两行指oQ只允许port 2121 以及port 2020 开放,其它关闭?nbsp;
iptables -A INPUT -p tcp -m multiport --dport 2121,2020 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
Step2. 修改/etc/vsftpd/vsftpd.conf
新增底下两行
listen_port=2121
ftp_data_port=2020
Step3. 重新启动vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
在这边要注意Q?? 两个例子中,ftp clientQ如cuteftpQ的联机方式不能够选择passive modeQ否则无法徏立数据的联机。也是读者可以连上ftp
serverQ但是执行ls、get {等的指令时Q便无法q作?br>
3.2.10. 建置一个防火墙下的ftp serverQ用PASS FTP modeQ?br>ftp port:2121 以及ftp data port ?981 ?986?nbsp;
Step1. 执行以下两行指oQ只允许port 2121 以及port 9981-9990 开放,其它关闭?nbsp;
iptables -A INPUT -p tcp -m multiport --dport
2121,9981,9982,9983,9984,9985,9986,9987,9988,9989,9990 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
Step2. 修改/etc/vsftpd/vsftpd.conf
新增底下四行
listen_port=2121
pasv_enable=YES
pasv_min_port=9981
pasv_max_port=9986
Step3. 重新启动vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
在这边要注意Q在10 q个例子中,ftp clientQ如cuteftpQ的联机方式必须选择passive modeQ否则无法徏立数据的联机。也是读者可以连上ftp serverQ但是执行ls,get {等的指令时Q便无法q作?br>
3.2.11. vsftpd 与TCP_wrapper l合
若是读者希望直接在/etc/hosts.allow 之中定义允许或是拒绝的来源地址Q可执行以下步骤。这是简易的防火墙设定?nbsp;
Step1. 定/etc/vsftpd/vsftpd.conf 之中tcp_wrappers 的设定ؓYESQ如下图所
C:
tcp_wrappers=YES
q是RedHat9 的默认|基本上不需修改?nbsp;
Step2. 重新启动vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
Step3. 讑֮/etc/hosts.allowQ譬如提?11.22.33.4 以及10.1.1.1 ?0.1.1.254 q?nbsp;
U,则可做下图之讑֮Q?nbsp;
vsftpd : 111.22.33.4 10.1.1. : allow
ALL : ALL : DENY
3.2.12. vsftpd q入XINETD
若是读者希望将vsftpd q入XINETD 之中Q也是7.x 版的预设讑֮Q那
么读者可以执行以下步骤?nbsp;
Step1. 修改/etc/vsftpd/vsftpd.conf
?nbsp;
listen=YES
改ؓ
listen=NO
Step2. 新增一个档案: /etc/xinetd.d/vsftpd
内容如下Q?nbsp;
service vsftpd
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
port = 21
log_on_success += PID HOST DURATION
log_on_failure += HOST
}
Step3. 重新启动xinetd
[root@home vsftpd]# /sbin/service xinetd restart
Stopping xinetd: OK ]
Starting xinetd: OK ]
3.2.3 讑֮档说?br>在范例中Q有些省略的讑֮可以在这Ҏ刎ͼ譬如联机的L、同一个位址的联机数、显C档案拥有者的名称{等Q希望读者细dQ可以做出最适合自己的设定?br>格式
vsftpd.conf 的内定w常单U,每一行即Z设定。若是空白行或是开头ؓ#的一行,会被忽略。内容的格式只有一U,如下所C?nbsp;
option=value
要注意的是,{号两边不能加空白,不然是不正确的设定?nbsp;
Q=Qascii 讑֮Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q?nbsp;
ascii_download_enable
控是否可用ASCII 模式下蝲。默认gؓNO?nbsp;
ascii_upload_enable
控是否可用ASCII 模式上传。默认gؓNO?nbsp;
Q=Q个别用者设定=Q=Q=Q=Q=Q=Q=Q=Q=Q=
chroot_list_enable
如果启动q项功能Q则所有的本机使用者登入均可进到根目录之外的数据夹Q除了列
?etc/vsftpd.chroot_list 之中的用者之外。默认gؓNO?nbsp;
userlist_enable
用法QYES/NO
若是启动此功能,则会d/etc/vsftpd.user_list 当中的用者名U。此功能可以在询问密码前就出现p|讯息Q而不需要检验密码的E序。默认gؓ关闭?nbsp;
userlist_deny
用法QYES/NO
q个选项只有在userlist_enable 启动时才会被验。如果将q个选项设ؓYESQ则?etc/vsftpd.user_list 中的使用者将无法d 若设为NO Q?nbsp;则只有在
/etc/vsftpd.user_list 中的使用者才能登入。而且此项功能可以在询问密码前出现错误讯息,而不需要检验密码的E序?nbsp;
user_config_dir
定义个别使用者设定文件所在的目录Q例如定义user_config_dir=/etc/vsftpd/userconfQ且L上有使用者test1,test2Q那我们可以在user_config_dir 的目录新增文件名为test1 以及test2。若是test1 dQ则会读取user_config_dir 下的test1 q个案内的讑֮。默认gؓ无?nbsp;
Q=Q欢q语讑֮Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q?nbsp;
dirmessage_enable
如果启动q个选项Q用者第一ơ进入一个目录时Q会查该目录下是否有.messageq个案Q若是有Q则会出现此案的内容,通常q个档案会放|欢q话语,或是对该目录的说明。默认gؓ开启?nbsp;
banner_file
当用者登入时Q会昄此设定所在的案内容Q通常为欢q话语或是说明。默认gؓ无?nbsp;
ftpd_banner
q边可定义欢q话语的字符Ԍ相较于banner_file 是档案的形式Q而ftpd_banner 是字串的格式。预设ؓ无?nbsp;
Q=Q特D安全设定=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q?nbsp;
chroot_local_user
如果讑֮为YESQ那么所有的本机的用者都可以切换到根目录以外的数据夹。预讑րgؓNO?nbsp;
hide_ids
如果启动q项功能Q所有档案的拥有者与组都ؓftpQ也是使用者登入用ls -al之类的指令,所看到的案拥有者跟组均ؓftp。默认gؓ关闭?nbsp;
ls_recurse_enable
若是启动此功能,则允许登入者用ls -R q个指o。默认gؓNO?nbsp;
write_enable
用法QYES/NO
q个选项可以控制FTP 的指令是否允许更改file systemQ譬如STOR、DELE?nbsp;
RNFR、RNTO、MKD、RMD、APPE 以及SITE。预设是关闭?nbsp;
setproctitle_enable
用法QYES/NO
启动q项功能Qvsftpd 会将所有联机的状况已不同的process 呈现出来Q换句话_使用ps -ef q类的指令就可以看到联机的状态。默认gؓ关闭?nbsp;
tcp_wrappers
用法QYES/NO
如果启动Q则会将vsftpd 与tcp wrapper l合Q也是可以?etc/hosts.allow ?etc/hosts.deny 中定义可联机或是拒绝的来源地址?nbsp;
pam_service_name
q边定义PAM 所使用的名Uͼ预设为vsftpd?nbsp;
secure_chroot_dir
q个选项必须指定一个空的数据夹且Q何登入者都不能有写入的权限Q当vsftpd 不需要file system 的权限时Q就会将使用者限制在此数据夹中。默认gؓ/usr/share/empty
Q=Q纪录文件设定=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=
xferlog_enable
用法QYES/NO
如果启动Q上传与下蝲的信息将被完整纪录在底下xferlog_file 所定义的案中。预设ؓ开启?nbsp;
xferlog_file
q个选项可设定纪录文件所在的位置Q默认gؓ/var/log/vsftpd.log?nbsp;
xferlog_std_format
如果启动Q则U录文g会写ؓxferlog 的标准格式,如同wu-ftpd 一般。默认gؓ关闭?nbsp;
Q=Q逾时讑֮Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=
accept_timeout
接受建立联机的逾时讑֮Q单位ؓU。默认gؓ60?nbsp;
connect_timeout
响应PORT 方式的数据联机的逾时讑֮Q单位ؓU。默认gؓ60?nbsp;
data_connection_timeout
建立数据联机的逾时讑֮。默认gؓ300 U?nbsp;
idle_session_timeout
发呆的逾时讑֮Q若是超旉没有数据的传送或是指令的输入Q则会强q断U,单位为秒。默认gؓ300?nbsp;
Q=Q速率限制Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=
anon_max_rate
匿名d所能用的最大传输速度Q单位ؓ每秒多少bytesQ? 表示不限速度。默认gؓ0?nbsp;
local_max_rate
本机使用者所能用的最大传输速度Q单位ؓ每秒多少bytesQ? 表示不限速度。预讑րgؓ0?nbsp;
Q=Q新增档案权限设定=Q=Q=Q=Q=Q=Q=Q=Q=Q?nbsp;
anon_umask
匿名d者新增档案时的umask 数倹{默认gؓ077?nbsp;
file_open_mode
上传案的权限,与chmod 所使用的数值相同。默认gؓ0666?nbsp;
local_umask
本机d者新增案时的umask 数倹{默认gؓ077?nbsp;
Q=Qport 讑֮Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=
connect_from_port_20
用法QYES/NO
若设为YESQ则ftp-data 的数据传送用port 20。默认gؓYES?nbsp;
ftp_data_port
讑֮ftp 数据联机所使用的port。默认gؓ20?nbsp;
listen_port
FTP server 所使用的port。默认gؓ21?nbsp;
pasv_max_port
建立资料联机所可以使用port 范围的上界,0 表示L。默认gؓ0?nbsp;
pasv_min_port
建立资料联机所可以使用port 范围的下界,0 表示L。默认gؓ0?nbsp;
Q=Q其它=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q?nbsp;
anon_root
使用匿名dӞ所d的目录。默认gؓ无?nbsp;
local_enable
用法QYES/NO
启动此功能则允许本机使用者登入。默认gؓYES?nbsp;
local_root
本机使用者登入时Q将被更换到定义的目录下。默认gؓ无?nbsp;
text_userdb_names
用法QYES/NO
当用者登入后使用ls -al 之类的指令查询该案的管理权Ӟ预设会出现拥有者的UIDQ而不是该档案拥有者的名称。若是希望出现拥有者的名称Q则此功能开启。默认gؓNO?nbsp;
pasv_enable
若是设ؓNOQ则不允怋用PASV 的模式徏立数据的联机。默认gؓ开启?nbsp;
Q=Q更换案所有权Q=Q=Q=Q=Q=Q=Q=Q=Q=Q?nbsp;
chown_uploads
用法QYES/NO
若是启动Q所有匿名上传数据的拥有者将被更换ؓchown_username 当中所讑֮的用者。这L选项对于安全及管理,是很有用的。默认gؓNO?nbsp;
chown_username
q里可以定义当匿名登入者上传案时Q该案的拥有者将被置换的使用者名U。预讑րgؓroot?nbsp;
Q=Qguest 讑֮Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q?nbsp;
guest_enable
用法QYES/NO
若是启动q项功能Q所有的非匿名登入者都视ؓguest。默认gؓ关闭?nbsp;
guest_username
q里定义guest 的用者名U。默认gؓftp?nbsp;
Q=Qanonymous 讑֮Q=Q=Q=Q=Q=Q=Q=Q=Q=
anonymous_enable
用法QYES/NO
控使否允许匿名dQYES 为允许匿名登入,NO Z允许。默认gؓYES?nbsp;
no_anon_password
若是启动q项功能Q则使用匿名dӞ不会询问密码。默认gؓNO?nbsp;
anon_mkdir_write_enable
用法QYES/NO
如果设ؓYESQ匿名登入者会被允许新增目录,当然Q匿名用者必要有对上层目录的写入权。默认gؓNO?nbsp;
anon_other_write_enable
用法QYES/NO
如果设ؓYESQ匿名登入者会被允许更多于上传与徏立目录之外的权限Q譬如删除或是更名。默认gؓNO?nbsp;
anon_upload_enable
用法QYES/NO
如果设ؓYESQ匿名登入者会被允怸传目录的权限Q当Ӟ匿名使用者必要有对上层目录的写入权。默认gؓNO?nbsp;
anon_world_readable_only
用法QYES/NO
如果设ؓYESQ匿名登入者会被允怸载可阅读的档案。默认gؓYES?nbsp;
ftp_username
定义匿名d的用者名U。默认gؓftp?nbsp;
deny_email_enable
若是启动q项功能Q则必须提供一个档?etc/vsftpd.banner_emailsQ内容ؓemail
address。若是用匿名登入,则会要求输入email addressQ若输入的email address 在此案内,则不允许联机。默认gؓNO?nbsp;
Q=QStandalone 选项Q=Q=Q=Q=Q=Q=Q=Q=Q=
listen
用法QYES/NO
若是启动Q则vsftpd 会以独立运作的方式执行Q若是vsftpd 独立执行Q如RedHat9的默认|则必d?nbsp;若是vsftpd 包含在xinetd 之中Q则必须关闭此功能,如RedHat8。在RedHat9 的默认gؓYES?nbsp;
listen_address
若是vsftpd 使用standalone 的模式,可用这个参数定义用哪个IP address 提供q项服务Q若是主Z只有定义一个IP addressQ则此选项不需使用Q若是有多个IP addressQ可定义在哪个IP address 上提供ftp 服务。若是不讑֮Q则所有的IP address均会提供此服务。默认gؓ无?nbsp;
max_clients
若是vsftpd 使用standalone 的模式,可用这个参数定义最大的总联机数。超q这个数目将会拒l联机,0 表示不限。默认gؓ0?nbsp;
max_per_ip
若是vsftpd 使用standalone 的模式,可用这个参数定义每个ip address 所可以联机的数目。超q这个数目将会拒l联机,0 表示不限。默认gؓ0?nbsp;
Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q=Q?nbsp;
3.2.4 FTP 数字代码的意?nbsp;
110 重新启动标记应答?nbsp;
120 服务在多久时间内ready?nbsp;
125 数据链\埠开启,准备传送?nbsp;
150 文g状态正常,开启数据连接端口?nbsp;
200 命o执行成功?nbsp;
202 命o执行p|?nbsp;
211 pȝ状态或是系l求助响应?nbsp;
212 目录的状态?nbsp;
213 文g的状态?nbsp;
214 求助的讯息?nbsp;
215 名称pȝcd?nbsp;
220 新的联机服务ready?nbsp;
221 服务的控制连接埠关闭Q可以注销?nbsp;
225 数据q结开启,但无传输动作?nbsp;
226 关闭数据q接端口Q请求的文g操作成功?nbsp;
227 q入passive mode?nbsp;
230 使用者登入?nbsp;
250 h的文件操作完成?nbsp;
257 昄目前的\径名U?nbsp;
331 用户名称正确Q需要密码?nbsp;
332 d旉要̎号信息?nbsp;
350 h的操作需要进一部的命o?nbsp;
421 无法提供服务Q关闭控制连l?nbsp;
425 无法开启数据链路?nbsp;
426 关闭联机Q终止传输?nbsp;
450 h的操作未执行?nbsp;
451 命ol止Q有本地的错误?nbsp;
452 未执行命令:盘I间不?nbsp;
500 格式错误Q无法识别命令?nbsp;
501 参数语法错误?nbsp;
502 命o执行p|?nbsp;
503 命o序错误?nbsp;
504 命o所接的参数不正?nbsp;
530 未登入?nbsp;
532 储存文g需要̎L入?nbsp;
550 未执行请求的操作?nbsp;
551 h的命令终止,cd未知?nbsp;
552 h的文件终止,储存位溢出?nbsp;
553 未执行请求的的命令,名称不正?img src ="http://www.shnenglu.com/mydriverc/aggbug/109709.html" width = "1" height = "1" />
]]>
#service
vsftpd start 启动
#service vsftpd stop 停止
#service vsftpd restart 重启
2.以上没有问题的话~辑vsftpd的配|文?br>[root@localhost /]# vi
/etc/vsftpd/vsftpd.conf //q个文g的具体内容解释可以看下面“参考文?#8221;W一个链?br>3.anonymous_enable=YES ҎNO #止匿名讉K
4.?vsftpd.conf
中找?chroot_list_file=/etc/vsftpd.chroot_list把注释去掉然后徏?br>/etc/vsftpd.chroot_list文gQ在文g中输入linuxpȝ中的一个或多个用户?一行一??br>
注:q个用户名是linuxpȝ中root用户d的?br>[root@localhost
/]# useradd -s /sbin/nologin
//q样限制用户不能使用sshd
5.更改ftp端口仍然在vsftpd.conf文g中:
tcp_wrappers=YES
listen_port=2121
//自定义端口号Q记得不要与已有端口冲突
local_root=/server/apache/htdocs
//讑֮用户explorerq接ftp时候显C的目录
保存退出编辑?br>
6.
#service vsftpd
restart 重启.然后一个利用系l已有用户名d的ftp开通了Q?br>注:#service vsftpd start
命o只是在linux开启后手动开启vsftpd的命令,如果linux重启Q还要用该命o重新启动?br>要想开机启动vsftp服务Q执行chkconfig
--level 35 vsftpd on
(|络查询的未实践q?
后记Q?br>如果有时间研I就多看看徏立虚拟用户那部分Q虚拟用L比系l用户也怼更安全些Q也E微复杂些?br>
引用建立虚拟用户Q?br>=====================================================
[root@server root]# useradd vuser #新徏一个虚拟登陆指定的?
[root@server
root]# vi users.txt #虚拟可本一行用户名下一行密?br>[root@server root]# db_load -T -t hash
-f users.txt /etc/vsftpd.login.db #把users.txt的内容加拟用L帐号和密?br>[root@server
root]# chmod 600 /etc/vsftpd.login.db #Z安全修改里面的内?br>[root@server root]# vi
/etc/pam.d/ftp #修改里面的内?使之与下面的相同
[root@server root]# more
/etc/pam.d/ftp
#%PAM-1.0
#auth required
/lib/security/pam_listfile.so item=user sense=allow file
=/etc/ftpusers
onerr=succeed
#auth required /lib/security/pam_pwdb.so shadow
nullok
#auth required /lib/security/pam_shells.so
#account
required /lib/security/pam_pwdb.so
#session required
/lib/security/pam_pwdb.so
auth required pam_userdb.so
db=/etc/vsftpd.login
account required pam_userdb.so
db=/etc/vsftpd.login
再次修改/etc/vsftpd.conf,使其内容与anonymous有关的全部禁?q有刚才的chroot也被列ؓ用,如果想用的话保证虚拟可常的前提下再另行试,q在最后加入二句话:
guest_enable=YES
guest_username=vuser 接下来就是重启vsftpd
[root@server root]# killall -HUP vsftpd #!
[root@server
root]# ftp localhost #试
Connected to server.redhat.org.cn.
220 Welcome
to linfeng's ftp server.
530 Please login with USER and PASS.
530 Please
login with USER and PASS.
KERBEROS_V4 rejected as an authentication
type
Name (localhost:root): tom #虚拟?br>331 Please specify the
password.
Password: #虚拟号tom的密?br>230 Login successful. #成功
Remote
system type is UNIX.
Using binary mode to transfer files.
ftp>
ls
227 Entering Passive Mode (127,0,0,1,136,56)
150 Here comes the
directory listing.
226 Transfer done (but failed to open directory).
#怎么会禁止了?想一下上面的,,呵呵,q就是因为vuser用户的权限啊,只需"chmod o+r
/home/vuser"那可览,但不可上?因ؓ没有"w"?br>
=====================================
|络参考文章:
http://www.bianceng.cn/OS/Linux/200706/3020.htm
http://www.shineblog.com/user2/24790/archives/2005/175940.shtml
q两都比较详细?/p>
先理解主被动的联接方式:
FTP协议有两U工作方式:PORT方式和PASV方式Q中文意思ؓd式和被动式?/p>
Port模式Q?/font>ftp server:tcp 21 <------client:dynamic ftp server:tcp 20 ------>client:dynamic
Pasv模式Q?/font>ftp server:tcp 21
<----client:dynamic ftp server:tcp dynamic
<----client:dynamic #allow all ftp incoming connections # Enable active ftp transfers # Enable passive ftp transfers
PORTQ主动)方式?a >q接q程是:客户端向服务器的FTP端口Q默认是21Q发?a >q接?
求,服务器接受连接,建立一条命令链路。当需要传送数据时Q客?
端在命o链\上用PORT命o告诉服务器:“我打开了XXXX端口Q你q来q接?#8221;。于是服务器?0端口向客L的XXXX端口发送连接请求,建立一?
数据链\来传送数据?br>PASVQ被动)方式的连接过E是Q客L向服务器的FTP端口Q默认是21Q发送连接请
求,服务器接受连接,建立一条命令链路。当需要传送数据时Q服?
器在命o链\上用PASV命o告诉客户端:“我打开了XXXX端口Q你q来q接?#8221;。于是客L向服务器的XXXX端口发送连接请求,建立一条数据链路来
传送数据?/p>
iptables -A INPUT -p tcp
--dport 21 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp
--sport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp
--dport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT
-p tcp --sport 20 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp
--sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j
ACCEPT
iptables -A OUTPUT -p tcp --sport 1024:65535 --dport 1024:65535 -m
state --state ESTABLISHED,RELATED -j ACCEPT
]]>
? 于Linux用户而言Q在安装一台Linux机器的时候,遇到的问题之一是l各分区估计和分z够的盘I间。无论对一个正在ؓ服务器寻扄间的pȝ? 理员Q还是一个磁盘即用的普通用h_q都是一个非常常见的问题。解决的Ҏ通常是用符号链接,或者一些调整分区大的工具(比如 parted)。但是,q只是一个暂时性的解决办法Q不久,我们又会面同样的问题?
如果你是一个站点的pȝ理员,理着数量众多的、连接在Internet之上的服务器Q那么你每关Z分钟Q都会给公司带来很大损失。此外,使用q种ҎQ在修改了分之后Q每一ơ都得重新启动系l。LVM(逻辑L理程?可以帮助我们解决q些问题?
LVM?/p>
Linux LVM可以使管理工作更加轻松。相对于盘和分区,LVM是从更高的层ơ来看待存储I间的。在使用LVM之前Q先来看一些将要用到的相xc?
物理?
物理h指硬盘分区或者从逻辑上看h和硬盘分区类似的讑֤(比如RAID讑֤)?
逻辑?
一个或者多个物理卷l成一个逻辑南对于LVM而言Q逻辑Lg非LVMpȝ中的盘分区。逻辑卷可以包含一个文件系l?比如/home或?usr)?
L
一个或者多个逻辑L成一个卷l。对于LVM而言Q卷l类g非LVMpȝ中的物理盘。卷l把多个逻辑L合在一P形成一个可理的单元?
LVM工作方式
下面来看一看LVM到底是怎样工作的。每一个物理卷都被分成几个基本单元Q即所谓的PE(Physical Extents)。PE的大是可变的,但是必须和其所属卷l的物理L同。在每一个物理卷里,每一个PE都有一个惟一的编受PE是一个物理存储里可以 被LVMd的最单元?
每一个逻辑卷也被分成一些可被寻址的基本单位,x谓的LE(Logical Extents)。在同一个卷l中QLE的大和PE是相同的Q很昄QLE的大对于一个卷l中的所有逻辑h说都是相同的?
在一个物理卷中,每一个PE都有一个惟一的编P但是对于逻辑卯q不一定是必需的。这是因为当q些PE ID号不能用时Q逻辑卷可以由一些物理卷l成。因此,LE IDh用于识别LE以及与之相关的特定PE的。正如前面所提到的,LE和PE之间是一一对应的。每一ơ存储区域被d讉K或者LE的ID被用,都会? 数据写在物理存储讑֤之上?
你可能会觉得奇怪,有关逻辑卷和逻辑L的所有元数据都存到哪儿去了。类似的在非LVMpȝ中,有关分区的数据是存储在分中,而分被存储在了每一个物理卷的v始位|。VGDA(L描述W区?功能好象是LVM的分Q它存储在每一个物理卷的v始处?
VGDA׃下信息组成:
?一个PV描述W?
?一个VG描述W?
?LV描述W?
?一些PE描述W?/p>
当系l启动LVӞVG被激z,q且VGDA被加载至内存。VGDA帮助识别LV的实际存储位|。当pȝ惌讉K存储讑֤Ӟ由VGDA建立h的映机制就用于讉K实际的物理位|来执行I/O操作?
开始工?/p>
下面具体看一看如何用LVM?
W一步:配置内核。在安装LVM之前Q内怹中应该有LVM模块Q可以用以下的步骤来完成:
#cd /usr/src/linux
#make menuconfig
选择Multi-device Support (RAID and LVM)子菜单,选中以下两个选项Q?
[*] Multiple devices driver support (RAID and LVM)
<*> Logical volume manager (LVM) Support.
W二步:查驱动器上空闲硬盘空间的总量。这可以通过以下命o来未完成Q?
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda1 3.1G 2.7G 398M 87% /
/dev/hda2 4.0G 3.2G 806M 80% /home
/dev/hda5 2.1G 1.0G 1.1G 48% /var
W三步:在硬盘上创徏一个LVM分区。用fdisk或者其它的分区工具来创Z个LVM分区。Linux LVM的分区类型ؓ8e?
# fdisk /dev/hda
press p (to print the partition table) and n (to create a new partition)
W四步:创徏一个物理卷。下q命令将在分区的起始处创Z个卷l描q符Q?
# pvcreate /dev/hda6
pvcreate -- -physical volume "/dev/hda6" successfully created
# pvcreate /dev/hda7
pvcreate- -- physical volume "/dev/hda7" successfully created
W五步:创徏一个卷l。通过下面的方法创Z个新的卷l,q且d两个物理P
# vgcreate test_lvm /dev/hda6 /dev/hda7
vgcreate- -- INFO: using default physical extent size 4 MB
vgcreate- -- INFO: maximum logical volume size is 255.99 Gigabyte
vgcreate- -- doing automatic backup of volume group "test_lvm"
vgcreate- -- volume group "test_lvm" successfully created and activated
上述命o创Z个名为test_lvmQ包含有/dev/hda6?dev/hda7两个物理LL。用下面命令来Ȁzdl:
# vgchange -ay test_lvm
使用“vgdisplay”命o来查看所建立L的细节信息?
# vgdisplay
--- Volume group ---
VG Name test_lvm
VG Access read/write
VG Status available/resizable
VG # 0
MAX LV 256
Cur LV 1
Open LV 0
MAX LV Size 255.99 GB
Max PV 256
Cur PV 2
Act PV 2
VG Size 3.91 GB
PE Size 4 MB
Total PE 1000
Alloc PE / Size 256 / 1 GB
Free PE / Size 744 / 2.91 GB
VG UUID T34zIt-HDPs-uo6r-cBDT-UjEq-EEPB-GF435E
W六步:创徏一个逻辑南用lvcreate命o在卷l中创徏一个逻辑P
# lvcreate -L2G -nlogvol1 test_lvm
W七步:创徏文gpȝ。在该逻辑卷上选择使用reiserfs日志文gpȝQ?
# mkreiserfs /dev/test_lvm/logvol1
使用mount命o来加载新创徏的文件系l?
# mount -t reiserfs /dev/test_lvm/logvol1 /mnt/lv1
W八步:?etc/fstab?etc/lilo.conf中添加一个入口。在/etc/fstab中加入以下入口,在启动时加蝲文gpȝQ?
/dev/test_lvm/logvol1 /mnt/lv1 reiserfs defaults 1 1
如果没有覆盖原来的内核,那么拯一份重新编译后的内核,q且在启动时选择是否使用LVM。下面是LILO文g的内容:
image = /boot/lvm_kernel_image
label = linux-lvm
root = /dev/hda1
initrd = /boot/init_image
ramdisk = 8192
d以上内容后,使用以下命o重新加蝲LILOQ?
#/sbin/lilo
W九步:修改逻辑L大小。可以用lvextend命o方便C攚w辑L大小Q增加逻辑卷大的Ҏ如下Q?
# lvextend -L+1G /dev/test_lvm/logvol1
lvextend -- extending logical volume "/dev/test_lvm/logvol1" to 3GB
lvextend -- doing automatic backup of volume group "test_lvm"
lvextend -- logical volume "/dev/test_lvm/logvol1" successfully extended
cM的,减小逻辑卷大的Ҏ如下Q?
# lvreduce -L-1G /dev/test_lvm/lv1
lvreduce -- -Warning: reducing active logical volume to 2GB
lvreduce- -- This may destroy your data (filesystem etc.)
lvreduce -- -do you really want to reduce "/dev/test_lvm/lv1"? [y/n]: y
lvreduce- -- doing automatic backup of volume group "test_lvm"
lvreduce- -- logical volume "/dev/test_lvm/lv1" successfully reduced
用硬件检?/span>E序kudzu探测新硬Ӟservice kudzu start ( or restart)
查看CPU信息Q?/span>cat /proc/cpuinfo
查看板卡信息Q?/span>cat /proc/pci
查看PCI信息Q?/span>lspci (相比cat /proc/pci更直观)
查看内存信息Q?/span>cat /proc/meminfo
查看USB讑֤Q?/span>cat /proc/bus/usb/devices
查看键盘和鼠?/span>:cat /proc/bus/input/devices
查看pȝ盘信息和用情况:fdisk & disk - l & df
查看各设备的中断h(IRQ):cat /proc/interrupts
查看pȝ体系l构Q?/span>uname -a
?/span>LINUX环境开发驱动程序,首先要探到新硬Ӟ接下来就是开发驱动程序?/span>
常用命o整理如下Q?/span>
用硬件检程?/span>kudzu探测新硬Ӟservice kudzu start ( or restart)
查看CPU信息Q?/span>cat /proc/cpuinfo
查看板卡信息Q?/span>cat /proc/pci
查看PCI信息Q?/span>lspci (相比cat /proc/pci更直观)
查看内存信息Q?/span>cat /proc/meminfo
查看USB讑֤Q?/span>cat /proc/bus/usb/devices
查看键盘和鼠?/span>:cat /proc/bus/input/devices
查看pȝ盘信息和用情况:fdisk & disk - l & df
查看各设备的中断h(IRQ):cat /proc/interrupts
查看pȝ体系l构Q?/span>uname –a
看看pȝ认出的盘先: cat /proc/partitions
dmidecode查看g信息Q包?/span>bios?/span>cpu、内存等信息
dmesg | more 查看g信息
对于“/proc”中文件可使用文g查看命o览其内容,文g中包含系l特定信息:
Cpuinfo LCPU信息
Dma LDMA通道信息
Filesystems 文gpȝ信息
Interrupts L中断信息
Ioprots LI/O端口号信?/span>
Meninfo L内存信息
Version Linux内存版本信息
?.6 内核以前一直用的是devfsQdevfs挂蝲?dev目录下,提供了一U类g文g的方法来理位于/dev目录下的所有设备,我们知道/dev? 录下的每一个文仉对应的是一个设备,至于当前该设备存在与否先且不论,而且q些Ҏ文g是位于根文gpȝ上的Q在制作文gpȝ的时候我们就已经建立了这 些设备文Ӟ因此通过操作q些Ҏ文gQ可以实C内核q行交互。但是devfs文gpȝ有一些缺点,例如Q不定的设备映,有时一个设备映的讑֤? 件可能不同,例如我的U盘可能对应sda有可能对应sdbQ没有够的?辅设备号Q当讑֤q多的时候,昄q会成ؓ一个问题;/dev目录下文件太多? 且不能表C当前系l上的实际设备;命名不够灉|Q不能Q意指定等{?/font>
正因Zq这些问题的存在Q在linux2.6内核以后Q引入了一 个新 的文件系lsysfsQ它挂蝲?sys目录下,跟devfs一样它也是一个虚拟文件系l,也是用来对系l的讑֤q行理的,它把实际q接到系l上的设? 和ȝl织成一个分U的文gQ用L间的E序同样可以利用q些信息以实现和内核的交互,该文件系l是当前pȝ上实际设备树的一个直观反应,它是通过 kobject子系l来建立q个信息的,当一个kobject被创建的时候,对应的文件和目录也就被创ZQ位?sys下的相关目录下,既然每个讑֤? sysfs中都有唯一对应的目录,那么也就可以被用L间读写了。用L间的工具udev是利用了sysfs提供的信息来实现所有devfs的功能的Q? 但不同的是udevq行在用L间中Q而devfs却运行在内核I间Q而且udev不存在devfs那些先天的缺陗很昄Qsysfs是未来发展的方 向?/font>0Q停机(C不要把initdefault 讄?Q因样会使Linux无法启动 Q?br> 1Q单用户模式Q就像Win9X下的安全模式?br> 2Q多用户Q但是没?NFS ?br> 3Q完全多用户模式Q标准的q行U?br> 4Q一般不用,在一些特D情况下可以用它来做一些事情?br> 5QX11Q即q到 X-Window pȝ?br> 6Q重新启?Q记住不要把initdefault 讄?Q因样会使Linux不断地重新启动)?/font>
其中q行U?是我们要进入的标准Console字符界面模式
#
# inittab This file describes how the INIT process should set up
# the system in a certain run-level.
#
# Author: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
# Modified for RHS Linux by Marc Ewing and Donnie Barnes
#
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
# Things to run in every runlevel
ud::once:/sbin/update
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# When our UPS tells us power has failed, assume we have a few minutes
# of power left. Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon
id 用来定义~省的initq行的?br>
si 是系l初始化的进E?br>
ln 其中的n?~6,指明该进E可以用的runlevel的?br>
ud 是升U进E?br>
ca 指明当按下Ctrl+Alt+Del是运行的q程
pf 指当UPS表明断电时运行的q程
pr 是在pȝ真正关闭之前QUPS发出甉|恢复的信h需要运行的q程
x 是将pȝ转入Xl端旉要运行的q程
boot 在系l启动时q行Q忽略runlevel
bootwait 在系l启动时q行Qinit{待q程完成。忽略runlevel
ctrlaltdel 当Ctrl+Alt+Del三个键同时按下时q行Q把SIGINT信号发送给init。忽略runlevel
initdefault 不要执行q个q程Q它用于讄默认runlevel
kbrequest 当init从键盘中收到信号时运行。这里要求键盘组合符合KeyBoardSigral(参见/usr/share/doc/kbd-*关于键盘l合的文?
off 止q入Q因此该q程不运?br>
once 每一个runlevelU别q行一?br>
ondemand 当系l指定特定的q行U别A、B、C时运?br>
powerfail 当init收到SIGPWR信号时运?br>
powerokwait 当收到SIGPWD信号?etc/文g中的甉|状态包含OK时运?br>
powerwait 当收到SIGPWD信号Qƈ且init{待q程l束时运?br>
respawn 不管何时l止都重新启动进E?br>
sysinit 在运行boot或bootwaitq程之前q行
wait q行q程{待输入q行模式
阅读
# /etc/inputrc的开?br>
# 认我们不会在同一行中输出所有的东西?br>set horizontal-scroll-mode Off
# 开?比特输入
set meta-flag On
set input-meta On
# 止对第8个比特过?br>set convert-meta Off
# 在显C时保存W?个比?br>set output-meta On
# 关闭可视和声xC?br>set bell-style none
# 下面的内容给Z在readline
# 函数W一部分中包括的换码W序列的?br>
"\eOd": backward-word
"\eOc": forward-word
# 在控制台使用
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[5~": beginning-of-history
"\e[6~": end-of-history
"\e[3~": delete-char
"\e[2~": quoted-insert
# xterm使用
"\eOH": beginning-of-line
"\eOF": end-of-line
# /etc/inputrcl束
全局的设定值包含在 "\M-H ; \C-H" : "cd $HOME"
"\M-H + \C-H" : "cd $HOME"
"\M-H & \C-H" : "cd $HOME"
....
Any idea is greatly appreciated! 3KU very much !
先用cat查看l合热键的ASCII字符Q?
# cat
<按下热键Q如QCtrl-Alt-H>
看到了什么? ^[^H 对不对?
?lt;Ctrl-D>退?
同理可以得知其他l合热键对应的ASCII字符Q?有一些组合热键像CtrlQAltQD/Q/Z/C/S/M/J/U/I/E好像不能使用Q不q没关系Q可用的热键?5个左?
然后修改/etc/inputrc ?~/.inputrcQ向里面dl合热键的宏定义Q偶的如下:
"^[^G":"gaim & &>/dev/null && disown\C-M"
#按Ctrl-Alt-g在当前shell打开gaim, q脱该shell独立q行Q即Q即使你退Z该shellQ?
gaim也不会关闭字W输入方? 在vi的插入模式下Q?^[是先按Ctrl-V, 然后按ESCQ[^G是先按Ctrl-v,
然后按Ctrl-HQ其他的与此cM
"^[^H":"vi /etc/httpd/conf/httpd.conf\C-M"
# Ctrl-Alt-h 打开vi~辑器编辑apache的配|文?
"^[^L":"stardict & &>/dev/null && disown\C-M"
# Ctrl-Alt-l ->> q行星际译王(l->look up查询的意思)
"^[^O":"soffice & &>/dev/null && disown\C-M"
# Ctrl-Alt-o ->> 打开Openoffice
"^[^P":"opera & &>/dev/null && disown\C-M"
# Ctrl-Alt-p ->> 大名鼎鼎的浏览器Opera
"^[^X":"xmms & &>/dev/null && disown\C-M"
试一下:
su -
<Press Ctrl-Alt-X>
用户在用Linuxpȝ的时候,q需要相关的工作环境。ؓ此,理员应为用戯|登录环境?
当用L录Linuxpȝ后,通常接触的第一个Y件环境就是bash命o解释E序Q这是除了系l核心之外最重要的Y件环境。在Linuxpȝ中,软g环境的配|信息通常都存攑֜一些配|文件中?
以下是一些较为重要的Shell环境配置文gQ?
?etc/bashrc 包含pȝ定义的命令别名和bash的环境变量定义?
?etc/profile 包含pȝ的环境定义,q指定启动时必须q行的程序?
?etc/inputrc 包含pȝ的键盘设定,以及针对不同l端E序的键位配|信息?
?HOME/.bashrc 包含为用户定义的命o别名和bash的环境变量定义?
?HOME/bash_profile 包含为用户定义的环境变量Qƈ指定用户d旉要启动的E序?
?HOME/.inputrc 包含用户的键盘设定,以及针对用户l端的键位配|信息?
q些文g都是采用Shell语言~写的系l脚本文Ӟ通常用户目录下的配置文g?etc目录中相对应的文件大致相同?
一、Linuxpȝ用户账号的管?/p>
用户账号的管理工作主要涉及到用户账号的添加、修改和删除?/p>
d用户账号是在系l中创徏一个新账号Q然后ؓ新̎号分配用户号、用L、主目录和登录Shell{资源。刚d的̎h被锁定的Q无法用?
1、添加新的用戯̎号用useradd命oQ其语法如下Q?/p>
useradd 选项 用户?/p>
其中各选项含义如下Q?/p>
-c comment 指定一D|释性描q?/p>
-d 目录 指定用户ȝ录,如果此目录不存在Q则同时使用-m选项Q可以创Z目录?/p>
-g 用户l?指定用户所属的用户l?/p>
-G 用户l,用户l?指定用户所属的附加l?/p>
-s Shell文g 指定用户的登录Shell?/p>
-u 用户?指定用户的用户号Q如果同时有-o选项Q则可以重复使用其他用户的标识号?/p>
用户?指定新̎Ld名?/p>
2、例子说?/p>
?Q?/p>
# useradd –d /usr/sam -m sam
此命令创Z一个用户samQ?
其中-d?m选项用来为登录名sam产生一个主目录/usr/samQ?usr为默认的用户ȝ录所在的父目录)?/p>
?Q?/p>
# useradd -s /bin/sh -g group –G adm,root gem
此命令新Z一个用户gemQ该用户的登录Shell?bin/shQ它属于group用户l,同时又属于adm和root用户l,其中group用户l是其主l?
q里可能新徏l:#groupadd group及groupadd adm
增加用户账号是?etc/passwd文g中ؓ新用户增加一条记录,同时更新其他pȝ文g?etc/shadow, /etc/group{?/p>
Linux提供了集成的pȝ理工具userconfQ它可以用来对用戯̎可行统一理?/p>
3、删除帐?/p>
如果一个用L账号不再使用Q可以从pȝ中删除。删除用戯̎号就是要?etc/passwd{系l文件中的该用户记录删除Q必要时q删除用Lȝ录。删除一个已有的用户账号使用userdel命oQ其格式如下Q?/p>
userdel 选项 用户?/p>
常用的选项?rQ它的作用是把用Lȝ录一起删除?/p>
例如Q?/p>
# userdel sam
此命令删除用户sam在系l文件中Q主要是/etc/passwd, /etc/shadow, /etc/group{)的记录,同时删除用户的主目录?/p>
4、修改帐?/p>
修改用户账号是Ҏ实际情况更改用户的有兛_性,如用户号、主目录、用L、登录Shell{?/p>
修改已有用户的信息用usermod命oQ其格式如下Q?/p>
usermod 选项 用户?/p>
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o{,q些选项的意义与useradd命o中的选项一P可以为用h定新的资源倹{另外,有些pȝ可以使用如下选项Q?/p>
-l 新用户名
q个选项指定一个新的̎P卛_原来的用户名改ؓ新的用户名?/p>
例如Q?/p>
# usermod -s /bin/ksh -d /home/z –g developer sam
此命令将用户sam的登录Shell修改为kshQ主目录改ؓ/home/zQ用L改ؓdeveloper?/p>
5、用户口令的理
用户理的一w要内Ҏ用户口o的管理。用戯̎号刚创徏时没有口令,但是被系l锁定,无法使用Q必Mؓ其指定口令后才可以用,即是指定空口o?/p>
指定和修改用户口令的Shell命o是passwd。超U用户可以ؓ自己和其他用h定口令,普通用户只能用它修改自q口o。命令的格式为:
passwd 选项 用户?/p>
可用的选项Q?/p>
-l 锁定口oQ即用账号?/p>
-u 口o解锁?/p>
-d 使̎h口o?/p>
-f 用户下次d时修改口令?/p>
如果默认用户名,则修改当前用L口o?/p>
例如Q假讑ֽ前用hsamQ则下面的命令修改该用户自己的口令:
$ passwd
Old password:******
New password:*******
Re-enter new password:*******
如果是超U用P可以用下列Ş式指定Q何用L口oQ?/p>
# passwd sam
New password:*******
Re-enter new password:*******
普通用户修改自q口oӞpasswd命o会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一_则将q个口o指定l用P而超U用户ؓ用户指定口oӞ׃需要知道原口o?
Zpȝ安全赯Q用户应该选择比较复杂的口令,例如最好?位长的口令,口o中包含有大写、小写字母和数字Qƈ且应该与姓名、生日等不相同?/p>
为用h定空口oӞ执行下列形式的命令:
# passwd -d sam
此命令将用户sam的口令删除,q样用户sam下一ơ登录时Q系l就不再询问口o?/p>
passwd命oq可以用-l(lock)选项锁定某一用户Q其不能登录,例如Q?/p>
# passwd -l sam
wingger 回复于:2004-11-04 13:03:40
二、Linuxpȝ用户l的理
每个用户都有一个用LQ系l可以对一个用L中的所有用戯行集中管理。不同Linux pȝ对用L的规定有所不同Q如Linux下的用户属于与它同名的用LQ这个用L在创建用h同时创徏?
用户l的理涉及用户l的d、删除和修改。组的增加、删除和修改实际上就是对/etc/group文g的更新?/p>
1、增加一个新的用L使用groupadd命o。其格式如下Q?
groupadd 选项 用户l?/p>
可以使用的选项有:
-g GID 指定新用L的组标识PGIDQ?/p>
-o 一般与-g选项同时使用Q表C新用户l的GID可以与系l已有用L的GID相同?/p>
?Q?
# groupadd group1
此命令向pȝ中增加了一个新lgroup1Q新l的l标识号是在当前已有的最大组标识L基础上加1?/p>
?Q?
#groupadd -g 101 group2
此命令向pȝ中增加了一个新lgroup2Q同时指定新l的l标识号?01?/p>
2、如果要删除一个已有的用户l,使用groupdel命oQ其格式如下Q?
groupdel 用户l?/p>
例如Q?
#groupdel group1
此命令从pȝ中删除组group1?/p>
3、修改用L的属性用groupmod命o。其语法如下Q?
groupmod 选项 用户l?/p>
常用的选项有:
-g GID 为用L指定新的l标识号?/p>
-o ?g选项同时使用Q用L的新GID可以与系l已有用L的GID相同?/p>
-n新用L 用L的名字改为新名字
?Q?
# groupmod -g 102 group2
此命令将lgroup2的组标识号修改ؓ102?/p>
?Q?
# groupmod –g 10000 -n group3 group2
此命令将lgroup2的标识号改ؓ10000Q组名修改ؓgroup3?/p>
4、如果一个用户同时属于多个用LQ那么用户可以在用户l之间切换,以便h其他用户l的权限。用户可以在d后,使用命onewgrp切换到其他用LQ这个命令的参数是目的用户l。例如:
$ newgrp root
q条命o当前用户切换到root用户l,前提条g是root用户l确实是该用Lȝ或附加组。类g用户账号的管理,用户l的理也可以通过集成的系l管理工h完成?/p>
wingger 回复于:2004-11-04 13:21:16
三、与用户账号有关的系l文?/p>
完成用户理的工作有许多U方法,但是每一U方法实际上都是Ҏ关的pȝ文gq行修改。与用户和用L相关的信息都存放在一些系l文件中Q这些文件包?etc/passwd, /etc/shadow, /etc/group{。下面分别介l这些文件的内容?
1?etc/passwd文g是用L理工作涉及的最重要的一个文件。Linuxpȝ中的每个用户都在/etc/passwd文g中有一个对应的记录行,它记录了q个用户的一些基本属性。这个文件对所有用户都是可ȝ。它的内容类g面的例子Q?/p>
Q?cat /etc/passwd
root:x:0:0:Superuser:/:
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:
sys:x:3:3:Owner of system files:/usr/sys:
adm:x:4:4:System accounting:/usr/adm:
uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
auth:x:7:21:Authentication administrator:/tcb/files/auth:
cron:x:9:16:Cron daemon:/usr/spool/cron:
listen:x:37:4:Network daemon:/usr/net/nls:
lp:x:71:18:Printer administrator:/usr/spool/lp:
sam:x:200:50:Sam san:/usr/sam:/bin/sh
从上面的例子我们可以看到Q?etc/passwd中一行记录对应着一个用P每行记录又被冒号(:)分隔?个字D,其格式和具体含义如下Q?/p>
用户?口o:用户标识?l标识号:注释性描q?ȝ?dShell
1Q?#8220;用户?#8221;是代表用戯̎L字符丌Ӏ通常长度不超q?个字W,q且由大写字母?或数字组成。登录名中不能有冒号(:)Q因为冒号在q里是分隔符。ؓ了兼容v见,d名中最好不要包含点字符(.)Qƈ且不使用q字W?-)和加?+)打头?/p>
2Q?#8220;口o”一些系l中Q存攄加密后的用户口o字。。虽然这个字D存攄只是用户口o的加密串Q不是明文,但是׃/etc/passwd? 件对所有用户都可读Q所以这仍是一个安全隐患。因此,现在许多Linux pȝQ如SVR4Q都使用了shadow技术,把真正的加密后的用户口o字存攑ֈ/etc/shadow文g中,而在/etc/passwd文g的口令字 D中只存放一个特D的字符Q例?#8220;x”或?#8220;*”?/p>
3Q?#8220;用户标识?#8221;是一个整敎ͼpȝ内部用它来标识用戗一般情况下它与用户名是一一对应的。如果几个用户名对应的用h识号是一LQ系l内部将把它们视为同一个用P但是它们可以有不同的口o、不同的ȝ录以及不同的dShell{?/p>
通常用户标识L取D围是0?5 535?是超U用户root的标识号Q??9ql保留,作ؓ理账号Q普通用L标识号从100开始。在Linuxpȝ中,q个界限?00?/p>
4Q?#8220;l标识号”字段记录的是用户所属的用户l。它对应着/etc/group文g中的一条记录?/p>
5)“注释性描q?#8221;字段记录着用户的一些个人情况,例如用户的真实姓名、电话、地址{,q个字段q没有什么实际的用途。在不同的Linux pȝ中,q个字段的格式ƈ没有l一。在许多Linuxpȝ中,q个字段存放的是一DQ意的注释性描q文字,用做finger命o的输出?/p>
6)“ȝ?#8221;Q也是用户的v始工作目录,它是用户在登录到pȝ之后所处的目录。在大多数系l中Q各用户的主目录都被l织在同一个特定的目录 下,而用户主目录的名U就是该用户的登录名。各用户对自qȝ录有诅R写、执行(搜烦Q权限,其他用户Ҏ目录的访问权限则Ҏ具体情况讄?/p>
7)用户d后,要启动一个进E,负责用L操作传给内核Q这个进E是用户d到系l后q行的命令解释器或某个特定的E序Q即Shell? Shell是用户与Linuxpȝ之间的接口。Linux的Shell有许多种Q每U都有不同的特点。常用的有sh(Bourne Shell), csh(C Shell), ksh(Korn Shell), tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell){。系l管理员可以Ҏpȝ情况和用户习惯ؓ用户指定某个Shell。如果不指定ShellQ那么系l用sh为默认的dShellQ即q? 个字D늚gؓ/bin/sh?/p>
用户的登录Shell也可以指定ؓ某个特定的程序(此程序不是一个命令解释器Q。利用这一特点Q我们可以限制用户只能运行指定的应用E序Q在该应用程序运行结束后Q用户就自动退Zpȝ。有些Linux pȝ要求只有那些在系l中登记了的E序才能出现在这个字D中?/p>
8)pȝ中有一cȝLZ用户Qpsuedo usersQ,q些用户?etc/passwd文g中也占有一条记录,但是不能dQ因为它们的dShell为空。它们的存在主要是方便系l管理,满相应的系l进E对文g属主的要求。常见的伪用户如下所C?/p>
? ? ?nbsp; ?nbsp; ?/p>
bin 拥有可执行的用户命o文g
sys 拥有pȝ文g
adm 拥有帐户文g
uucp UUCP使用
lp lp或lpd子系l?/p>
nobody NFS使用
拥有帐户文g
除了上面列出的伪用户外,q有许多标准的伪用户Q例如:audit, cron, mail, usenet{,它们也都各自为相关的q程和文件所需要?/p>
׃/etc/passwd文g是所有用户都可读的,如果用户的密码太单或规律比较明显的话Q一台普通的计算机就能够很容易地它破解Q因? 对安全性要求较高的Linuxpȝ都把加密后的口o字分d来,单独存放在一个文件中Q这个文件是/etc/shadow文g。只有超U用h拥有该文? L限,q就保证了用户密码的安全性?/p>
2?etc/shadow中的记录行与/etc/passwd中的一一对应Q它由pwconv命oҎ/etc/passwd中的数据自动产生。它的文件格式与/etc/passwdcMQ由若干个字D늻成,字段之间?#8220;:”隔开。这些字D|Q?/p>
d?加密口o:最后一ơ修Ҏ?最时间间?最大时间间?警告旉:不活动时?失效旉:标志
1Q?#8220;d?#8221;是与/etc/passwd文g中的d名相一致的用户账号
2Q?#8220;口o”字段存放的是加密后的用户口o字,长度?3个字W。如果ؓI,则对应用h有口令,d时不需要口令;如果含有不属于集?{ ./0-9A-Za-z }中的字符Q则对应的用户不能登录?
3Q?#8220;最后一ơ修Ҏ?#8221;表示的是从某个时刻vQ到用户最后一ơ修改口令时的天数。时间v点对不同的系l可能不一栗例如在SCO Linux 中,q个旉L?970q??日?
4Q?#8220;最时间间?#8221;指的是两ơ修改口令之间所需的最天数?
5Q?#8220;最大时间间?#8221;指的是口令保持有效的最大天数?
6Q?#8220;警告旉”字段表示的是从系l开始警告用户到用户密码正式失效之间的天数?
7Q?#8220;不活动时?#8221;表示的是用户没有dzd但̎号仍能保持有效的最大天数?
8Q?#8220;失效旉”字段l出的是一个绝对的天数Q如果用了q个字段Q那么就l出相应账号的生存期。期满后Q该账号׃再是一个合法的账号Q也׃能再用来d了?/p>
下面?etc/shadow的一个例子:
Q?cat /etc/shadow
root:Dnakfw28zf38w:8764:0:168:7:::
daemon:*::0:0::::
bin:*::0:0::::
sys:*::0:0::::
adm:*::0:0::::
uucp:*::0:0::::
nuucp:*::0:0::::
auth:*::0:0::::
cron:*::0:0::::
listen:*::0:0::::
lp:*::0:0::::
sam:EkdiSECLWPdSa:9740:0:0::::
3、用L的所有信息都存放?etc/group文g中?/p>
用户分l是Linux pȝ中对用户q行理及控制访问权限的一U手Dc每个用户都属于某个用户l;一个组中可以有多个用户Q一个用户也可以属于不同的组。当一个用户同时是多个 l中的成员时Q在/etc/passwd文g中记录的是用h属的ȝQ也是d时所属的默认l,而其他组UCؓ附加l。用戯讉K属于附加l的文gӞ 必须首先使用newgrp命o使自己成为所要访问的l中的成员。用L的所有信息都存放?etc/group文g中。此文g的格式也cM?etc /passwd文gQ由冒号(:)隔开若干个字D,q些字段有:
l名:口o:l标识号:l内用户列表
1Q?#8220;l名”是用L的名Uͼ由字母或数字构成。与/etc/passwd中的d名一Pl名不应重复?
2Q?#8220;口o”字段存放的是用户l加密后的口令字。一般Linux pȝ的用L都没有口令,卌个字D一般ؓI,或者是*?
3Q?#8220;l标识号”与用h识号cMQ也是一个整敎ͼ被系l内部用来标识组?
4Q?#8220;l内用户列表”是属于这个组的所有用L列表/b]Q不同用户之间用逗号(,)分隔。这个用L可能是用LȝQ也可能是附加组?/p>
/etc/group文g的一个例子如下:
# cat /etc/group
root::0:root
bin::2:root,bin
sys::3:root,uucp
adm::4:root,adm
daemon::5:root,daemon
lp::7:root,lp
users::20:root,sam
wingger 回复于:2004-11-04 13:31:28
四、添加量用户?/p>
d和删除用户对每位Linuxpȝ理员都是轻而易丄事,比较手的是如果要添加几十个、上百个甚至上千个用hQ我们不太可能还使用
useradd一个一个地dQ必然要找一U简便的创徏大量用户的方法。Linuxpȝ提供了创建大量用L工具Q可以让您立卛_建大量用PҎ如下Q?
Q?Q先~辑一个文本用hӞ每一列按?etc/passwd密码文g的格式书写,要注意每个用L用户名、UID、宿ȝ录都不可以相同,其中密码栏可以留做空白或输入x受一个范例文件user.txt内容如下Q?/p>
user001::600:100:user:/home/user001:/bin/bash
user002::601:100:user:/home/user002:/bin/bash
user003::602:100:user:/home/user003:/bin/bash
user004::603:100:user:/home/user004:/bin/bash
user005::604:100:user:/home/user005:/bin/bash
user006::605:100:user:/home/user006:/bin/bash
Q?Q以rootw䆾执行命o/usr/sbin/newusersQ从刚创建的用户文guser.txt中导入数据,创徏用户Q?/p>
# newusers < user.txt
然后可以执行命ovipw或vi /etc/passwd?etc/passwd文g是否已经出现q些用户的数据,q且用户的宿ȝ录是否已l创建?/p>
Q?Q执行命?usr/sbin/pwunconvQ将/etc/shadow产生的shadow密码解码Q然后回写到/etc /passwd中,q将/etc/shadow的shadow密码栏删掉。这是ؓ了方便下一步的密码转换工作Q即先取消shadow password功能?/p>
# pwunconv
Q?Q编辑每个用L密码对照文gQ范例文件passwd.txt内容如下Q?/p>
user001:密码
user002:密码
user003:密码
user004:密码
user005:密码
user006:密码
Q?Q以rootw䆾执行命o/usr/sbin/chpasswdQ创建用户密码,chpasswd会将l过/usr/bin/passwd命o~码q的密码写入/etc/passwd的密码栏?/p>
# chpasswd < passwd.txt
Q?Q确定密码经~码写入/etc/passwd的密码栏后,执行命o/usr/sbin/pwconv密码编码ؓshadow passwordQƈ结果写?etc/shadow?/p>
# pwconv
q样完成了大量用户的创ZQ之后您可以?home下检查这些用户宿ȝ录的权限讄是否都正,q登录验证用户密码是否正?/p>
wingger 回复于:2004-11-04 13:39:12
五、赋予普通用LD权?/p>
在Linuxpȝ中,理员往往不止一人,若每位管理员都用rootw䆾q行理工作Q根本无法弄清楚谁该做什么。所以最好的方式是:理员创Z些普通用P分配一部分pȝ理工作l他们?
我们不可以用su让他们直接变成rootQ因些用户都必须知道root的密码,q种Ҏ很不安全Q而且也不W合我们的分工需求。一般的做法是利
用权限的讄Q依工作性质分类Q让Ҏw䆾的用h为同一个工作组Qƈ讄工作l权限。例如:要wwwadmq位用户负责理|站数据Q一般Apache
Web
Server的进Ehttpd的所有者是wwwQ您可以讄用户wwwadm与www为同一工作l,q设|Apache默认存放|页目录/usr
/local/httpd/htdocs的工作组权限为可诅R可写、可执行Q这样属于此工作l的每位用户可以进行网늚理了?/p>
但这q不是最好的解决办法Q例如管理员x予一个普通用户关机的权限Q这时用上q的办法׃是很理想。这时您也许会想Q我只让q个用户可以? rootw䆾执行shutdown命op了。完全没错,可惜在通常的Linuxpȝ中无法实现这一功能Q不q已l有了工具可以实现这L功能—? sudo?/p>
sudo通过l护一个特权到用户名映的数据库将Ҏ分配l不同的用户Q这些特权可由数据库中所列的一些不同的命o来识别。ؓ了获得某一Ҏ ,有资格的用户只需单地在命令行输入sudo与命令名之后Q按照提C再ơ输入口令(用户自己的口令,不是root用户口oQ。例如,sudo允许普? 用户格式化磁盘,但是却没有赋予其他的root用户Ҏ?/p>
1、sudo工具由文?etc/sudoersq行配置Q该文g包含所有可以访问sudo工具的用户列表ƈ定义了他们的Ҏ。一个典型的/etc/sudoers条目如下Q?/p>
liming ALL=(ALL) ALL
q个条目使得用户liming作ؓ用户讉K所有应用程序,如用户liming需要作U用戯行命令,他只需单地在命令前加上前缀sudo。因此,要以root用户的n份执行命令formatQliming可以输入如下命oQ?/p>
# sudo /usr/sbin/useradd sam
注意Q命令要写绝对\径,/usr/sbin默认不在普通用L搜烦路径中,或者加入此路径QPATH=$PATH:/usr/sbin;export PATH。另外,不同pȝ命o的\径不相同,可以使用命o“whereis 命o?#8221;来查扑օ路径?/p>
q时会显CZ面的输出l果Q?/p>
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正确地输入了口oQ命令useradd会以root用户w䆾执行?/p>
注意Q配|文?etc/sudoers必须使用命o Visudo来编辑?/p>
只要把相应的用户名、主机名和许可的命o列表以标准的格式加入到文?etc/sudoersQƈ保存可以生效,再看一个例子?/p>
2、例子:理员需要允许gem用户在主机sun上执行reboot和shutdown命oQ在/etc/sudoers中加入:
gem sun=/usr/sbin/rebootQ?usr/sbin/shutdown
注意Q命令一定要使用l对路径Q以避免其他目录的同名命令被执行Q从而造成安全隐患?/p>
然后保存退出,gem用户x行reboot命oӞ只要在提C符下运行下列命令:
$ sudo /usr/sbin/reboot
输入正确的密码,可以重启服务器了?/p>
如果您想对一l用戯行定义,可以在组名前加上%Q对其进行设|,如:
%cuug ALL=(ALL) ALL
3、另外,q可以利用别名来化配|文件。别名类似组的概念,有用户别名、主机别名和命o别名。多个用户可以首先用一个别名来定义Q然后在规定他们可以?
行什么命令的时候用别名就可以了,q个配置Ҏ有用户都生效。主机别名和命o别名也是如此。注意用前先要?etc/sudoers中定
义:User_Alias, Host_Alias, Cmnd_Alias,在其后面加入相应的名Uͼ也以逗号分隔开可以了QD例如下:
Host_Alias SERVER=no1
User_Alias ADMINS=limingQgem
Cmnd_Alias SHUTDOWN=/usr/sbin/haltQ?usr/sbin/shutdownQ?usr/sbin/reboot
ADMINS SERVER=SHUTDOWN
4、再看这个例子:
ADMINS ALL=(ALL) NOPASSWD: ALL
表示允许ADMINS不用口o执行一切操作,其中“NOPASSWD:”定义了用户执行操作时不需要输入口令?/p>
5、sudo命oq可以加上一些参敎ͼ完成一些辅助的功能Q如
$ sudo –l
会显C出cMq样的信息:
User liming may run the following commands on this host:
(root) /usr/sbin/reboot
说明root允许用户liming执行/usr/sbin/reboot命o。这个参数可以用户查看自己目前可以在sudo中执行哪些命令?/p>
6、在命o提示W下键入sudo命o会列出所有参敎ͼ其他一些参数如下:
-V 昄版本~号?/p>
-h 昄sudo命o的用参数?/p>
-v 因ؓsudo在第一ơ执行时或是在N分钟内没有执行(N预设?Q会询问密码。这个参数是重新做一ơ确认,如果过N分钟Q也会问密码?/p>
-k 会使用者在下一ơ执行sudo时询问密码(不论有没有超qN分钟Q?/p>
-b 要执行的命令放在背景执行?/p>
-p prompt 可以更改问密码的提示语,其中%u会替换ؓ使用者的账号名称Q?h会显CZ机名U?/p>
-u username/#uid 不加此参敎ͼ代表要以root的n份执行命令,而加了此参数Q可以以username的n份执行命令(#uidusername的UIDQ?/p>
-s 执行环境变量中的 SHELL 所指定?Shell Q或?/etc/passwd 里所指定?Shell?/p>
-H 环境变量中的HOMEQ宿ȝ录)指定变更w䆾的用者的宿主目录。(如不?u参数是pȝ理者root。)
要以pȝ理者n份(或以-u更改为其他hQ执行的命o?/p>
因ؓ是第一ơ在裸设备上面安装数据库Q所以有很多知识点还是没有学CQ经q自q多方琢磨Q深入思考,问题l于解决Q现ȝ安装步骤如下Q?
W一步:创徏裸设备?
按照以下步骤执行Q?
我的实验机器上存在三块硬盘,sdaQsdbQsdc。其中sda只用来安装了操作pȝQ以及应用YӞ另外两块盘准备用来做裸讑֤存储数据?
为sdb划分分区Q这块硬盘用来存放数据库pȝ文gsystemQsysaux{等
[root@pora ~]# fdisk /dev/sdb
Command (m for help): p 查看分区情况
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 652 5237158+ 5 Extended
/dev/sdb5 1 13 104359+ 83 Linux control01
/dev/sdb6 14 26 104391 83 Linux control02
/dev/sdb7 27 39 104391 83 Linux control03
/dev/sdb8 40 52 104391 83 Linux redo01
/dev/sdb9 53 59 56196 83 Linux redo02
/dev/sdb10 60 182 987966 83 Linux system
/dev/sdb11 183 305 987966 83 Linux sysaux
/dev/sdb12 306 428 987966 83 Linux undotbs1
/dev/sdb13 429 652 1799248+ 83 Linux temp
Ҏ盘大小分别划分不同大小的区来作为每个文件的存储Q这里用U色字体标识出来的内容ؓ注释?
具体如何利用fdisk来划分区Q这里就不详l介l了Q可以参考相兌料?
[root@pora ~]# fdisk /dev/sdb
Command (m for help): n 创徏分区
Command action
l logical (5 or over)
p primary partition (1-4)
q里选择 l 创徏逻辑分区
First cylinder (1-261, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-261, default 261): +1000M 创徏1G的分?
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks. 保存分区表,同步到硬?
同理使用fdisk 为sdcq块盘划分相应的分区,q块盘主要用来存放业务数据?
创徏完所有分Z后,我们使用如下命o来查看:
[root@pora ~]# fdisk -l
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 1177 9454221 83 Linux
/dev/sda2 1178 1304 1020127+ 82 Linux swap
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 652 5237158+ 5 Extended
/dev/sdb5 1 13 104359+ 83 Linux
/dev/sdb6 14 26 104391 83 Linux
/dev/sdb7 27 39 104391 83 Linux
/dev/sdb8 40 52 104391 83 Linux
/dev/sdb9 53 59 56196 83 Linux
/dev/sdb10 60 182 987966 83 Linux
/dev/sdb11 183 305 987966 83 Linux
/dev/sdb12 306 428 987966 83 Linux
/dev/sdb13 429 652 1799248+ 83 Linux
Disk /dev/sdc: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 1 652 5237158+ 5 Extended
/dev/sdc5 1 123 987934+ 83 Linux
/dev/sdc6 124 246 987966 83 Linux
/dev/sdc7 247 369 987966 83 Linux
/dev/sdc8 370 492 987966 83 Linux
/dev/sdc9 493 620 1028128+ 83 Linux
/dev/sdc10 621 652 257008+ 83 Linux
W二步:讑֤建立映射关系
#vi /etc/sysconfig/rawdevices q个文g用来在启动的时候加载裸讑֤
内容如下Q?
/dev/raw/raw1 /dev/sdb5
/dev/raw/raw2 /dev/sdb6
/dev/raw/raw3 /dev/sdb7
/dev/raw/raw4 /dev/sdb8
/dev/raw/raw5 /dev/sdb9
/dev/raw/raw6 /dev/sdb10
/dev/raw/raw7 /dev/sdb11
/dev/raw/raw8 /dev/sdb12
/dev/raw/raw9 /dev/sdc5
/dev/raw/raw10 /dev/sdc6
/dev/raw/raw11 /dev/sdc7
/dev/raw/raw12 /dev/sdc8
/dev/raw/raw13 /dev/sdc9
/dev/raw/raw14 /dev/sdc10
建立链接关系
ln -s /dev/raw/raw1 /oracle/oradata/orcl/control01
ln -s /dev/raw/raw2 /oracle/oradata/orcl/control02
ln -s /dev/raw/raw3 /oracle/oradata/orcl/control03
ln -s /dev/raw/raw4 /oracle/oradata/orcl/redo01
ln -s /dev/raw/raw5 /oracle/oradata/orcl/redo02
ln -s /dev/raw/raw6 /oracle/oradata/orcl/system
ln -s /dev/raw/raw7 /oracle/oradata/orcl/sysaux
ln -s /dev/raw/raw8 /oracle/oradata/orcl/undotbs1
ln -s /dev/raw/raw9 /oracle/oradata/orcl/temp
ln -s /dev/raw/raw10 /oracle/oradata/orcl/users
ln -s /dev/raw/raw11 /oracle/oradata/orcl/data
ln -s /dev/raw/raw12 /oracle/oradata/orcl/spfile
加蝲裸设?
#/sbin/service rawdevices restart
W三步:安装oracle软g
1.创徏用户Q赋予权?
#groupadd dba
#useradd oracle -G dba
#passwd oracle
密码讄? oracle
#mkdir /oracle
#chown oracle:dba /oracle
#chmod -R 755 /oracle
2.配置环境变量
#vi /home/oracle/.bash_profile
内容如下Q?
ORACLE_SID=orcl
ORACLE_BASE=/oracle
ORACLE_HOME=/oracle/ora10g
PATH=$ORACLE_HOME/bin:$PATH:.
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/local/lib
export ORACLE_SID ORACLE_BASE ORACLE_HOME PATH LD_LIBRARY_PATH
以oracle用户dQ执行以下操?
$mkdir /oracle/ora10g
$mkdir /oracle/arch
$su -
#xhost +
扑ֈ安装包所在目录,执行runInstaller
$./runInstaller
按照正常步骤安装oracle软gQ但是不需要创建数据库?
创徏oracle裸设备文?
#vi /home/oracle/dbca.conf
内容如下Q?
spfile = /oracle/oradata/orcl/spfile
system = /oracle/oradata/orcl/system
sysaux = /oracle/oradata/orcl/sysaux
undotbs1= /oracle/oradata/orcl/undotbs1
data = /oracle/oradata/orcl/data
temp = /oracle/oradata/orcl/temp
users = /oracle/oradata/orcl/users
redo1_1 = /oracle/oradata/orcl/redo01
redo1_2 = /oracle/oradata/orcl/redo02
control1= /oracle/oradata/orcl/control01
control2= /oracle/oradata/orcl/control02
control3= /oracle/oradata/orcl/control03
W四步:创徏数据?
$dbca
在选择存储讑֤的时候,我们选择W三Raw Devices,然后选中“specify Raw Devices Mapping File”复选框Q点?#8220;Browse”按钮Q选择上一步我们创建好的裸讑֤文g/home/oracle/dbca.conf,
然后点击“next”,配置相应的参敎ͼ在配|enable archiving的时候,选择归日志的存攄录ؓ/oracle/arch?
后面的步骤不详细列D了,希望大家自己ȝ,一直到创徏数据库完成?
W五步:试数据?[oracle@pora ~]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jul 17 14:24:51 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> select status from v$instance;
STATUS
------------
OPEN