Linux系统笔记





==========================================================================================================================



Linux分区:


硬盘分为两个区域:硬盘信息放置区(主引导分区『MBR』,MBR记录引导程序和磁盘分区表)和文件数据放置区。

MBR仅446字节,只有4个分区记录,即一个硬盘最多可以有4个(主+扩展)分区,且扩展分区最多只能有一个。

扩展分区又可以分为多个逻辑分区。


# modprobe usb-storage                               驱动usb




挂载分区:

# mount /dev/cdrom /mnt/cdrom                                        挂载光驱

# umount /dev/cdrom 或 umount /mnt/cdrom                             卸载光驱的2种办法

# mount /dev/fd0 /mnt/floppy                                         挂载软驱

# mount -t vfat /dev/hda2 /mnt/d                                     挂载windows系统FAT32格式介质

# mount -t ntfs /dev/hda3 /mnt/d                                     挂载windows系统NTFS格式介质

# mount -t iso9660 /dev/cdrom /mnt/cdrom                             光盘默认格式为iso9660

# mount -o UTF8 /dev/hda2 /mnt/d                                     挂载使用字符编码为UTF8

# e2label /dev/sdb2 cmd                                              为该分区添加卷标为“cmd”

# vi /etc/fdtab                                                      编辑文件使挂载分区永久生效

 LABEL=cmd /mnt/d ext3 defaults 0 0

# mount /mnt/sd1 -o remount,ro                                       以只读形式挂载

# mount 192.168.1.127:/var/ftp/pub /mnt/share                        将远程主机的一个文件共享过来



自动挂载工具Automounter(包含在autofs软件包中):

主配置文件:/etc/auto.master  格式: 挂载主目录 映射目录 参数

映射文件  :/etc/auto.misc    格式: 关键字 挂载选项 :设备(本机设备前必须加冒号)

# service autofs restart

# ls /misc/cd                 访问设备方法:挂载目录(misc)+关键字(cd)

# ln -s /misc/cdrom /cdrom    创建符号链接,便于在根目录下查看光驱




# df -Th                                     查看硬盘信息

# fdisk -l /dev/sdb                          查看这块硬盘信息

# fdisk  /dev/sdb                            进入该硬盘,之后才能进行操作

# mkfs.ext2 /dev/sdb1                        将sdb1分区以ext2格式化

# mkfs.ext3 -b 4096 -i 8192 -m 2 /dev/sdb1   分块格式化

# tune2fs                                    调整ext2/ext3文件系统特性的工具

# tune2fs -c -1 -i 0 /dev/sdb1               不允许分区自检

# tune2fs -m 2 /dev/sdb1                     分区保留空间强制为2%,默认为5%

# tune2fs -j /dev/sdb1                       强制将原本ext2格式的分区转变为ext3格式,不可逆

# tune2fs -l /dev/sdb1                       查看分区信息



Linux安装完成后无法启动:

grub>   1、可能BIOS太旧检测不到硬盘,下载最新BIOS文件刷新BIOS。

       2、硬盘容量太大主板不支持,记下硬盘的柱面、磁头、扇区,进入bios内手动设置。

       3、重新安装linux,分区时建100M左右的分区,将它载入到/boot载入点,并且载入点要在整个硬盘最前。


日历与日期:

cal、date:date +%Y/%m/%d、date +%H:%M、cal 2005、cal 7 2005


计算器:

bc:+加、-减、*乘、/除、^指数、%余数 默认bc仅输出整数,如要小数则在执行bc后输入scale=5,即5位小数。


常见数字含义:

1  用户可以操作的命令或则可执行文件

2  系统核心可调用的函数与工具等

3  一些常用的函数(function)与函数库(library)

4  设备文件的说明

5  设置文件或则是某些文件的格式

6  游戏(games)

7  惯例与协议等,例如linux标准文件系统、网络协议、ASCII码等说明内容

8  系统管理员可用的惯例命令

9  与内核有关的文件


正确关机:

shutdown、init、halt、reboot、poweroff 在执行关机前,最好手动使用 sync 这个命令,将内存数据存入硬盘。


磁盘修复:

fsck /dev/hdb7


启动网卡:

ifconfig eth0 up


解决虚拟机每次开机service network restart:

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

 ONBOOT=yes

# vi /etc/rc.d/rc.local

 ifconfig eth0

 ifconfig eth0 up

 ifup eth0


Linux文件系统:

Linux中任何一个文件都具有“用户、用户组、其他人”3种权限。

-rwxrwx---:

这里格式一共有10个属性,其中第一个属性表示这个是个“目录、文件、或则链接文件等”。[d]目录、[-]文件、[l]连接文件、[b]设备文件中可供存储的接口设备、[c]设备文件中串行端口设备。剩下9个属性,每三个为一组,分别代表“拥有者的权限”“同用户组的权限”“其他非本用户组的权限”。r 只读4  w 可写2 x 可执行1 。且对目录权限需要有x其他权限才能生效,而文件则不需要。



服务开关:

chkconfig 重启后生效  开启防火墙: chkconfig iptables on  关闭防火墙: chkconfig iptables off

service   即时生效,重启后失效  开启: service iptables start  关闭: service iptables stop


防火墙开启端口:

iptables -I INPUT -p tcp --dport 22 -j ACCEPT


网络IP配置:

ifconfig


用户管理:

# useradd username                                增加系统用户,未指定工作组则默认在同名工作组

# passwd username                                 修改系统用户密码

# userdel username                                删除系统用户

# useradd -g groupname -s /bin/false username     新建用户并加入指定工作组,且不给shell权限


# for user in user1 user2 user3 user4             批量增加samba帐号

> do

> useradd -g groupname -s /bin/false $user

> smbpasswd -a $user

> done


# chmod u+x,g=r,o-w 1.txt                         给1.txt拥有者增加x,用户组只给r,其他成员减w权限。

# chmod 755 1.txt                                 给1.txt指定权限

# usermod -c<备注> -d<登入目录> -e<账号有效期> -f<密码过期多久关闭账号> -g<群组> -G<附加组> -l<账户名>

         -L锁定用户密码 -s<修改登入后使用的shell> -u<修改用户ID> -U解除密码锁定

/etc/group

/etc/passwd、/etc/shadow 设置属性为 -rw------ 如不想让某个用户登录,到/etc/shadow里面在该用户前加上*或!

Linux日期以1970年1月1日作为1,1971年1月1日就为366,日期累加。

root密码忘记后,则需清空/etc/shadow里面root:那一行后面的内容,重启后空密码登录。

newgrp [用户组]  如果当前用户属于3个组的成员,则可以用来切换当前用户的用户组为有效组。


linux修改启动级别:

# 0 - 停机(千万不要把initdefault设置为0)

# 1 - 单用户模式(类似安全模式)

# 2 - 多用户,但是没有NFS支持

# 3 - 完全多用户模式 ,标准运行级别,也是命令行

# 4 - 没有用到,特殊情况下例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。

# 5 - 启动到X-windows系统

# 6 - 重新启动(千万不要把initdefault设置为6 )

修改级别: vi /etc/inittab  把id:3:initdefault:中的3改为5就是默认进入图形界面了。








==========================================================================================================================


Redhat linux下ftp服务器的搭建:


修改主机ip地址:

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=static

IPADDR=172.16.16.111

NETMASK=255.255.0.0

GATEWAY=172.16.16.1

ONBOOT=yes

TYPE=Ethernet

重启配置文件使之生效

# /etc/init.d/network restart

关掉iptables系统防火墙:

# service iptables stop

把安全级别调低:

# vi /etc/selinux/config

SELINUXTYPE=targeted 改为 SELINUXTYPE=disabled

如在安装linux时没有默认安装,则需要使用rpm命令安装。首先需要挂载光盘:

# mount /dev/cdrom /mnt/cdrom

# cd /mnt/cdrom/RedHat/RPMS   (安装文件包的默认位置)

# ls -l vsftpd*  (查看如见全名,这里是:vsftpd-2.0.1-5.i386.rpm)

-rw-r--r--  25 root root 122195 Jan  6  2005 vsftpd-2.0.1-5.i386.rpm

# rpm -ivh vsftpd-2.0.1-5.i386.rpm (开始安装)

看一下vsftpd.conf的配置文件:

# grep -v '#' /etc/vsftpd/vsftpd.conf (去除注释行后的配置文件)

anonymous_enable=YES (为yes时,允许匿名登录,用户名为ftp或anonymous,空口令)

local_enable=YES     (为yes时,允许本地linux系统中的用户账号登录)

write_enable=YES     (为yes时,ftp服务器开放对本地用户的写权限)

local_umask=022      (为022时,设置本地用户的文件生成掩码为022)

dirmessage_enable=YES(为yes时,当切换到ftp中某个目录,将显示该目录下的".message"隐含文件的内容)      

xferlog_enable=YES   (xferlog_enable设置为yes时,ftp服务器将启用上传和下载日志)

connect_from_port_20=YES(为yes时,ftp服务器将启用ftp数据端口的连接请求)

xferlog_std_format=YES  (为yes时,ftp服务器将使用标准的ftpd xferlog日志格式)

pam_service_name=vsftpd (设置PAM认证服务的配置文件名称,该文件保存在"/etc/pam.d/"目录下)

userlist_enable=YES     (为yes时,将检查userlist_file中指定用户是否可以访问vsftpd)

userlist_file           (配置项的默认值是"/etc/vsftpd.usr_list"文件)

listen=YES              (为yes时,ftp服务器将处于独立启动模式)

tcp_wrappers=YES        (为yes时,将使用tcp_wrappes访问控制方式。tcp_wrappers能实现linux网络服务基于主

                        机地址的访问控制,在"/etc"目录中的hosts.allow和host.deny两个文件分别用于设置

                           tcp_wrappers的允许访问记录和拒绝访问记录)

启动vsftpd服务器:

# service vsftpd start

查看服务运行状态:

# service vsftpd status

开机自启动vsftpd:

在/etc/rc.d/rc.local中加入:/usr/local/sbin/vsftpd &

上传文件到ftp服务器中:

ftp> put 22.txt

FTP下载文件到客户机中:

ftp> get 22.txt


匿名用户登录:(ftp/anonymous)将以ftp服务器系统中的"/var/ftp"目录作为匿名用户的ftp根目录。

本地用户登录:将以本用户目录为根目录,如用admin登录,则根目录为/home/admin。首先它是系统账号,一旦ftp服

             务器出现安全漏洞,会对linux主机造成威胁;另外本地用户账号可以离开用户宿主目录,转换到系统

             中的其他目录中,这对系统的安全有着一定的威胁。所以要设置ftp本地用户禁锢在宿主目录中,这样

             可以防止它切换到其他的目录中)


vsftpd允许root直接登陆:

默认不允许root登录,若要使用root登录,则在/etc/vsftpd.ftpusers和/etc/vsftpd/user_list中删除root即可。


把本地用户禁锢在用户宿主目录:

chroot_local_user=YES (在配置文件vsftpd.conf中手动添加配置项,配置完重启服务)


配置ftp虚拟目录:

vsftpd支持匿名用户、本地用户和虚拟用户3类用户账号,本地ftp用户账号通常和web服务器一起提供虚拟主机服务,

作为网页虚拟主机更新网页的途径。虚拟用户ftp登录后将把指定的目录作为ftp根目录,虚拟用户与本地用户具有类似的功能。

虚拟用户账号的设置过程:

1、建立虚拟用户口令库文件.

虚拟用户的口令库文件logins.txt,文件中奇数行设置虚拟用户的用户名,偶数行设置用户的口令。

# vi logins.txt

ee

123

rr

456

2、生成vsftpd的认证文件.

首先我们需要安装一下db4-utils-4.2.52-7.1.i386.rpm.

# cd /mnt/cdrom/RedHat/RPMS/

# rpm -ivh db4-utils-4.2.52-7.1.i386.rpm

使用db_load命令生成认证文件,"-f"命令选项设置的值时虚拟用户的口令库文件,即:logins.txt.命令的参数设置为需

要生成的认证文件名vsftpd_login.db,该文件放置在目录"/etc/vsftpd"中.    

# db_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db

设置vsftpd_login.db文件的权限只对root用户可读可写.即600.

# chmod 600 /etc/vsftpd/vsftpd_login.db

3、建立虚拟用户所需的PAM配置文件.

在"/etc/pam.d"目录中建立vsftpd虚拟用户身份认证所需的PAM配置文件,名称为vsftpd.vu.

# vi /etc/pam.d/vsftpd.vu

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

4、建立虚拟用户及所要访问的目录并设置相应权限.

建立vsftpd虚拟用户所需的系统用户账号,账号为zhen,指定用户的宿主目是"/home/ftpsite/",设置宿主目录的权限是700(vsftpd服务器中的所有虚拟用户账号登录后都将在"/home/ftpsite"目录中)

# useradd -d /home/ftpsite zhen

# chmod 700 /home/ftpsite

5、设置vsftpd.conf配置文件

在对vsftpd.conf配置文件修改前,先将它原来的文件备份,以便出现配置错误时可进行恢复.

# cd /etc/vsftpd

# cp vsftpd.conf vsftpd.conf.bak

在vsftpd.conf配置文件添加虚拟用户的配置项:

guest_enable=yes

guest_username=zhen

pam_service_name=vsftpd.vu

所有配置完成后,重新启动vsftpd服务程序

可以对不同的用户设置不同的权限.

vsftpd服务器中的虚拟用户可以灵活的针对不同的用户账号设置不同的用户权限:

1、设置主配置文件

在vsftpd配置文件中添加user_config_dir配置项,并设置用户配置文件的保存路径

user_config_dir=/etc/vsftpd_user_conf(设置在"/etc/vsftpd_user_conf"目录中保存虚拟用户的配置文件.)

2、建立用户配置文件目录

# mkdir /etc/vsftpd_user_conf

3、为虚拟目录建立单独的配置文件

为用户建立独立的配置文件,配置文件名称和用户名相同,并给他相应的权限.

# vi /etc/vsftpd_user_conf/rr

anon_world_readable_only=no  //表示用户可以浏览ftp目录和下载文件.




==========================================================================================================================


Samba:


# cd /mnt/cdrom/RwdHat/RPMS

# ls |grep rpmdb

# rpm -hiv rpmdb-fedora-1-0.i386.rpm                        安装rpmdb软件包

# rpm -hiv --aid samba*.rpm

# rpm -qa |grep samba

# rpm -ql samba

# smbtree -b                                               查看工作组计算机

# smbtree -b -D                                            查看工作组

# smbtree -b -U kong%123                                   找出能以kong帐号,密码123的主机

# nmlookup kong                                            解析kong的IP

# nmlookup \*                                              解析局域网活动主机

# smbclient -L IP                                          匿名查看该主机共享

# smbclient -L IP -U guest%                                以guest用户空密码查看共享

# smbclient //IP/share -U guest%                           share为共享名

 help

 get 1.txt

 put /root/1.log 2.log                                    后面的2.log不能省略

# smbmount //IP/share /mnt -o username=guest%              将windows下share目录挂载到本机

# smbtar -s IP -u user -p pass -x share -t backup.tar      将远程主机目录share备份到本机backup.tar

# which smbtar                                             查看smbtar文件位置

# file /usr/bin/smbtar                                     查看smbtar文件信息

# vi /usr/bin/smbtar

 最后面去除-N,否则默认以匿名登录,备份不成功

# tar tvf backup.tar                                       查看backup.tar文件内容

# vi /etc/samba/smb.conf                                   修改samba主配置文件

 workgroup = 工作组名 或 域名

 username map = /etc/samba/smbusers                      用户帐号映射,保护系统帐号安全

 security = 安全级别(share最低,user需要用户验证)

 [docs]

       path = /usr/share/doc (共享路径)

       comment = it's a share (注释)

       public = yes (是否允许匿名访问)

       valid users = <@root> <root>                       允许root组用户、root访问

# chkconfig smb on

# service smb restart


samba用户帐号:

# adduser user                                              增加系统帐号,samba帐号必须是系统帐号

# smbpasswd -a user                                         指定samba帐号密码,与系统密码不冲突

# more /etc/samba/smbpasswd

# smbpasswd -d user                                         禁止该user

# smbpasswd -x user                                         删除该user

# vi /etc/samba/smb.conf

 username map = /etc/samba/smbusers                       用户帐号映射,保护系统帐号安全

# vi /etc/samba/smbusers

 root = admin administrator                                将root映射为admin和administrator

 nobody = guest smbguest                                  将nobody映射为guest或smbguest

# service smb restart


特殊目录:

[homes]

  comment = Home Directories                               共享目录为用户的主目录

  browseable = no                                          允许浏览

  writable = yes                                           允许写入,同时还要修改用户主目录可写才行

  valid users = %S                                         允许有效用户为该系统用户

  write list = <username> <@groupname>                    指定哪些用户可写

  create mode = 0660                                       指定创建文件权限

  directory mode = 0770                                    指定创建文件夹权限


# testparm                                                  测试配置工具

# testparm /etc/samba/smb.conf host 192.168.1.102           测试客户机拥有的查看权限





==========================================================================================================================



SendMail:

Sendmail本身无安全认证机制,所以必须安装以下三个:cyrus-sasl,cyrus-sasl-plain,cyrus-sasl-devel,可选安装另外两个:cyrus-sasl-md5,cyrus-sasl-gssapi


# rpm -e --nodeps sendmail                               删除系统sendmail,开启服务重启之,否则卸载失败

# rpm -e --nodeps postfix

# rpm -qa |grep sasl                                     查看sasl软件包是否安装