2008-02-25

The Second Chapter:Read the Code.

  事实上,作为一个初学者,我们需要从读懂源代码开始。这里涉及了另外的一些基本知识。
一个最简单的C++代码将给予我们这方面的提示:


#include<string>
using namespace std;

int main()
{
char c1;
char c2;
string s1;
string s2;

c1='A';
c2=c1;

s1="This is a test";
s2="and so is this.";

return 0;
}

  第二行“using namespace std;”在很多程序中都能见到,实际上,C++中采用的是单一的全局变量命名空间。在这单一的空间中,如果有两个变量或函数的名字完全相同,就会出现冲突。为此,就出现了namespace的应用,我们也可以定义自己的namespaces,C++标准类库中的所有标识符都属于std命名空间,当我们使用了“using namespace std;”的时候,我们在整个程序中使用std中的名称就会被当作使用了标准库中的名称,如用cout就相当于std::cout此时如果我们要用自己定义的变量cout的话就需要用::cout。同理,当我们没有使用“using namespace std;”的时候要使用标准类库中的cout的话就必须使用std::cout才行。

  接下来是int main()这一句,int是函数的返回类型,,C++语言规定main()必须返回int类型,所以这里别无选择。main()是个特殊的函数,作为主函数,它告诉编译程序从哪里开始执行代码,C++标准规定,通常从main开始执行程序。
  关于主函数有一些需要辨析的地方:
  对于C语言在C99标准中,main函数只有如下两种格式可以被接受:
  int main ( void )
  int main ( int argc, char *argv[] )
  如果我们不想在命令行下对程序输入参数,可以选择第一种形式。其实第二种形式的两个参数argc,argv的名称是可以改变的,但保持原样是更明智的选择。main()函数的返回类型必须为int;返回的整形值作为传递给调用者的一个返回码。
-------------------------------
  对于C++在C99标准中,main函数只有如下两种格式可以被接受:
  int main ( int argc, char *argv[] )
  int main ()
  第一种格式遵从C99标准;第二种格式在不需要通过命令行向程序传递参数时使用,与C99标准中规定的格式int main(void)效果相同。
-------------------------------
  关于main函数我们还应该注意的是:

  •   一个不接受任何返回值的主函数应该写作int main(void)
  •   如果不希望一个函数返回任何东西可以使用void func(),但是这个规则不能在main函数上使用。

  http://users.aber.ac.uk/auj/voidmain.shtml这个链接提供了一些更详细的资料。

---------------------------------

流程控制语句:

1.判断语句:

  •  单分支选择:if...else....
     语法:if (条件表达式) 语句1;
        else 语句2;
        其中条件表达式为逻辑表达式,条件成立时为true/非0,条件不成立时为false/0,
        如果条件为null或undefined则被当作false
        把 statement1 和 statement2 括在大括号 ({}) 内通常是一个好习惯,
        这样就更清楚,并可以避免无意中造成错误。
  •  多分支选择:switch
     语法:switch (整型表达式)
        {
        case 整型常量表达式1:语句1;break;
        case 整型常量表达式2:语句2;break;
        ……
        default:语句;
        }
        其中default:语句表示若switch获得值没有对应的case的话就执行的语句。
        每个case语句的结尾不要忘了加break,否则将导致多个分支重叠
        
        相同case可以对应同一个语句如:
        case 'a':case'e':case'i':case'o':case'u':
        cout<<endl<<"这是元音字母" <<endl;

2。循环语句:

  •  指定次数循环:for
     语法:for(初始表达式;继续表达式;修改表达式)
        {
        语句
        }
        执行时先执行一次初识表达式,之后执行继续表达式,若继续表达式为true
        则执行语句块之后再执行修改表达式,否则跳过受控语句块。
  •  先判断后执行:while
     语法:while(条件)
        {
         语句
        }
        wihle循环先判断条件后执行循环。
  •  先执行后判断:do...while;
     语法:do
        {
        语句
        }
        while(条件);
        do...while循环先执行内容再判断条件

3.其他控制语句:

  •  无条件转移:goto
     语法:goto 标签;
     其中,语句标签是用来标记某一行的标识符,比如
     MyLabel:x=1;
     goto MyLabel;
  •  中止语句:break
     break将是程序离开当前循环区块,进入下一个语句,这样将使当前循环停止。
  •  跳转语句:continue
     continue的作用是跳过本轮循环直接执行下轮循环。比如:

    #include<iostream&rt;
    using namespace std;

    int main()

    {

    short i;

    for(i=0;i<10;i++)

    {

    cout<<i<<endl;

    if (i==5) continue;

    }

   输出的值是12346789没有5,而如果continue被替换成break的话输出的值就只有1234了。

  •  返回语句:return
     结束当前函数。并返回到调用出

2008-02-23

Solaris10管理开始-用户和用户组

用户管理:
Solaris系统的每个用户都有一组惟一的标识号和特征参数来区别不同的用户,并在逻辑上形成一些相关的用户组。

  • 用户账号可以用于下列目的:
  • 生成Shell
  • 交互执行应用;
  • 调度应用以按照制定的日期或时间运行;
  • 访问数据库应用和其他系统服务。

除了用户账号之外,Solaris还有一些用于各种日常维护的系统账户,如rootdaemonbinsyslpadmuucp,它们的作用如下:

  • 执行特定任务的系统资源分配;
  • 运行mail服务器;
  • 运行web服务器;
  • 执行进程管理。
用户还有许多其他特征:
  • 用户IDUID):这是标记用户的一个整数编号。它从root用户开始编排(UID=0),其他UID顺序分配。但系统会保留1023以前的UID号用于系统账号。普通用户的UID1024开始分配。
  • 用户组:这是区分不同用户类型的一种灵活的分组机制。用户组不只是一组相关用户集合的概念,Solaris文件系统除了可以按照个别用户和全体用户来授予权限,还可以按照用户组指定文件访问的读、写和执行权限。每个UID都与一个基本组IDGID)相关联,但它同时还可以与一个以上的辅助用户组关联。Solaris10引进了细分权限,一反过去UNIX的“非全有即全无”的权限模型给我们提供了更加灵魂的用户分配。
  • 主目录:它是用户所创建的所有文件的默认存储位置。
  • 登录Shell:这是用户交互调用命令或编写程序的地方。Solaris提供各种不同的shell,包括Bourne shell(sh)C shell(csh)Bourne again shell(bash)cornell shell(tcsh)Shell的选择在很大程度上取决于用户的个人喜好,以及对类C编程结构和终端操作系统的熟练程度。
  • 用户注释:它通常为用户的全称。但系统账户的注释可以用来描述它们的作用。如一个Apache系统账户的注释就可以采用“Webserver”
使用useradd命令可以增加用户账号,命令格式如下:

useradd [-u uid -g group] -d dir -s shell -c comment -m [-k skel_dir] ] login

u指定用户ID号;g制定所在组;d指定用户目录;s制定用户Shellc用户的注释;m建立用户目录;
login用户的登录名。

注意:

  • 注释中不能包含有特殊字符,如双引号“”、感叹号“!”或斜杠“/”
  • Shell必须存在
passwd username可以设定用户的密码
usermod命令来修改用户账号参数同useradd如:usermod -u 1005 XXXX
userdel -r username可以删除帐号
passwd -l username用于锁定帐号

##########################
用户组管理:

Solaris系统中,有关组的信息都存储在组数据库中(/etc/group),但本地的组数据库也可以由NIS/NIS+LDAP数据库加以补充,这是我机子上的组构成:
[root@Solaris10 /]#cat /etc/group
root::0:
other::1:root
bin::2:root,daemon
sys::3:root,bin,adm
adm::4:root,daemon
uucp::5:root
mail::6:root
tty::7:root,adm
lp::8:root,adm
nuucp::9:root
staff::10:
daemon::12:root
sysadmin::14:
smmsp::25:
gdm::50:
webservd::80:
postgres::90:
nobody::60001:
noaccess::60002:
nogroup::65534:
sasl::100:
site::101:

使用cat /etc/group可以查看全部内容,要查看某个用户所属的组可以使用
groups username
要查看某个组拥有的用户则还可用
getent group groupname

管理用户组时有用的命令:

增加组:groupadd [-g gid] group

-g,设置组的ID号;

gid,组的ID号(不能与现有的组ID号重复);

group,组名。


删除组:groupdel group
另外,当一个多组属的用户需要切换基本组的时候用newgrp groupname
用id命令可以查看结果

######################################
还有更高级的角色管理,这里我用不到暂时,把搜到的文章贴出来:

对于传统的安全性模型,超级用户拥有完全的超级用户特权,而其他的用户没有足够的权限解决他们自己的问题。有了基于角色的访问控制(RBAC),便可以取代传统的安全模型。

有了RBAC,可以将超级用户的能力分成不同的包,并将它们分别分配给分担管理任务的个体。当使用RBAC划分超级用户特权时,用户可以拥有不同程度的访问权限,可以控制对其他用户特权操作的授权。

RBAC包括了如下特性。

 角色:一种特殊类型的用户账号,可以用来执行一套管理任务。

 特征文件(profile):一种打包机制,用特殊的属性将授权和命令分组。例如,使用用户和组的ID

 授权:一种用来授予对受限功能的访问权限的权利。

下面我们来分别介绍它们。

7.3.1 角色管理概述

1.角色

实现RBAC功 能的第一步就是对准备指派给每个用户的角色进行定义。另外,不同资源的访问权限也必须与具体的角色名联系在一起。对于管理者来说,角色的变化,以及用户与 角色关系的调整都是不可避免的。因此,这种变化的角色和用户列表的实现方法应尽可能的简单。另外,单一的任务并不容易实现与单一角色的关联。

比如,一个被定义为“备份操作员”的角色会涉及到ufsdump命令的运行,而这又需要对磁带设备进行写访问操作。此时,备份操作员角色本身就决定了它对这种文件访问的必然性。因此,我们不需要单独为它定义一个新角色。

又如,一个“设备管理员”可能使用命令tapes来对磁带设备执行写访问操作。所以,这些写操作也不能定义为一个新的角色,它自然成为“设备管理员”角色的一部分。

如果一个用户承担某个角色,他的结果要么承担该角色的全部权限,要么就丧失该角色的全部权限。

在默认情况下,Solaris 支持3种不同的系统管理角色。

 主管理员(PAPrimary Administrator):负责为其他用户分派权限,并负责系统的安全问题。

 系统管理员(SASystem Administrator):负责与安全无关的日常管理工作。

 操作员(Operator):执行备份和设备维护操作。

PASA之间的区别主要取决于本地的安全策略。例如,尽管默认的PA角色具备添加用户和修改口令的权限,而默认的SA角色并不具备修改口令的权限,但在很多地方,禁止SA的口令访问可能是不现实的。RBAC的一个最大的好处就是它可以按照本地的需求非常方便地分配权限。

2.权限配置文件(Profile

特征文件是用于授权的一个或一组特定的命令。这些授权连接在一起形成某个角色,并随后与某个用户或某些不同的用户建立关联关系。它们之间的关系如图7-1所示。

我们可以为每个角色创建一个新的用户账号,这些账号拥有自己的主目录和口令。当执行特征文件中的命令时,用户必须使用su命令进入角色账户,因为这种角色用户是不允许直接登录的。

通过su命令访问角色账户与通过su命令访问普通账户的一个不同之处在于它们的审计功能,即在通过su命令访问某个角色时,它执行的所有操作,连同用户的原始UID都会被记入日志。这样,每个访问角色的用户操作都会被明确地记入日志并进行审计。

3.授权

所谓授权,就是赋予某个角色执行某项操作的特权,它是在/etc/security/auth_attr文件中定义的。授权的定义形式与Internet的域名非常相似,它的最左边为企业名称,随后是依次细化的软件包和功能内容。

例如,net.cassowary.*就是一个由厂商cassowary.net提供的任何功能授权。

在默认情况下,所有Solaris提供的软件包都是由前缀Solaris来加以识别的。比如,修改口令的授权就是Solaris.admin.usermgr.pswd,而不是com.sun.Solaris.admin.usermgr.pswd

许多授权的划分都是十分细致的,它可能只允许读访问,而不允许写访问,反之也是如此。比如,主管理员(PA)可能拥有Solaris.admin.usermgr.readSolaris.admin.usermgr.write的授权,因而可以对用户配置文件分别进行读访问和写访问操作。而系统管理员(SA)虽然可能拥有Solaris.admin.usermgr.read授权,但他并没有Solaris.admin.usermgr.write的授权,因此他可以读用户配置文件,但不能写。

下面是一些Solaris的基本授权:

Solaris.profmgr.read

Solaris.jobs.users, Solaris.mail.mailq

Solaris.admin.usermgr.read

Solaris.admin.logsvc.read

Solaris.admin.fsmgr.read

Solaris.admin.serialmgr.read

Solaris.admin.diskmgr.read

Solaris.admin.procmgr.user, Solaris.compsys.read

Solaris.admin.printer.read

Solaris.admin.prodreg.read

Solaris.admin.dcmgr.read, Solaris.snmp.read

Solaris.project.read, Solaris.admin.patchmg.read

Solaris.network.hosts.read, Solaris.compsys.read

Solaris.admin.volmgr.read

从这里我们看到,Solaris.admin已经定义了一些授权,它们包括文件系统管理(fsmgr)、日志系统管理(logsvc)、端口管理(serialmgr)和用户管理(usermgr)等。

我们还可以利用关键字grant将权限传递给其他用户。一旦关键字grant被附加在一个授权字符串的末尾,即表明该授权可以委托给其他用户。例如,如果Solaris.admin.usermgr. grant授权与Solaris.admin.usermgr.pswd授权配合在一起,则表示口令修改的操作可以由受委托的用户来执行。

4 角色、权限配置文件和授权的关联

如图7-2所示,授权和命令的定义关联起来构成了权限配置文件,该权限配置文件再分派给不同的角色用户来使用。

Solaris共有四个RBAC数据库用于角色的管理。

 扩展的用户属性数据库(/etc/user_attr):将用户、角

色、授权和权限配置文件相关联。

 授权属性数据库(/etc/security/auth_attr):定义了授权及其授权的属性,标识了相关的帮助文件。

 权限配置文件数据库(/etc/security/prof_attr):定义权限配置文件,列出权限配置文件分配的授权,标识了相关的帮助文件。

 权限执行属性数据库(/etc/security/exec_attr):定义了分配给一个权限配置文件的特权操作。

另外,policy.conf文件提供将应用于所有用户的默认属性。

RBAC的几个数据库的相互关系如图7-3所示。

例如,如果“打印机管理”权限配置文件被指定给一个用户或角色,则该用户或角色的user_attr 项包含关键字/值对:

profiles=Printer Management.

prof_attr 文件使用下行定义该配置文件(该文件也指定了帮助文件和授权):

Printer Management:::Manage printers, daemons,

/ spooling:help=RtPrntAdmin.html;auths=Solaris.admin.printer,

/ Solaris.admin.printer.modify,Solaris.admion.printer.delete

exec_attr文件中,下行在“打印机管理”配置文件中给命令/usr/sbin/accept指定了一个有效的用户ID = lp

Printer Management:suser:cmd:::/usr/sbin/accept:euid=lp

数据库user_attr是惟一需要的数据库,其他数据库的使用取决于实现哪种安全功能。

/etc/user_attr数据库补充了passwdshadow数据库。它包含了扩展的用户属性,例如,授权和执行profile。它也帮助你将角色分配给一个用户。

一个角色是一种特殊类型的用户账号,允许一个用户执行一组管理任务。它与一个普通的用户账号类似,只是不通过登录窗口访问角色,只能用su命令来访问他们的角色。

举个user_attr数据库项的实例:

默认的user_attr数据库中的项在下面给出。

root::::type=normalauths=Solaris.*Solarisgrantprofiles=All

这一项为root分配了做任何事情的权限,使root可以使用系统中所有的命令。它还分配了两项授权。Solaris.*通配符授权为root分配了所有的Solaris授权。Solarisgrant授权使root可以给其他用户分配的任何Solaris授权的权利。

2.授权属性数据库(auth_attr

授权就是对一种受限的访问给予的权限。它的表现形式是个字符串,标识着授权者和被授权者。

特定的特权程序能够查看授权,并确定用户是否能够执行受限功能。例如,一个要编辑另一个用户的crontab文件的用户需要有Solarisjobsadmin授权。

所有的授权都被存储在/etc/security/auth_attr数据库中。当直接将授权分配给用户或角色时,授权被输入user_attr数据库中。也可以为执行profile指定授权,这些授权接下来就被分配给用户。

下面的例子给出了默认的auth_attr数据库的一部分。

Solaris.admin.usermgr.:::UsersGroups Mailing Lists::help=UserMgrHeader.html

当授权在auth-attr数据库中定义时,就可以将其分配给一个user-attr数据库中的用户。下面的例子为用户duanf分配了授权Solaris.admin.usermgr.。

duanf::::type=normalauths=Solaris.admin.usermgr.roles=sysadminprofiles=All

3.权限配置文件数据库(prof_attr

有了权限配置文件,就可以使用特殊的属性将授权和命令分组,并将其分配给用户或角色。特殊的属性包括真正有效的UIDGID。最常见的属性是将真正有效的UID设置为root。权限配置被存储在prof_attr数据库中。

下面的例子给出了默认的prof_attr数据库的设备管理部分。所有以Solaris.device字符串开头的授权都被分配给设备管理配置文件。

Device Management:::Control Access to Removable Media:auths=Solaris.device.*help=DevMgmt.html

prof_attr数据库中定义的设备管理配置文件被分配给user_attr数据库中的advanced角色,如下所示:

advanced::::type=roleprofiles=Device ManagementPrinterManagement

而授权在auth_attr数据库中定义的则如下面的摘要所示:

Solaris.device.:::Device Allocation::help=DevAllocHeader.htm l

Solaris.device.allocate:::Allocate Device::help=DevAllocate.htm l

Solaris.device.config:::Configure Device Attributes::help=DevConfig.htm l

Solaris.device.grant:::Delegate Device Adm inistration::help=DevGrant.htm l

4.权限执行属性数据库(exec_attr

与权限配置文件相联系的执行属性就是命令。命令能够使被赋予了配置文件的用户或角色运行特殊的安全属性。Exec_attr文件包括了与权限配置文件相关联的一个基本命令列表。

下面的例子给出了在prof_attr 数据库中定义的打印机管理配置文件。

Printer Management:::ControlAccess to Printer:helpPrinterMgmt.html

打印机管理配置文件有13 项执行属性,在exec_attr 数据库中为它指定了合适的安全属性,如下所示:

Printer Management:suser:cm d:::/etc/initd/lp:euid=0

Printer Managem ent:suser:cm d:::/usr/bin/cancel:egid=0

Printer Managem ent:suser:cm d:::/usr/bin/lpset:euid=14

Printer Managem ent:suser:cm d:::/usr/bin/enable:euid=lp

Printer Managem ent:suser:cm d:::/usr/bin/disable:euid=lp

Printer Managem ent:suser:cm d:::/usr/sbin/accept:euid=lp

Printer Managem ent:suser:cm d:::/usr/sbin/reject:euid=lp

Printer Managem ent:suser:cm d:::/usr/sbin/lpadm in:egid=14

Printer Managem ent:suser:cm d:::/usr/sbin/lpfilter:euid=lp

Printer Managem ent:suser:cm d:::/usr/sbin/lpform s:euid=lp

Printer Managem ent:suser:cm d:::/usr/sbin/lpm ove:euid=lp

Printer Managem ent:suser:cm d:::/usr/sbin/lpshut:euid=lp

Printer Managem ent:suser:cm d:::/usr/sbin/lpusers:euid=lp

7.3.3 RBAC命令

以下这些RBAC命令可以用来对各种不同的RBAC数据库进行操作。

1smexec

smexec命令可以用来创建、更新,以及删除exec_attr命令数据库的行。该命令在执行时必须提供如下三个选项之一:

add,添加一个数据库行;

delete,删除一个数据库行;

modify,更改一个数据库行。

为了执行smexec命令,用户必须具备Solaris.profmgr.execattr.write授权。根据不同的命令选项,smexec可以有两组参数:授权参数和指定参数。

授权参数对于每个选项都是通用的,它们用于指定如下特性:

-domain 管理的域

-hostname:port 执行操作的主机名和端口(默认端口是898

-rolepassword 角色的认证口令

-password 用户口令(不是角色口令)

-rolename 角色名

-username 用户名

我们可以利用smexec add命令在exec_attr数据库添加行。在命令行中,可以指定如下参数:

-c 指定要添加的新命令名的完整路径

-g 指定执行该新命令的有效GID

-G 指定执行该新命令的实际GID

-n 指定与该命令相关联的特征文件名称

-t cmd 指定该操作为一个命令

-u 指定执行该新命令的有效UID

-U 指定执行该新命令的实际UID

下面是smexec add命令操作的一个例子:

# smexec add -hostname localhost -password xyz123 -username root -- -n

Print Manager -t cmd -c /usr/sbin/lpsched -u 0 -g 0

该命令为Printer Manager特征文件添加了一个启动打印服务的能力,它的有效UIDGID都是0(即root)。

我们可以利用smexec delete命令在exec_attr数据库删除行。在命令行中,可以指定如下参数:

-c 指定要删除的命令名的完整路径

-n 指定当前与该命令相关联的特征文件名称

-t cmd 指定该操作为一个命令

如果需要删除exec_attr数据库中lpsched的相应行,可以使用如下命令:

# smexec delete -hostname localhost -password xyz123 username root -- -n

Print Manager -t cmd -c /usr/sbin/lpsched

我们可以利用smexec modify命令修改exec_attr数据库中的行。在命令行中,可以指定如下参数:

-c 指定要修改的命令名的完整路径

-g 指定执行修改后命令的有效GID

-G 指定执行修改后命令的实际GID

-n 指定与该命令相关联的修改特征文件的名称

-t cmd 指定该操作是一个命令

-u 指定执行修改后命令的有效UID

-U 指定执行修改后命令的实际UID

以下是smexec modify命令的一个操作例子:

# smexec modify -hostname localhost -password xyz123 username root -- -n

Print Manager -t cmd -c /usr/some/new/path/lpsched -u 0 -g 0

该命令将Print Manager特征文件的启动打印服务的命令路径从/usr/sbin/lpsched修改为/usr/some/new/path/lpsched

2smmultiuser

smmultiuser命令用来执行批处理操作,诸如添加或删除大量的用户。当需要指定的所有用户数据已经存在于文件中时,该命令会非常有用。例如,一个备份系统可能需要建立一个类似于当前生产系统的设置(setup),此时,我们不仅可以直接复制文件系统,而且可以执行所有涉及新账户创建的操作,诸如主目录的创建等。另外,指定用户数据的文件也可以根据路径名的改变进行更新。例如,如果原始系统的主目录利用NFS被导出,并被挂接到新系统的lexport挂接点下,则相应的用户说明文件的数据也会在处理前执行相应的更新。或者,如果挂接点后来有所改变,系统的用户数据也同样可以利用smmultiuser命令进行修改。

smexec命令一样,smmultiuser命令在执行时也必须选择如下三个选项:(1add,添加多个输入项;(2delete,删除一个或多个输入项;(3modify,修改一组现有的输入项。为了利用Smmultiuser命令来修改口令,用户必须具备Solaris.profmgr.execattr.write授权。按照Solaris.profmgr.execattr.write授权命令的不同选项,它存在两组参数:授权参数和操作参数。

授权参数对于每个选项都是通用的,它们用于指定如下特性:

-domain 要被管理的域,它可以是本地数据库(file)、NISnis)、NIS+(nisplus)DNSdns)或LDAPldap)。例如,为了利用LDAP对主机foxtrot. cassowary.net进行管理,我们需要将该域指定为ldap://foxtrot/ cassowary.net

-hostname:port 执行操作的主机名和端口(默认端口是898

-password 用户口令(不是角色口令)

-rolename 角色名

-rolepassword 角色的认证口令

-trust 在批模式下操作时需要用到

-username 用户名

在利用smmultiuser命令进行添加、删除和修改操作时,可以在命令中传递如下的参数:

-i 指定需要读取的输入文件。该文件包含要添加、修改和删除的所有数据项

-L 指定用于记录批作业中每个操作成败的日志文件名称

在下面的例子中,我们从/home/paul/newaccounts.txt中读取一组记录并添加到系统中:

# smmultiuser add –hostname localhost –p xyz123 username root -- -I

/home/paul/newaccounts.txt

3smuser

smuser命令可以用来执行对用户账户的操作,无论是从本地用户数据库还是从NIS/NIS+检索数据,它和smmultiuser类似。但是该命令通常只用来添加单个用户,而不是在批模式下添加一组用户。除了添加、删除,以及修改用户条目,也可以检索并列出现存的用户数据。执行该命令时必须提供四个选项中的一个;add用于添加一个条目;delete用于删除一个条目;list用于列出所有现存的条目;modify用于更新一个条目。要使用Smuser的选项adddeletemodify,用户必须有Solaris.profmgr.execattr.write授权。但是,只需要Solaris.admin.usermgr.write授权就可以列出条目。

有两套参数可以传递给Smuser(取决于选择了哪个选项):授权参数和每个选项的具体参数。授权参数对每个选项都是通用的,它们确定了如下特征:

-domain 要被管理的域,它可以是本地数据库(file),NISnis),NIS+(nisplus)DNSdns)或LDAPldap)。为了利用LDAP对主机foxtrot.cassowary. net进行管理,我们需要将该域指定为ldap://foxtrot/cassowary.net

-hostname:port 执行操作的主机名和端口(默认端口是898

-password 用户口令(不是角色口令)

-rolename 角色名

-rolepassword 角色的认证口令

-username 用户名

在利用smuser add命令添加项时,它的参数与我们讨论的利用useradd命令添加用户的参数类似,以下是我们可以在命令行中传递的参数:

-c 指定账户的说明,例如:“Joe Bloggs”

-d 指定用户的主目录

-e 指定账户的有效日期

-f 指定账户过期前的非活动天数限制

-F 指定账户全名,该名称不允许与域中其他账户相同

-g 指定账户的GID

-n 指定账户的名称

-P 指定账户的口令

-s 指定默认Shell

-u 指定账户的UID

下面是smuser add命令的一个例子:

# smuser add –H localhost –p xyz123 –u root -- -F Paul Watters” –n walrus –c “Paul A Watters Director” –p jimmy123 –g 10 –u 1025

该命令在系统中为Paul Watters添加了一个账户walrus,该账户的口令为jimmy123,账户UID1025GID10

当利用smuser delete命令删除账户时,我们只需要在命令行中通过-n参数来指定要删除的账户名称。例如,在下面的命令中,我们将从localhost中删除账户warus

# smuser delete -H localhost -p xyz123 -u root -- -n walrus

smuser list命令可以用来显示一个不带任何参数的用户列表,该命令形式如下:

# smuser list -H localhost -p xyz123 -u root -

当利用smuser modify命令修改用户账户时,命令行的参数与smuser add命令的参数相同,命令中的任何新参数值都会导致相应字段的更新。例如,如果需要将某个用户的默认Shell修改为Korn shell,可以使用如下命令:

# smuser update -H localhost -p xyz123 -u root -- -n walrus -s /bin/ksh

4smprofile

smprofile命令可以用来创建、列出、更新及删除prof_attr数据库中的特征文件,它们所对应的命令分别为smprofile addsmprofie listsmprofile modifysmprofile delete。命令所使用的授权参数和smusersmexec命令的参数类似。在利用smprofile add来添加特征文件时,可以在命令行上传递如下参数:

-a 添加单一授权或一组授权

-d 为新的特征文件添加说明

-m 指明与该特征文件相关联的HTML帮助文件的路径

-n 指定该特征文件的名称

以下是smprofile add命令的一个例子:

# smprofile add -H localhost -p xyz123 -u root -- -n Password Manager\

-d Change user passwords-a Solaris.admin.usermgr.pswd \

-m PasswordManager.html

该命令为Password Manager添加了一个特征文件,使它拥有Solaris.admin.usermgr.pswd授权,可以执行口令修改的操作。

当我们希望利用smprofile list列出特征文件的列表时,只要不在命令行中指定-n参数就可以了。如果指定-n参数,则意味着指定列出的特征文件名字。下面是smprofile list命令的一个例子:

# smprofile list -H localhost -p xyz123 -u root -

当利用smprofile modify命令来修改特征文件时,命令行的参数与smprofile add命令的参数相同,命令中的任何新参数值都会导致相应字段的更新。下面是smprofile modify命令的一个例子:

# smprofile modify -H localhost -p xyz123 -u root -- \

-n Password Manager-d Modify user passwords

该例子通过-d参数修改了Password Manager特征文件的说明文字内容。

为了利用smprofile delete命令来删除某个特征文件,我们可以在命令行利用-n参数来指定要删除的特征文件名称。下面是smprofile delete命令的一个例子:

# smprofile add -H localhost -p xyz123 -u root -- \

-n Password Manager

5smrole

smrole命令可以执行有关角色账户的操作,它通常只是用来添加单个角色,而不是以批模式的方式来添加一组角色。Smrole命令除了执行添加、删除和修改角色账户的操作外,还可以对现有角色数据执行提取和列出操作。为此,该命令在执行时必须指定如下四个选项之一:(1add,添加一个角色账户;(2delete,删除一个角色账户;(3list,列出现有的所有角色账户;(4modify,修改某个现有角色账户。为了执行smrole adddeletemodify操作,用户必须拥有Solaris.role.write授权。但是,如果只是执行smrole list操作,则用户只需要Solaris.admin.usermgr.read授权。根据不同的命令选项,Smrole命令共有两种参数:授权参数和指定参数。Smrole命令的授权参数与smuser命令的授权参数相同。

在利用smrole add命令添加角色时,可以在命令行中传递如下参数:

-c 指定角色账户的说明,例如“System Manager”

-d 指定角色账户的主目录

-G 指明该角色账户的辅助GID,因为这里的基本GID总是sysadmin

-n 指定角色的名称

-P 指定账户的口令

-s 指定默认Shell

-u 指定账户的UID

下面是一个使用smrole add命令的例子:

smrole add -H localhost -p xyz123 -u root -- -F ”System Manager” \

-n bofh -P abc123 -G 10 -u 666

这个命令在系统中为System Manager添加了一个名为bofh的账户,该账户的口令为abc123,账户UID666,辅助GID10

当利用smrole delete命令删除角色账户时,我们只需要在命令行中通过-n参数指定要删除的角色账户名称即可。例如,在下面的命令中,我们将从localhost中删除角色账户bofh

smrole delete -H localhost -p xyz123 -u root -- -n bofh

smrole list命令可以用来显示一个不带任何参数的角色列表,该命令如下:

smrole list -H localhost -p xyz123 -u root --

当我们利用smrole modify命令修改角色账户时,命令行的参数与smrole add命令的参数相同,命令中的任何新参数值都会导致相应字段的更新。例如,如果需要将某个角色的默认Shell修改为Bourne Shell,则可以使用如下命令:

smrole update -H localhost -p xyz123 -u root -- -n walrus -s /bin/sh

#########################
另外在/usr/sadm/bin目录下运行smc可以开启Solaris Management Console这个强大的图形管理工具

Solaris10 初次使用

第一次使用Solaris10,作为一个完全新入门的新手,马上遇到了不少问题,即使使用的是SAID来安装的。
第一大问题:驱动
我的网卡和声卡连WINDOS XP 都没有内建驱动,更不用说Solaris10了。所以装驱动就是个必须的过程。我的网卡是Realtek 8169 声卡是SB600内建的那个HD什么。。。
总之,google了一下找到一个比较多驱动下载的地方:http://solaris-x86.org/software/drivers/
这里可以找到不少驱动,我需要的驱动那里连接到http://homepage2.nifty.com/mrym3/taiyodo/eng/,这个地方,于是就过去下载了。自然,接下来按照readme开始安装。。值得注意的是,/usr/ccs一开始被我看错成/usr/css了。。。无奈死。。
安装好之后使用桌面上的ip设置工具就可以了。
一些比较有用的命令:

prtconf -D可以查看硬件信息
-----------------------------------------------------------
还有个/usr/sbin/ffbconfig命令,不过我这里提示找不到文件没法运行,

据说这个命令可以查看显示器可用分辨率。
-----------------------------------------------------------
ifconfig | -a[ 4 | 6 | D ][ u | d ][ Z ]

ifconfig | -a[ 4 | 6 | D ] [ u | d ]
使用ifconfig -h查看详细信
ifconfig 网卡名 plumb up可以启用网卡。
-----------------------------------------------------------

而声卡驱动可以使用OSS

OSS,Open Sound System

是UNIX及其兼容平台的音效设备的驱动程序,起源于Linux Kernel的声卡驱动.
能支持大多数音效设备,支持UnixWare、BSD、Solaris、Linux等系统.
OSS包含一个开源的版本
和一个零售的版本
OSS 4.0官方Linux设备支持列表(*注:OSS 4.0并不支持MIDI功能,MIDI将在以后的版本提供支持) :

Devices supported both by the open source the retail OSS versions

ALI M5451
ALI M5455
AMD 786
AMD 8111
ATI High Definition Audio (SB450)
ATI High Definition Audio (SB600)
ATI IXP200
ATI IXP300
ATI IXP400
Aureal Vortex (AU8820)
Aureal Vortex Advantage (AU8810) *** NOT SUPPORTED ***
Aureal Vortex2 (AU8830)
Avance Logic ALS300
Avance Logic ALS300+
Avance Logic ALS4000
C-Media USB audio adapter
CMedia CM8338A
CMedia CM8338B
CMedia CM8738/CM8768
CMedia CMI8788
Creative Audigy2 NX USB (BETA)
Creative AudioPCI (ES1370)
Creative AudioPCI97 (ES1371/ES1373)
Creative Ectiva EV1938
Creative Sound Blaster 5.1 (Dell)
Creative Sound Blaster Audigy Platinum
Creative Sound Blaster Audigy/Audigy2
Creative Sound Blaster Audigy2 Value/Audigy4
Creative Sound Blaster Audigy2 ZS Notebook
Creative Sound Blaster Extigy (BETA)
Creative Sound Blaster Live
Creative Sound Blaster Live 1024/Platinum
Creative Sound Blaster Live 5.1/Platinum IR
Creative Sound Blaster Live family
Creative Sound Blaster MP3+ USB (BETA)
Creative Sound Blaster PCI128 (5880A)
Creative Sound Blaster PCI128 (5880B)
Creative Sound Blaster PCI128 (CT5880)
Crystal CS4280
Crystal CS4281
Crystal CS4610
Crystal CS4615
EGO SYStems RoMI/O USB MIDI interface (BETA)
ESS Allegro ES1988
ESS Canyon 3D ES1990
ESS Canyon 3D-2 ES1992
ESS Maestro-1
ESS Maestro-2
ESS Maestro-2E
ESS Maestro3 ES1998
ESS Maestro3 ES199A
ESS Solo-1
ForteMedia FM 801
Generic M Audio USB MIDI interface (BETA)
Generic USB audio/MIDI device (BETA)
Genius Sound Maker Live
Guillemot Maxi Sound MUSE
Hercules Game Theater XP
Hercules Game Theater XP+
Hercules Gamesurround MUSE Pocket (BETA)
Intel 440MX (440MX)
Intel AC97 (ESB)
Intel AC97 (ICH)
Intel AC97 (ICH1)
Intel AC97 (ICH2)
Intel AC97 (ICH3)
Intel AC97 (ICH4)
Intel AC97 (ICH5)
Intel AC97 (ICH6)
Intel AC97 (ICH7)
Intel High Definition Audio (ESB2)
Intel High Definition Audio (ICH6)
Intel High Definition Audio (ICH7)
Intel High Definition Audio (ICH8)
Intel High Definition Audio (ICH9)
Labtec LCS1040 Speaker System (BETA)
Logitec Quickcam Pro 4000 (mic) (BETA)
Logitec USB Headset 20 (BETA)
M Audio OmniStudio USB (BETA)
M Audio Oygen8 MIDI keyboard
M Audio Sonica Theater USB (BETA)
M Audio Sonica USB (BETA)
M Audio USB AudioSport Duo (BETA)
M Audio USB AudioSport Quatro (BETA)
M Audio USB MIDISPORT 1x1 (BETA)
M Audio USB MIDISPORT 2x2 (BETA)
M Audio USB MIDISPORT 8x8 (BETA)
MIDIMan DiO 2448
MSI K7T266
MSI KT3 Ultra
National Semiconductor Geode CS5530
National Semiconductor Geode SC1200
Neomagic NM2200AV
Nvidia CK8
Nvidia CK8S
Nvidia High Definition Audio (MCP51)
Nvidia High Definition Audio (MCP55)
Nvidia High Definition Audio (MCP61)
Nvidia High Definition Audio (MCP65)
Nvidia High Definition Audio (MCP67)
Nvidia MCP51
Nvidia nForce
Nvidia nForce2
Nvidia nForce3
Nvidia nForce4
OSS Input Multiplexer
OSS Transparent Virtual Mixing Architecture
OSS Virtual mixer/synth driver
OSS loopback audio driver (BETA)
Philips ToUcam Pro (mic) (BETA)
RME Digi32
RME Digi32 Pro
RME Digi32/8
RME Digi96
RME Digi96/8
RME Digi96/8 PAD
RME Digi96/8 PRO
S3 Sonic Vibes
SiS 7012
SiS 7018
SiS High Definition Audio
Sound Blaster Audigy LS / Live7.1
Terratec DMX Xfire 1024
Trident 4DWave-CX
Trident 4DWave-DX
Trident 4DWave-NX
TurtleBeach SantaCruz / VideoLogic SonicFury
ULI High Definition Audio
VIA High Definition Audio
VIA VT5432B
VIA VT8233/8235/8237
VIA VT8233A
VIA VT82C686
Yamaha DS-XG YMF724
Yamaha DS-XG YMF724F
Yamaha DS-XG YMF734
Yamaha DS-XG YMF740
Yamaha DS-XG YMF740C
Yamaha DS-XG YMF744
Yamaha DS-XG YMF754
Yamaha PSR-1K USB MIDI Keyboard (BETA)
Yamaha UX16 USB MIDI interface (BETA)

Devices supported only by retail version of OSS

Audiotrak Prodigy 7.1
Conexant Riptide
Conexant Riptide
Ego Systems Juli@ (NOT SUPPORTED YET)
Generic ENVY24 based device
Generic ENVY24HT based sound card
Lynx AES16 Studio Interface
Lynx AES16-SRC Studio Interface
Lynx-L22 Studio Interface
LynxONE Studio Interface
LynxTWO-A Studio Interface
LynxTWO-B Studio Interface
LynxTWO-C Studio Interface
M Audio Audiophile 192
M Audio Audiophile 2496
M Audio Delta 1010
M Audio Delta 1010LT
M Audio Delta 410
M Audio Delta 44
M Audio Delta 66
M Audio Delta DiO 2496
M Audio Delta TDIF
M Audio Revolution 5.1
M Audio Revolution 7.1
RME Hammerfall (not supported yet)
Sonorus STUDI/O
Terratec Aureon 7.1 Sky
Terratec Aureon 7.1 Space
Terratec Aureon 7.1 Universe
Terratec DMX 6Fire
Terratec EWS88D
Terratec EWS88MT
Terratec EWX 24/96
Terratec PHASE 28


因为是pkg打包的文件,所以这个非常容易安装,一句话ok:pkgadd -d oss-solaris-v4.0-123-i386.pkg



装好之后我们自然得试试效果,所以就挂载windows的分区吧。
Solaris10默认就能够支持fat32文件系统。所以先cd /dev/dsk
之后ls一下。
能看到硬盘的详情:
c0d0p0 c0d0s15 c1t0d0p3 c1t0d0s4 c2t0d0s1 c2t0d0s7 c3t0d0s12
c0d0p1 c0d0s2 c1t0d0p4 c1t0d0s5 c2t0d0s10 c2t0d0s8 c3t0d0s13
这里c:控制器号 t:控制器地址 d:磁盘号 s:片号 p:分区号,
所以windows下的分区肯定不会有片号,于是我们就可以从中简单的查到要挂载的名称,之后:
mount -f pcfs /dev/dsk/c0d0p0:1 /mountdir
-f 背后是文件系统类型。pcfs就是我们要挂载的fat32分区, 最后那个/mountdir是挂载点。
而如果要挂载ntfs的话需要装软件
第一个连接是说明:
http://www.genunix.org/distributions/belenix_site/binfiles/README.FSWfsmisc.txt
http://www.genunix.org/distributions/belenix_site/binfiles/FSWfsmisc.tar.gz
http://www.genunix.org/distributions/belenix_site/binfiles/FSWpart.tar.gz
要查看信息用prtpart /dev/dsk/c0d0p0 -ldevs就可以
挂载的话同样mount -F ntfs /dev/dsk/c0d0p0 -ldevs
卸下的话用/usr/bin/xumount <mountpoint>
其实测试了以后发现声卡虽然有了但是还是没声音,也就是说那个驱动没起作用。
另外。因为显卡没有有效的驱动,所以播放视频也效果不佳,最后还是决定放弃尝试,Solaris看起来不大适合多媒体娱乐。。。

----------------------------------------------------------------------------------------
更新:
当时其实并不是没有声音,只是奇怪我用mplayer播放只有2秒钟的声音测试,但是不出声,现在换成音乐就没问题了。
另外,上面给出的命令不标准使得我这次使用查看的时候还真不能立马可以用上,更新一下:
对于需要挂载NTFS分区,我们可以运行prtpart /dev/dsk/c0d0p0 -ldevs
来查看,在我这里这个命令会列出分区信息:
Fdisk information for device /dev/dsk/c0d0p0

** NOTE **
/dev/dsk/c0d0p0 - Physical device referring to entire physical disk
/dev/dsk/c0d0p1 - p4 - Physical devices referring to the 4 primary partitions
/dev/dsk/c0d0p5 ... - Virtual devices referring to logical partitions

Virtual device names can be used to access EXT2 and NTFS on logical partitions

/dev/dsk/c0d0p1 WIN95 Extended(LBA)
/dev/dsk/c0d0p5 IFS: NTFS
/dev/dsk/c0d0p6 IFS: NTFS
/dev/dsk/c0d0p7 IFS: NTFS
/dev/dsk/c0d0p8 IFS: NTFS

/dev/dsk/c0d0p2 WIN95 FAT32(LBA)
/dev/dsk/c0d0p3 ShagOS swap
/dev/dsk/c0d0p4 Solaris x86

之后用于挂载分区的命令应该是:

mount -F ntfs <logical device name> <mountpoint>
卸载分区的命令应该使用:

/usr/bin/xumount <logical device name>
或者 /usr/bin/xumount <mountpoint>
要查看使用这个命令挂载的分区的信息可以用:
/usr/bin/xlsmounts

2008-02-22

Solaris10上马

  开学了,按计划准备开始进入学习java的过程,虽然目前C++不算学到,但是因为规划问题,Java才是目前必须学的,自然,Solaris 10也是我的目标,去年11月有幸SUN的校园技术日在我学校上了一次,领到了一份SAID盘,其实我觉得能获得原始安装盘更好,不过这也没办法。
  第一次装的时候问题多多:无法启动图形界面安装,直接在命令行下复制,装好后自然也进不了,所以我自然认为和那个Ubuntu一样,不支持我的X1250,当然,那次只是随便装下,没空继续,就删了,这次我看了一个下午资料,本来打算搞定这个问题的,不过发现,莫名其妙这次居然都正常。
  吃了顿饭之后就装好了,这份SAID虽然没有安装盘的机能,不过各种软件带了不少,还是挺满意的,接下来就是我的问题了。可怜的Realtek的网卡声卡都没驱动,用不了。。。当然,连XP下刚装好都没有Solaris下怎么可能有呢?
  自然我把主板的光盘翻出来希望找找,果然有个Novell驱动,我猜应该也能支持Solaris吧。不过里面的芯片类型就不懂了,忘记了,因为刚用不熟,所以保险还是启动到XP下用软件查看吧。
  启动至XP后无奈的发现死机,重启来过,又死,无奈,而且最可恶的是鼠标能动,键盘一案就死机,无奈,makeactive windows分区,来过,这次没问题了。键盘能用,但是。。。鼠标有不动了。。。。还后重启下解决。
  自然,发现个严重问题,逻辑分区的盘符全乱了。PM提示分区表错误11111,用它修复吧。
之后,很明显,再设置solaris分区为active后重启,grub那个有选项的页面没了。。。只有个grub>让我输命令。。。。最可恶的是找了半天cat也好find也好。都没能解决问题,这里引用个重要的东西:网上搜到的一份solaris 10 的menu.lst的Solaris 10 部分的内容,等我下次重新正确装一次之后更新标准版。。
#---------- ADDED BY BOOTADM - DO NOT EDIT ----------
title Solaris Nevada snv_60 X86
kernel$ /platform/i86pc/kernel/$ISADIR/unix
module$ /platform/i86pc/$ISADIR/boot_archive
#---------------------END BOOTADM--------------------
#---------- ADDED BY BOOTADM - DO NOT EDIT ----------
title Solaris failsafe
kernel /boot/platform/i86pc/kernel/unix -s
module /boot/x86.miniroot-safe
#---------------------END BOOTADM--------------------

当然,你可以想到,如果这样就结束的话我现在就可以去吃夜宵了,kernel的时候果然出现了万恶的Grub的Error 17.不能挂载分区。。。。。
网上能搜到的都是ubuntu的问题和解决方案。。。话说它的渗透力好大啊。。。恩。解决方案是ubuntu的livecd启动。。。很可惜手头没有标准Solaris 10和类似的东西的启动盘。。。
没办法。只能用wingrub来重装grub设置过了。。。

下载地址:
http://grub4dos.sourceforge.net
或:
http://fedora.linuxsir.org/main/files/WINGRB0206.EXE

用法的话,参见http://fedora.linuxsir.org/main/?q=node/37这篇文章,或者像我这样。
装好后,base setup 选c盘,主菜单编辑好后再
tool-》install grub那里用第一个点install就ok。
----------------------------------------------
很遗憾,虽然尽可能的尝试了,但是我的XP奇怪的要死。无奈只要用grub引导一定会在启动到登陆界面的时候死机。。而Solaris,在之后的修改中也无法启动,这次换error 18,根据在sun的网站上查到的资料,貌似只有SUN的Grub能够识别那个NFS,不知道是不是这个原因。网上修复的方法要光盘,很遗憾我只有SAID,于是只能重装。。。

2008-02-16

Ubuntu日常使用:音频转换

  很明显的是,如果需要平常也使用Ubuntu的话肯定是离不开多媒体应用的,播放器方面,mplayer和大多数一般的音频播放器以及可以解决,不过另外一个问题在于,从CD抓取音轨或者
要传到MP3上去放的话经常涉及格式转换,目前没有找到比较好的图形界面程序,于是只能用命令行程序了。
4]u[N7-/ 首先是工具:
s3U,YnJ' MP3 相关工具: lame
g?JK51# OGG 相关工具: vorbis-tools
 �K6x+ APE 相关工具: mac
&~N%O�8r FLAC 相关工具: flac
88veE!@z WAV 相关工具: shntool
^;w M1CA BIN/CUE镜像分割: bchunk 或mp3splt

我现在遇到的问题是需要把我硬盘上的ogg转成mp3,查到的解决方案中目前可用的是:
ogg→wav→mp3
这里需要前两个工具。
lame直接下载编译安装,vorbis-tools用sudo apt-get install vorbis-tools
装好后就可以用命令转换了。
命令格式:
-------------------------------$+.Vei+Gx
3 q6Z^!r mp3→wav
FDtrM+2;d
7EPI7]0 lame --decode <输入_mp3文件> <输出_wav文件>
G}@*,1]_ -------------------
}t6FnVG@Sp wav→mp3
-p"+0.y
3D<&2M1 lame -b <比特率> <输入_wav文件> <输出_mp3文件> //CBR
z7/*}Z_ shntool conv -o "cust ext=mp3 lame -b <比特率> - %f" <输入_wav文件>
2C)4wn4  lame -h -v -b <比特率> <输入_wav文件> <输出_mp3文件> //VBR
-------------------
RP4 V) [k_r4/z

,e[\1WIT ogg→wav
3NgetPDf
X>|Q@s(c8 oggdec <输出_ogg文件> -o <输入_wav文件>
?aP7Jb~" -------------------
R\^RzC.W wav→ogg
qt"(m!y>)
CWk ? oggenc [-b <比特率>] <输入_wav文件> -o <输出_ogg文件>
8Dx d,e Tdk@36yt -------------------
%57ub5 @ ape→wav
&f_$=ID=
JNqCd5# mac <输入_ape文件> <输出_wav文件> -d
YR|%oM}' -------------------
#0*`nWy wav→ape
@B +D%Z;<
Mr>BuP  mac <输入_wav文件> <输出_ape文件> -c <压缩比率, 默认为 2000>
Gg-------------------
V/;<9q#3>@RMgGJ flac→wav
{jK|?t('c
.VO}PhEJ5 flac -d <输入_flac文件> -o <输出_wav文件>
_T[ nD} -------------------
3)dg�@g$X wav→flac
=>Bm tjH 1
$A d_9 flac <输入_wav文件> <输出_flac文件> -<压缩比率 1-8 , 默认为 5>
^Q{l\=?O b Fb1@4mn -------------------
"jD'7BM2M 分割APE/CUE镜像
\Wk/qRZ(=
@_UQ{N i) 先解码成WAV格式
'(24D| mac CDImage.ape CDImage.wav -d
I Ths OI=
}vnisCH&B 再进行切割
x Q0bl}7 bchunk -w CDImage.wav CDImage.cue output
}"\6q n2
5_~)^J:s shnsplit -f CDImage.cue CDImage.wav
A~z8Jeg!
H{jTqlt ii) 也可以直接切割
~kIm�yC shnsplit -f CDImage.cue -i ape CDImage.ape
Mz y�e?}
|5 nQ iii) 切割并转换到其他格式(FLAC/mp3)
aD7X7Lj] shnsplit -f CDImage.cue -i ape -o flac CDImage.ape
C14Q}H4)
*R=}zguR)I shnsplit -f CDImage.cue -i ape \
]"+ H $1 -o "cust ext=mp3 lame -b 320 - %f" CDImage.ape
M)KaVW-9J

I0Z0P5# ------------------
q\n3Ch ape↔ FLAC
jBe"w#]P
=j @gk] shnconv -i ape -o flac CDImage.ape
shnconv -i flac -o ape CDImage.flac
---------------------------------
使用这些就可以完成转换了。不过没有gui效率比较低下

2008-02-02

开始使用Ubuntu

  昨天的安装完成之后又继续鼓捣了一天,主要是在开启3D桌面效果和多媒体播放上下功夫,最麻烦的3D桌面之所以麻烦在于驱动上,Ubuntu官方强烈不建议安装Nvidia官方驱动,而直接使用更新源里面的那个驱动,但是昨天因为我已经先安装上了,而且又不懂如何卸载,所以就不动手改动了,昨天晚上一切都好用,可惜今天一开机那恶心的:“Ubuntu将工作在低分辨率下”的提示出现了。。。无奈,装过,没想到我真命大,装了NV官方驱动和Ubuntu更新源里两个驱动居然还没事,可惜的是开不了特效,于是,只能卸载从源更新的驱动重新来过了。。。
  虽然各人所碰到的情况不同,不过一般搜了半天有价值的信息无非两点:

  1. 如果之前安装过更新源里的glx驱动需要卸载
  2. 安装官方驱动需要先下载基本编译包(大概是这意思)。
前者的解决方法(仅供参考):
----------------------------------←
   sudo apt-get remove nvidia*  //就是删了所有nvidia打头的包
  然后删除 /lib/linux-restricted-modules/文件夹下面的内容注意是全部。包括一个隐藏文件。
  再删除/etc/init.d/nvidia-glx和/etc/init.d/nvidia-kernel(if existed)
  之后
  sudo gedit /etc/default/linux-restricted-modules-common   //编辑文件设置禁用其他的driver驱动模块 将其中的 DISABLED_MODULES="" 改为:DISABLED_MODULES="nv nvidia_new"
  如果你之前卡不是用new的话似乎用对应的模块名
  之后开始安装,首先必须结束gnome或kde
  我只用gnome所以
  sudo /etc/init.d/gdm stop //结束gnome
  sudo sh 安装文件
  按照提示,要你下载的时候选不,要编译的时候选是,最后no就可以了。(编译问题见后者说明)
  装好后
  sudo nvidia-xconfig  //备份配置文件等。。
  sudo reboot或 sudo /etc/init.d/gdm start
-------------------→
  实际上,装好后仍然不能开3D,不过卸了受限驱动管理器重启下就ok
--------------------------------------←


后者的解决方法:
--------------------------------------←
sudo apt-get install linux-headers-$(uname -r) build-essential  //安装安装头文件和编译环境
貌似还要gcc,没有自己装
--------------------------------------←

p.s. 安装前注意备份/etc/X11/xorg.conf,如果挂了拷贝回去恢复,否则用livecd里面的吧
另外,我用的是169.09的驱动,貌似没有NV的logo

之后就是一些设置3D桌面的东西。我转网上流传的据说是台湾人写的:
--------------------------------------↔
2.引导Compiz Fusion 3D桌面

Ubuntu 7.10最大的改变就是内置Compiz Fusion做为缺省的窗口管理程序,Compiz是一套以OpenGL为基础的3D桌面,前一版Ubuntu 7.04就已经内置。当时除了Compiz之外,还有花样更多、特效更炫的Beryl,Beryl原本是Compiz的开发分支,但因为搞了太多3D特 效,牺牲了稳定度与性能,Compiz拒绝把Beryl所做的改变导回Compiz,Beryl於是变成独立的程序。

可是Beryl真的超炫,只要看过图片,任何人都愿意牺牲稳定度与性能来装它,官方讨论区的视觉效果版最热门的主题就是如何安装Beryl,安装 难度其实不高,只是可能会造成系统毁坏。幸好,Compiz与Beryl终於达成共识,在今年三月决定合并,也就是Compiz Fusion,原来的Compiz团队负责核心,Beryl团队则负责外挂特效,以同时保有稳定性和华丽度。

不过两边才刚合并半年而已,Beryl一些旧外挂还没有完全转进Fusion(比如3D窗口),但Fusion也有一堆新特效,所以整体来说我觉 得7.10版还是比较炫,重点是不必再灌Beryl就有接近完整的特效,稳定又简单。勇士级玩家也可以手动装那些未开放的外挂,把Compiz Fusion操到更炫。

装完Ubuntu后,先到「系统>管理>软件来源」,在「Ubuntu Software」和「Third-Party Software」下勾选所有项目,勾完按「Close」,然后按「Reload」更新软件名单。

按「系统>管理>受限驱动程序管理员」,进入封闭原始码的驱动程序界面,没意外的话,Ubuntu应该会检测到你用的显示卡(和网络卡),基本上NVIDIA的卡有比较好的支持度,勾选「Enable」就自动下载安装,装完之后重开机。

基本上只要驱动灌好,重开机之后就会自动引导Compiz Fusion,但缺省的特效蛮精简的。按「系统>首选设置>外观设置」,Ubuntu 7.10把所有外观设置通通集中在这里,再按「Visual Effects」调整3D特效,缺省是「Normal」,当然要调到「Extra」打开更多特效。

开到Extra,窗口移动就有布丁特效了。其实按「CTRL+ALT+左(右)方向键」或是按「Win Key+E」也有特效,统一在下面讲。


注:Win Key就是CTRL和ALT之间的窗口键。
安装CCSM
Ubuntu 7.10预装了Compiz Fusion,其实也内置了一堆特效外挂,但官方并不想把设置复杂化,也不愿意缺省开太多特效拖垮性能,要高级设置的话,得另外装CCSM (CompizConfig Setting Manager),统一管理所有外挂和设置。

按「系统>管理>Synaptic组件管理程序」,这是Ubuntu安装软件的地方,Ubuntu的好处之一就是软件寻找和安装是统一界面,不必上网到处找软件。

按「CTRL+F」输入「compiz」做寻找,应该会看到「compizconfig-settings-manager」这个程序,点它「标记为安装」。再按上面的「Apply」按钮开始安装。

装完CCSM,回到「外观设置」下,会多出一个「Custom」选项,按旁边的「首选设置」引导CCSM。

CCSM的主界面,这个,才是Compiz Fusion的菁华!

3.3D桌面特效全开

Compiz是以外挂(Plug-in)的方式引导特效,CCSM其实是管理这些外挂的界面,里面每个项目都是独立的Plug-in,有些 Plug-in彼此功能重叠,不能同时打开。光是CCSM就有数百个选项可以微调,事实上,因为CCSM选项太多,程序甚至附带「Filter」的功能, 用关键字来寻找设置,这里没办法一一介绍,所以推荐几支必开的特效。

首先,当然是把立方体找回来!

在「General Options>Desktop Size」,把水平虚拟尺寸拉到「4」,这是虚拟桌面的数量,其它两个选项保持在1。

在CCSM主画面勾选「旋转立方体」、「桌面立方体」、「Cube Reflection」、「Cube Gears」和「Cube Caps」。这得关闭Desktop Wall外挂,不过立方体炫多了,Wall只是在切换虚拟桌面时有一个小图显示当前所在桌面。

按「CTRL+ALT+左(右)方向键」或是「CTRL+ALT+鼠标左键」,看看立方体效果有没有出现,仔细看一下,Compiz Fusion多了倒影效果,立方体会在底部有淡淡的镜面特效。

在「桌面立方体>Transparent Cube」,把「Opacity During Roation」降到50左右,这样在旋转时立方体会变半透明,还可以看到立方体内部有三个齿轮(Cube Gears),哈哈!

在「旋转立方体>General」,把「缩放」调到0.16,「速度」调到1.4。这样按「CTRL+ALT+左(右)方向键」会有比较炫的立方块旋转特效。

Expose+Cover Flow+Flip3D?天下特效一大抄

在「调整比例>Actions>启始化所有窗口的窗口选择器」,在后面的「Screen Edge」的None上点两下,勾选「TopRight」。

这样把鼠标光标移到画面右上角,就有类似Mac OS X的expose特效了。

在CCSM主画面选「expo」,这是Compiz Fusion的新特效,勾选「Behaviour」下的「Tilt View」。

比照假的expose,在「Expo>Actions」下,选TopLeft。

光标移到画面左上角,哇!炫吧~这个虚拟窗口总览好用的地方在於你可以拉动里面的窗口,任何移动到其它桌面上(移动时当然也有布丁特效),除非在某一个虚拟桌面上点一下鼠标右键,不然就会一直保持在expo界面下。

在CCSM主画面选「Shift Switcher」,这是Compiz Fusion另一个新特效,到「Actions>Initial(All workspace)」下,Screen Edge的热键改成「BottomLeft」。

光标移到画面左下角,哇咧,好像有点眼熟吧?这不就是iTunes的Cover Flow特效吗?只是用在窗口选择上了,按左右方向键或滚轮可循环窗口,按Enter或左键选定。这个特效有点操,显卡不够力的话在「翻页」时可能会有点 顿,另外特效也还有点bug,有时没办法显示窗口画面,只大大的秀一颗超糊的图示。

回到「Shift Switcher」的设置,在「Apperance>Switch mode」下,可切换Cover和Flip两种,缺省是Cover,猜猜Flip是什么。

没错,你猜对了!正是Vista的Flip3D,当然角度要换一下免得有「参考」的嫌疑。一样按方向键或滚轮选择窗口。

在CCSM主画面勾选「Ring Switcher」,在「Actions>Next Window(All workspace」的「Key」上点一下左键,再按下你想要的热键(原来的是Alt+Win Key+Tab,章鱼才按的出来....),比如「Win Key+W」(会显示成Super+W)。

我猜这个特效应该是从Looking Glass 3D参考来的,拿来取代Alt-Tab还不错。

其它窗口特效,我的大龙炮烟火呢?

在CCSM主选单勾选「Windows Preview」,这会引导工具列的窗口预览功能,就跟Vista的一样。

在「移动窗口>不透明度」,把数值改到70左右,这样移动窗口时会有半透明效果。

在「General Options>Opacity Settings」,按「新增」,输入「dock」和数值「80」;然后再输入「DropdownMenu」和「popupMenu」,数值也都是80,这会让工具列和它的选单变半透明。

在「Animations>CloseAnimation」,在第一个Glide2上点两下,从CloseEffect的下拉选单中选「Burn」。

再到「Effect Settings>Fire」下勾选「Randomly Colored Fire」。

YA!我最爱的烟火又回来了~~~其它「FocusAnimation」(点一下窗口成为前台)、「MinimizeAnimation」(最小 化窗口)、「OpenAnimation」(打开窗口)都可以照这个方式自己选喜欢的动画,或通通都选「Random」(随机)也行,每次都会换不同的特 效。

Widget,对!Ubuntu「也」有Widget
Compiz Fusion另一个新功能是Widget Layer,就像Mac OS X的Dashboard完全一样,按热键「F9」会让画面暗下来,秀出各种小玩具。这功能必须和Screenlet搭配,先安装Screenlet和小玩 具,然后再加进Compiz Fusion的Widget Layer中,就会有非常类似MacOSX的Dashboard效果。

//当然,我个人认为这些再改就不大稳定了,所以不弄了。。也不转了。。。
-----------------------------------↔




另外是一些关于Ubuntu的知识和使用中的技巧

  • Ubuntu的版号是推出的「年份.月份」比如7.10就是07年10月。
  • Ctrl+Alt+F1一直到F6是切换到真正的控制台,共6个,当然F7就是切回GUI
  • Windows下不少快捷键在Ubuntu7.10中可以直接用了。
  • 在视频和音频播放器上我选择了最多人用的mplayer和audacious,后者会中文乱码,不过在设置→播放列表→使用播放列表中的元数据钩选了,自动编码检测器中用Chinese大部分内容都不会乱码了

目前还有的问题是Audacious无法播放mid wav等格式,虽然解码器已经装了,mplayer好像不播AAC

传一些截图上来。



2008-02-01

Ubuntu7.10从安装开始

  从一开始说,实际上,ubuntu一般直接从livecd开始安装的话都是桌面环境,所以非常容易上手,如果需要参考一些资料的话也可以上网,这里,如果你是Adsl虚拟拨号的话需要配置一下,打开Applications--附近--终端,输入:“sudo pppoeconf”之后按照提示配置就可以了。
  注意,Linux下区分大小写哦。。。
  装好之后案子官方wiki上的快速配置指南可以完成许多基本应用所需的东西。
  在更新源那里只需设置一个就够了,比如我现在用中国铁通的宽带直接用官方源就可以了。
  另外,提醒一下,scim输入法配置的时候和官方文档不同,有一些快捷键冲突,需要自己配置一下,另外,和官方文档不同的是,我手上的7.10版Alt+F2不是打开终端的快捷键,需要自己设置过。
  好了,完成这些以后,基本一个能用的系统就成形了。

Linux选择

  很早就希望能学习使用Linux,可惜一直都没有实现,之前最多也就是装上以后稍微玩玩就卸了,不过,这次因为需要学习Solaris 10而开始学习Linux,因为我的另外一台机器用的是X1250的显卡,貌似所有的Linux和Unix都不大支持。虽然可以装上,不过麻烦死了,所以就先用家里这一台装上Ubuntu来适应一下环境,话说回来,看来Ubuntu7.10已经集成了很多强大,好用的功能,不但直接可以读取Windows下的分区,而且还拥有华丽的桌面效果,基本上我都不需要切回windows了。
所以,这个月中,我就暂时开始Ubuntu的学习。