魔力宝贝

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz

LINUX使用

[复制链接]
发表于 6 天前 | 显示全部楼层 |阅读模式
首先:我们需要的是Linux工具


工具介绍:

Linux是一个多用户的操作系统,她有完美的用户管理工具,这些工具包括用户的查询、添加、修改,以及用户之间相互切换的工具等;通过这些工具,我们能安全、轻松的完成用户管理;

在这里我们要引入用户控制工具的概念,比如对用户添加的useradd或adduser ,对用户删除的 userdel ,与修改用户相关信息的 usermod、chfn、chsh ,还有密码设置工具passwd 等等;这些工具只所以被称为用户控制工具,理由是她们是控制和管理用户的工具。



    一、与用户管理相关的配置文件;



    1、/etc/passwd 和/etc/groups



    我们对用户和用户组进行添加、修改、删除最终目的是修改系统用户 /etc/passwd和其加密资讯文件 /etc/shadows 以及用户组的 /etc/groups和其加密资讯文件/etc/gshadow,所以对用户和用户组的添加并不仅仅是只能通过用户添加、修改、删除等用户控制工具来完成,我们还能直接修改与用户和用户组相应的配置文件来达到目的。在 《用户(user)和用户组(group)配置文件详解》一文中,我有谈过通过修改用户及用户组配置文件的办法来添加、删除、修改用户,进而达到对系统用户的管理;



    2、超级权限控制sudo 的配置文件 /etc/sudoers ;



    3、添加用户规则文件 /etc/login.defs 和 /etc/default/useradd



    二、添加用户工具和方法;



    添加用户工具有useradd和adduser ,这两个工具所达到的目的都是一样的,在Fedora 发行版中,useradd 和adduser 用法是一样的;但在slackware发行版本中,adduser和useradd 还是有所不同,表现为adduser 是以人机交互的提问的方式来添加用户;



    除了useradd和adduser工具以外,我们还能通过修改用户配置文件/etc/passwd和/etc/groups的办法来实现;



    当然我们也不要忽略一些发行版独有用户管理工具,比如Fedora 中有 system-config-users 工具;这个工具比较简单,点几下鼠标就能完成;



    1、useradd 工具;



    useradd 不加参数选项时,后面直接跟所添加的用户名时,系统时读取添加用户配置文件/etc/login.defs和/etc/default/useradd文件,然后读取/etc/login.defs和/etc/default/useradd中所定义的规则添加用户;并向/etc/passwd和/etc/groups文件添加用户和用户组记录;当然/etc/passwd和/etc/groups的加密资讯文件也同步生成记录;同时发生的还有系统会自动在/etc/add/default中所约定的目录中建用户的家目录,并复制/etc/skel中的文件(包括隐藏文件)到新用户的家目录中;


useradd 的语法:



usage: useradd [-u uid [-o]] [-g group] [-G group,...]
                [-d home] [-s shell] [-c comment] [-m [-k template]]


[-f inactive] [-e eXPire ] [-p passwd] name
       useradd -D [-g group] [-b base] [-s shell]
                [-f inactive] [-e expire ]



    当我们执行useradd 用户名 来添加用户时,我们会发现一个比较有意思的现象,新添中的用户的家目录总是被自动添加到 /home目录下,我们先举个例子;



    实例一:不加任何参数,直接添加用户;



[root@localhost beinan]# useradd beinanlinux
[root@localhost beinan]# ls -ld /home/beinanlinux/
drwxr-xr-x 3 beinanlinux beinanlinux 4096 11月 2 15:20 /home/beinanlinux/



    在这个例子中,我们添加了beinanlinux用户,我们在查看/home/目录时,会发现系统自建了一个beinanlinux的目录;



    我们再来查看 /etc/passwd 文件有关beinanlinux的记录,也会有新发现;我们通过more 来读取 /etc/passwd 文件,并且通过grep 来抽取 beinanlinux字段,得出如下一行;



[root@localhost beinan]# more /etc/passwd grep beinanlinux
beinanlinux:x:509:509::/home/beinanlinux:/bin/bash



    从得出的beinanlinux的记录来看,以adduser 工具添加beinanlinux用户时,设置用户的UID和GID分别为509 ,并且把beinanlinux的家目录设置在 /home/beinanlinux ,所有的SHELL是 bash ; 我们再来看看 /etc/shadow、/etc/groups和/etc/gshadow 文件,是不是也有与beinanlinux有关的行;我们还要查看/etc/default/useradd 和/etc/login.defs文件的规则,看一下beinanlinux用户的增加是不是和这两个配置文件有关;我们还要查看 /home/beinanlinux目录下的文件,是不是和/etc/skel目录中的一样;



    由此我们引出我们下面所要谈的内容:



useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]



    1)/etc/default/useradd 配置文件的定义;



useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]




useradd 加-D参数后,就是用来改变配置文件 /etc/default/useradd的;



useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]

当-D选项出现时,useradd秀出现在的预设值,或是藉由命令列的方式更新预设值。可用选项为∶
       -b default_home 注:定义用户所属目录的前一个目录。用户名称会附加在default_home后面用来建立新用户的目录。当然使用-d后则此选项无效。
       -e default_expire_date 注:用户帐号停止日期。
       -f default_inactive 注:帐号过期几日后停权。
       -g default_group 注:新帐号起始用户组名或ID。用户组名须为现有存在的名称。用户组ID也须为现有存在的用户组。
       -s default_shell 注:用户登入后使用的shell名称。往后新加入的帐号都将使用此shell.
       如不指定任何参数,useradd显示目前预设的值。



    实例二:



    useradd -D 如不指定任何参数,useradd显示目前预设的值;



[root@localhost beinan]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no



    我们看一下/etc/default/useradd 文件就明白了,应该和上面的输出是一样的;所以如果我们想改变useradd配置文件/etc/default/adduser 的内容,也可以用编辑器直接操作,如果你会用vi编辑器或者其它编辑器的话,这个应该不成问题吧;



    实例三:



    我想把添加用户时的默认SHELL /bin/bash 改为 /bin/tcsh ,则应该用下面的命令;



[root@localhost beinan]# useradd -D -s /bin/tcsh 注:把添加用户时的SHELL 改为tcsh ;
[root@localhost beinan]# more /etc/default/useradd 注:查看是否成功;
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/tcsh 注:成功;
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no



    这个-D参数的解说就这样了,也是比较简单,如果不会用命令,直接改参数配置文件总会吧;Linux解决问题是极为灵活的,就看我们怎么解决了,对不对?



    2)useradd 添加用户;



useradd [-u uid [-o]] [-g group] [-G group,...]
                [-d home] [-s shell] [-c comment] [-m [-k template]]


新帐号建立,当不加-D参数,useradd指令使用命令列来指定新帐号的设定值and使用系统上的预设值.新用户帐号将产生一些系统档案,用户目录建立,拷备起始档案等,这些均可以利用命令列选项指定。此版本为RedHat Linux提供,可帮每个新加入的用户建立个别的group,毋须添加-n选项。



    useradd 可使用的选项为
       -c comment 注:新帐号 passWord 档的说明栏 。
       -d home_dir 注:新帐号每次登入时所使用的home_dir。预设值为default_home内login名称,并当成登入时目录名称。
       -e expire_date 注:帐号终止日期。日期的指定格式为MM/DD/YY。
       -f inactive_days 注:帐号过期几日后永久停权。当值为0时帐号则立刻被停权。而当值为-1时则关闭此功能,预设值为-1
       -g initial_group 注:group名称或以数字来做为用户登入起始用户组(group)。用户组名须为现有存在的名称。用户组数字也须为现有存在的用户组。预设的用户组数字为1。
       -G group,[...]
              注:定义此用户为此一堆groups的成员。每个用户组使用","区格开来,不可以夹杂空白字元。用户组名同-g选项的限制。定义值为用户的起始用户组。。
       -m 注: 用户目录如不存在则自动建立。如使用-k选项skeleton_dir内的档案将复制至用户目录下。然而在/etc/skel目录下的档案也会复制过去取代。任何在skeleton_dir or /etc/skel的目录也相同会在用户目录下一一建立。The-k同-m不建立目录以及不复制任何档案为预设值。
       -M 不建立用户目录,即使/etc/login.defs系统档设定要建立用户目录。
       -n 预设值用户用户组与用户名称会相同。此选项将取消此预设值。
       -r 此参数是用来建立系统帐号。系统帐号的UID会比定义在系统档上/etc/login.defs.的UID_MIN来的小。注意useradd此用法所建立的帐号不会建立用户目录,也不会在乎纪录在/etc/login.defs.的定义值。如果你想要有用户目录须额外指定-m参数来建立系统帐号。
       -s shell 注:用户登入后使用的shell名称。预设为不填写,这样系统会帮你指定预设的登入shell。
       -u uid uid用户的ID值。必须为唯一的ID值,除非用-o选项。数字不可为负值。预设为以/etc/login.defs中的UID_MIN的值为准,0到UID_MIN的值之间,为系统保留的UID ;

useradd 这么多的参数看上去头有点晕,我们如何用呢??其实很简单;一个参数一个参数的试一试不就明白了??这是最好的学习方法。实践是检验真理的唯一标准;



    如果useradd 后面直接跟用户名,不加任何参数,表示添加用户时按事先/etc/default/adduser 和/etc/login.defs 添加新用户的配置文件的规则来添加用户;其实我们为了方便,也可以把这两个文件修改以适合我们添加用户需要;




    useradd 为什么还需要那么多的参数呢?



    原因很简单,主要是为了管理员方便管理用户。useradd 是灵活的,可以跳过/dev/default/adduser 和/etc/login.defs 两个配置文件中的规则来自定义添加用户;比如在用户的家目录,在/etc/default/adduser 中可能定义在/home目录下建立,如果我们的机器/home独立占一个分区,并且有点紧张,但我们又不想改变/etc/default/adduser 关于家目录的定义,这里我们就可以通过 adduser -d 参数把新增用户家目录定义到空间比较空闭的分区;



    通过下面的几个例子,可能有助于我们理解useradd ,其实很简单~,学习也是这样,先从简单的入手,一步一步的走过来,没有什么难的~~



    实例四:以/etc/logins.defs和/etc/default/adduser 默认的规则添加用户;



[root@localhost ~]# useradd longcpu



    注解:如果useradd 后面直接用户名,表示系统读取 /etc/login.defs和/etc/default/adduser 配置文件,根本这两个配置文件所定义的规则来添加用户,比如用户的家目录哪里,用什么SHELL,UID和GID的分配... ... 查看/etc/passwd的新增记录,然后根据 /etc/login.defs和/etc/default/adduser 查看新增用户是否符合这两个配置文件所约定的规则;



    实例五:练习参数的使用;



[root@localhost ~]# useradd -c ChinaCpu longcpu 注:添加一个新用户amdcpu ,使用参数-c;
[root@localhost ~]# more /etc/passwd grep longcpu 注:查看/etc/passwd 文件,并抽取longcpu的记录;
longcpu:x:510:510:ChinaCpu:/home/longcpu:/bin/bash



    注:看上去是已经有amdcpu用户了;x是密码段;UID和GID 都是510,ChinaCpu表示是什么意思? 家目录位于/home/amdcpu,SHELL是bash ;



[root@localhost ~]# finger longcpu 注:我们查询一下amdcpu 用户的信息;
Login: longcpu Name: ChinaCpu 注:-c ChinaCpu 表示用户真实的名字或全名;
Directory: /home/longcpu Shell: /bin/bash
Never logged in.
No mail.
No Plan.



    注解:这个例子,我们做了添加用户、查看/etc/passwd 的变化; 并且通过finger 来查询longcpu用户的信息,目的是理解参数-c的用处;



    参数-c 后面的就是就是UID:GID后面说明文字,这段文字中包括用户真实姓名,办公地址,办公电话等,可以通过chfn 来更改,我们可以通过chfn 来修改用户信息,然后查看 /etc/passwd 的变化,再来用finger 来查询用户信息。几个工具组合练习一下,也容易忘记;

实例六:自定义用户的家目录、SHELL类型、所归属的用户组等;




    添加用户longcpu,并设置其用户真实名字为ChinaCpu,其家目录在/opt/longcpu,让其归属为用户组 linuxsir、root、beinan成员,其SHELL类型为tcsh ;



[root@localhost ~]# useradd -c ChinaCpu -d /opt/longcpu -G linuxsir,root,beinan -s /bin/tcsh longcpu



    注:添加用户longcpu ,真实名是ChinaCpu ,家目录设置在 /opt/longcpu ,是linuxsir,root,beinan 用户组成员, SHELL是tcsh ;



[root@localhost ~]# ls -ld /opt/longcpu/ 注:是不是自动创建了longcpu的家目录?
drwxr-xr-x 3 longcpu longcpu 4096 11月 4 22:30 /opt/longcpu/
[root@localhost ~]# more /etc/passwd grep longcpu 注:查看 /etc/passwd 中是否有longcpu用户记录;
longcpu:x:510:510:ChinaCpu:/opt/longcpu:/bin/tcsh
[root@localhost beinan]# finger longcpu 注:查询longcpu用户的信息 ;
Login: longcpu Name: ChinaCpu
Directory: /opt/longcpu Shell: /bin/tcsh
Never logged in.
No mail.
No Plan.
[root@localhost beinan]# id longcpu 注:查询UID和GID 以及所归属的用户组;
uid=510(longcpu) gid=510(longcpu) groups=510(longcpu),0(root),500(beinan),502(linuxsir)



    关于在添加新用户时用户组,添加用户时,如果不使用-n 参数,系统会自动建一个与用户名同名的用户组;



    实例七:练习用户有效期限;



    在本例中,我们主要来看看-e参数,这个参数还是比较重要的,是设定用户的帐号什么时候过期;



    在本例中,我们添加了一个帐号,并且设置其帐号在 2005年11月04日之前是有效的,一旦过了这个日期,便停止其登录;



[root@localhost ~]# useradd -e 11/04/2005 cooler 注:添加用户cooler,并设置其有效期为2005年11月04日;
[root@localhost ~]# passwd cooler 注:设置用户cooler密码;
Changing password for user cooler.
New UNIX password: 注:设定cooler的密码;
Retype new UNIX password: 注:核实设定密码;
passwd: all authentication tokens updated sUCcessfully. 注:设置成功;



    如何验证-e 是不是真的有效?我写这篇文档的时间是 2005年11月05号,所以添加这个cooler用户肯定是过期的,就是他有密码也不能登录;



    有的弟兄会问,他把有效期的记录放在哪里了呢?其实我们在以前的文档中已经说过了,是写在/etc/shadow文件中了;

2、adduser 工具;



    edora 系统中,adduser和useradd 用法是一样的,但在 Slackware 系统中 adduser 是通过人机交互的方法来添加用户,其实和useradd 加各项参数来自定义添加用户所达到的目的是一样的,只不过在Slackware 中,useradd 是以人机交互的提问式的进行;这样我们没有必要知道那么多的参数,一样可以达到自定义添加用户;




[root@localhost ~]# adduser 注:运行adduser命令;
Login name for new user []: bluemoon 注:添加新用户 bluemoon
User ID ('UID') [ defaults to next available ]: 1200 注:用户的UID ,UID 是唯一的;如果有提示说被占用,就选比较大的UID ,比如1300
Initial group [ users ]: users 注:初始化用户组(或主用户组)为users,这个用户组也是可以自己定义的,但用户组必须存在,如果不存在,您可以用groupadd来添加
Additional groups (comma separated) []: root,beinan 注:附加用户组,这个也是自己定义的,多个用户组之间用,号分割;
Home directory [ /home/bluemoon ] 注:定义用户的家目录位置,也是可以自己定义的,比如/opt/bluemoon ;
Shell [ /bin/bash ] 注:所用SHELL ,此处用的是bash ;
Expiry date (YYYY-MM-DD) []: 注:用户的有效日期,如果不设置就直接回车,表示从不过期;如果设置就以2005-11-05这样的格式来输入;
New account will be created as follows: 注:创建的用户情况如下;
---------------------------------------
Login name.......: bluemoon
UID..............: 1200
Initial group....: users
Additional groups: root
Home directory...: /home/bluemoon
Shell............: /bin/bash
Expiry date......: [ Never ]
This is it... if you want to bail out, hit Control-C. Otherwise, press
ENTER to go ahead and make the account.



    注:在这里按回车就开始创建,如果认为这样不合理,就按CTRL+C 来中断;



    Creating new account... 这样就创建好了;系统会自动提示我们修改用户的信息,比如用户的全名、房间号、电话等...... 以及用户的密码;



Changing the user information for bluemoon
Enter the new value, or press ENTER for the default
        Full Name []: bluemoon Linux
        Room Number []: 503
        Work Phone []: 0411-8888888


Home Phone []: 0411-9999999
        Other []:
Changing password for bluemoon
Enter the new password (minimum of 5, maximum of 127 characters)
Please use a combination of upper and lower case letters and numbers.
New password: 注:设置用户bluemoon的密码;
Re-enter new password: 注:验证一次;
Password changed. 注:设置密码成功

3、通过修改/etc/passwd 管理(添加、删除、修改)用户的方法;



    4、添加用户组命令groupadd ;



    语法格式:



groupadd [-g gid [-o]] [-r] [-f] group



    groupadd 可指定用户组名称来建立新的用户组帐号,需要时可从系统中取得新用户组值。groupadd有下列选项可用。



    -g 后接GID值,除非使用-o参数不然该值必须是唯一,不可相同,数值不可为负,预设值以/etc/login.defs为准;
    -r
    此参数是用来建立系统帐号的GID会比定义在系统档文件上/etc/login.defs 的GID_MIN来的小。注意useradd此用法所建立的帐号不会建立使用者目录,也不会纪录在/etc/login.defs.的定义值。如果你想要有使用者目录须额外指定-m参数来建立系统帐号,它会自动帮你选定一个小于的GID_MIN的值,不需要再加上-g参数。



    -f This is force flag.新增一个已经存在的用户组帐号,系统会出现错误讯息然后结束groupadd。如果是这样的情况,不会新增这个用户组(如果是这个情况下,系统不会再新增一次) 也可同时加上-g选项,当你加上一个GID,此时GID就不用是唯一值,可不加-o参数,建好用户组后会显结果(adding a group as neither -g or -o options were specified)。



    其实增加用户组的,用起来还是简单一点为好;比如下面的例子,添加GID为666的用户组Google;



[root@localhost ~]# groupadd -g 666 google



    三、passwd 设置或修改用户密码;



    1、passwd 简单说明;



    我们已经学会如何添加用户了,所以我们还要学习设置或修改用户的密码;passwd命令的用法也很多,我们只选如下的几个参数加以说明;想了解更多,请参考man passwd或passwd --help ;



passwd [OPTION...]



    passwd 作为普通用户和超级权限用户都可以运行,但作为普通用户只能更改自己的用户密码,但前提是没有被root用户锁定;如果root用户运行passwd ,可以设置或修改任何用户的密码;

passwd 命令后面不接任何参数或用户名,则表示修改当前用户的密码;请看下面的例子;



[root@localhost ~]# passwd 注:没有加任何用户,我是用root用户来执行的passwd 表示修改root用户的密码;下面也有提示;
Changing password for user root.
New UNIX password: 注:请输入新密码;
Retype new UNIX password: 注:验证新密码;
passwd: all authentication tokens updated successfully. 注:修改root密码成功;



    如果是普通用户执行passwd 只能修改自己的密码;



    如果新建用户后,要为新用户创建密码,则用 passwd 用户名 ,注意要以root用户的权限来创建;




[root@localhost ~]# passwd beinan 注:更改或创建beinan用户的密码;
Changing password for user beinan.
New UNIX password: 注:请输入新密码;
Retype new UNIX password: 注:再输入一次;
passwd: all authentication tokens updated successfully. 注:成功;



    普通用户如果想更改自己的密码,直接运行passwd即可;比如当前操作的用户是beinan;



[beinan@localhost ~]$ passwd
Changing password for user beinan. 注:更改beinan用户的密码;
(current) UNIX password: 注:请输入当前密码;
New UNIX password: 注:请输入新密码;
Retype new UNIX password: 注:确认新密码;
passwd: all authentication tokens updated successfully. 注:更改成功;



    2、passwd 几个比较重要的参数;



[root@localhost beinan]# passwd --help
Usage: passwd [OPTION...] <accountName>
  -k, --keep-tokens keep non-expired authentication tokens
                          注:保留即将过期的用户在期满后能仍能使用;
  -d, --delete delete the password for the named account (root only)
                          注:删除用户密码,仅能以root权限操作;
  -l, --lock lock the named account (root only)
                          注:锁住用户无权更改其密码,仅能通过root权限操作;


-u, --unlock unlock the named account (root only)
                          注:解除锁定;
  -f, --force force operation
                          注:强制操作;仅root权限才能操作;
  -x, --maximum=DAYS maximum password lifetime (root only) 注:两次密码修正的最大天数,后面接数字;仅能root权限操作;
  -n, --minimum=DAYS minimum password lifetime (root only) 注:两次密码修改的最小天数,后面接数字,仅能root权限操作;
  -w, --warning=DAYS number of days warning users receives before 注:在距多少天提醒用户修改密码;仅能root权限操作;
                          password expiration (root only)
  -i, --inactive=DAYS number of days after password expiration when an 注:在密码过期后多少天,用户被禁掉,仅能以root操作;
                          account becomes disabled (root only)
  -S, --status report password status on the named account (root 注:查询用户的密码状态,仅能root用户操作;
                          only)
  --stdin read new tokens from stdin (root only)




    比如我们让某个用户不能修改密码,可以用-l 参数来锁定:



[root@localhost ~]# passwd -l beinan 注:锁定用户beinan不能更改密码;
Locking password for user beinan.
passwd: Success 注:锁定成功;
[beinan@localhost ~]# su beinan 注:通过su切换到beinan用户;
[beinan@localhost ~]$ passwd 注:beinan来更改密码;


Changing password for user beinan.
Changing password for beinan
(current) UNIX password: 注:输入beinan的当前密码;
passwd: Authentication token manipulation error 注:失败,不能更改密码;



    再来一例:



[root@localhost ~]# passwd -d beinan 注:清除beinan用户密码;
Removing password for user beinan.
passwd: Success 注:清除成功;
[root@localhost ~]# passwd -S beinan 注:查询beinan用户密码状态;
Empty password. 注:空密码,也就是没有密码;



    注意: 当我们清除一个用户的密码时,登录时就无需密码;这一点要加以注意;



    3、chage 修改用户密码有效期限的命令;



    hage 用语法格式:



    chage [-l] [-m 最小天数] [-M 最大天数] [-W 警告] [-I 失效日] [-E 过期日] [-d 最后日] 用户



    前面已经说的好多了,这个只是一笔带过吧,知道有这个命令就行,自己实践实践再说,大体和psswd有些参数的用法差不多;



    四、删除用户和用户组的工具, userdel和 groupdel 介绍;



    1、userdel 用法;



    userdel 的语法格式:



    userdel [-r] 名称



    userdel很简单,只有一个参数可选 -r ;如果加参数-r ,表示在删除用户的同时,一并把用户的家目录及本地邮件存储的目录或文件也一同删除;比如我们现在有两个用户bnnb和lanhaitun,其家目录都位于/home目录中,现在我们来删除这两个用户;



[root@localhost ~]# userdel bnnb 注:删除用户bnnb,但不删除其家目录及文件;
[root@localhost ~]# ls -ld /home/bnnb 注:查看其家目录是否存在;
drwxr-xr-x 14 501 501 4096 8月 29 16:33 /home/bnnb 注:存在;
[root@localhost ~]# ls -ld /home/lanhaitun 注:查看lanhaitun家目录是否存在;
drwx------ 4 lanhaitun lanhaitun 4096 11月 5 14:50 /home/lanhaitun 注:存在;
[root@localhost ~]# userdel -r lanhaitun 注:删除用户lanhaitun,其家目录及文件一并删除;
[root@localhost ~]# ls -ld /home/lanhaitun 注:查看是否在删除lanhaitun 用户的同时,也一并把其家目录和文件一同删除;
ls: /home/lanhaitun: 没有那个文件或目录 注:已经删除;




    警告: 请不要轻易用-r参数;他会删除用户的同时删除用户所有的文件和目录,切记;如果用户目录下有重要的文件,在删除前请备份;


其实也有最简单的办法,但这种办法有点不安全,也就是直接在/etc/passwd中删除您想要删除用户的记录;但最好不要这样做,/etc/passwd 是极为重要的文件,可能您一不小心会操作失误;



    2、groupdel的用法;



    groupdel 是用来删除用户组的;



    语法格式:groupdel 用户组



    比如:



[root@localhost ~]# groupdel lanhaitun



    五、修改用户的工具介绍;



    我们前面已经多次说过用户配置文件的重要性了,其实我们无论怎么改,都是改与用户相关的配置文件;如果我们与用户相关的配置文件的规则,可以直接修改配置文件,在这里就不再多说了,请参看相关文档吧,谢谢;



    1、chfn 修改用户信息工具;



chfn 这个工具主要是用来改用户的全名,办公室地址,电话之类的;用法如下:



chfn [ -f full-name ] [ -o Office ] [ -p office-phone ] [ -h home-phone ] [ -u ] [ -v ] [ username ]



    最简单的方法是



    chfn 用户名



[root@localhost ~]# chfn beinanlinux 注:更改用户beinanlinux的信息;
Changing finger information for beinanlinux.
Name []: BeiNan.Linux 注:用户全名BeiNan.Linux ,随便写一个就行;
Office []: ChinaDL
Office Phone []: 66666666
Home Phone []: 99999999
Finger information changed. 注:更改完成;



    我们怎么能知道更改好了呢??可以通过finger 或直接查看/etc/passwd文件;



[root@localhost ~]# finger beinanlinux
Login: beinanlinux Name: BeiNan.Linux
Directory: /home/beinanlinux Shell: /bin/bash
Office: ChinaDL Home Phone: 99999999
Last login Sat Nov 5 11:27 (CST) on tty2
No mail.
No Plan.



    chfn 究竟改了/etc/passwd 文件中beinanlinux用户的哪部份呢??



[root@localhost ~]# more /etc/passwd grep beinanlinux
beinanlinux:x:509:509:BeiNan.Linux,ChinaDL,66666666,99999999:/home/beinanlinux:/bin/bash



    通过more /etc/passwd ,然后来抽取 beinanlinux记录,看一下红字标出的,就是我们通过chfn 修改过的地方,所以我们可以直接通过修改/etc/passwd文件来达到目的;

2、chsh 改变用户的SHELL类型;



[root@localhost ~]# chsh --help
Usage: chsh [ -s shell ] [ --list-shells ] [ --help ] [ --version ] [ username ]



    如果chsh 不加任何参数及用户名的情况下,默认为更改当前操作用户的SHELL类型;



    举例说明:



[root@localhost ~]# chsh --list-shells 注:列出当前系统中所有的SHELL;
/bin/sh
/bin/bash
/sbin/nologin 注:这个是不允许用户登录系统所用,是极为有用的;您可以通过查看/etc/passwd 中看哪些用户是nologin;
/bin/ksh
/bin/tcsh
/bin/csh
/bin/zsh
[root@localhost ~]# finger beinanlinux grep Shell 注:查看用户beinanlinux 所用的SHELL类型;
Directory: /home/beinanlinux Shell: /bin/bash 注:beinanlinux用的是bash ;
[root@localhost ~]# chsh -s /bin/ksh beinanlinux 注:更改beinanlinux所用的shell 为ksh ;
Changing shell for beinanlinux.
Shell changed. 注:更改完成;
[root@localhost ~]# finger beinanlinux grep Shell 注:再次查询beinanlinux所用的SHELL;
Directory: /home/beinanlinux Shell: /bin/ksh 注:看来已经改过来了;




    chsh 还是有用的,特加是不允许用户登录时,我们可以把用户的SHELL改到 /sbin/nologin;系统中一些虚拟用户大多是不能登录系统的,这对于系统安全来说是极为重要;通过下面的命令查看一下系统中哪些用户是没有登录权限的?



[root@localhost ~]# more /etc/passwd grep nologin



    3、usermod 用户修改工具(极其强大)



    usermod 不仅能改用户的SHELL类型,所归属的用户组,也能改用户密码的有效期,还能改登录名。usermod 如此看来就是能做到用户帐号大转移;比如我把用户A改为新用户B;



usermod [-u uid [-o]] [-g group] [-G group,...]
                [-d 主目录 [-m]] [-s shell] [-c 注释] [-l 新名称]
                [-f 失效日] [-e 过期日] [-p 密码] [-L-U] 用户名



    usermod 命令会参照你命令列上指定的部份修改系统帐号档。下列为usermod可选用的参数。



    -c comment
    更新用户帐号password档中的注解栏,一般是使用chfn(1)来修改。


-d home_dir
    更新用户新的登入目录。如果给定-m选项,用户旧目录会搬到新的目录去,如旧目录不存在则建个新的。
    -e expire_date 加上用户帐号停止日期。日期格式为MM/DD/YY.
    -f inactive_days 帐号过期几日后永久停权。当值为0时帐号则立刻被停权。而当值为-1时则关闭此功能。预设值为-1。
    -g initial_group 更新用户新的起始登入用户组。用户组名须已存在。用户组ID必须参照既有的的用户组。用户组ID预设值为1。
    -G group,[...] 定义用户为一堆groups的成员。每个用户组使用","区格开来,不可以夹杂空白字元。用户组名同-g选项的限制。如果用户现在的用户组不再此列,则将用户由该用户组中移除。
    -l login_name 变更用户login时的名称为login_name。其它不变。特别是,用户目录名应该也会跟着更动成新的登入名。
    -s shell 指定新登入shell。如此栏留白,系统将选用系统预设shell。
    -u uid用户ID值。必须为唯一的ID值,除非用-o选项。数字不可为负值。预设为最小不得小于/etc/login.defs中定义的UID_MIN值。0到UID_MIN值之间是传统上保留给系统帐号使用。用户目录树下所有的档案目录其userID会自动改变。放在用户目录外的档案则要自行手动更动。




    警告:usermod不允许你改变正在线上的用户帐号名称。当usermod用来改变userID,必须确认这名user没在电脑上执行任何程序。你需手动更改用户的crontab档。也需手动更改用户的at工作档。采用NISserver须在server上更动相关的NIS设定。



    举个简单的例子,我们在前面说了关于useradd的工具,而usermod 工具和useradd的参数差不多;两者不同之处在于useradd是添加,usermod 是修改;



[root@localhost ~]# usermod -d /opt/linuxfish -m -l fishlinux -U linuxfish



    注:把linuxfish 用户名改为fishlinux ,并且把其家目录转移到 /opt/linuxfish ;
[root@localhost ~]# ls -la /opt/linuxfish/ 注:查看用户fishlinux的家目录下的文件及属主;



    总用量 48
drwxr-xr-x 3 fishlinux linuxfish 4096 11月 5 16:46 .
drwxrwxrwx 29 root root 4096 11月 5 16:48 ..
-rw-r--r-- 1 fishlinux linuxfish 24 11月 5 16:46 .bash_logout
-rw-r--r-- 1 fishlinux linuxfish 191 11月 5 16:46 .bash_profile
-rw-r--r-- 1 fishlinux linuxfish 124 11月 5 16:46 .bashrc
-rw-r--r-- 1 fishlinux linuxfish 5619 11月 5 16:46 .canna
-rw-r--r-- 1 fishlinux linuxfish 438 11月 5 16:46 .emacs
-rw-r--r-- 1 fishlinux linuxfish 120 11月 5 16:46 .gtkrc


drwxr-xr-x 3 fishlinux linuxfish 4096 11月 5 16:46 .kde
-rw-r--r-- 1 fishlinux linuxfish 0 11月 5 16:46 mydoc.txt
-rw-r--r-- 1 fishlinux linuxfish 658 11月 5 16:46 .zshrc
[root@localhost ~]# more /etc/passwd grep fishlinux 注:查看有关fishlinux的记录;
fishlinux:x:512:512::/opt/linuxfish:/bin/bash



    通过上面的例子,我们发现文件的用户组还没有变,如果您想改变为fishlinux用户组,如果想用通过 usermod来修改,就要先添加fishlinux用户组;然后用usermod -g 来修改 ,也可以用chown -R fishlinux:fishlinux /opt/finshlinux 来改;



    警告: usermod 最好不要用它来改用户的密码,因为他在/etc/shadow中显示的是明口令;修改用户的口令最好用passwd ;



[root@localhost ~]# usermod -p 123456 fishlinux 注:修改fishlinux的口令是123456 ;
[root@localhost ~]# more /etc/shadow grep fishlinux 注:查询/etc/shadow文件中fishlinux的口令;我们看到明显是没有加密;
fishlinux:123456:13092:0:99999:7:::
4、userinfo 图形介面的修改工具;



    userinfo 系统普通用户都能调用,但都是修改当前操作用户的;还是点鼠标完成吧,多点几下就OK了。




[root@localhost ~]# userinfo



学习Linux的八点忠告

1、不要“玩 浏览” 很多人用 Linux 的时候会感觉很迷茫,该用哪个发行呢?是不是我少装了什么?怎么升级这么快啊!怎么这么不稳定!每当遇到新的浏览他就想试用,每当新的版本出现,他就更新,然后用鼠标在新的菜单里选择从来没见过的程序来用用。

其实你是为了Linux而使用Linux,而没有找到正确的理由来利用 Linux。你首先要明确用电脑的目的,你用它是为了解决你的实际问题,而不是为了学习安装浏览,不是为了测试哪个版本好用,不是为了“赶上潮流”,更不是因为你硬盘太大了,你想多占点空间。

如果你启动了电脑之后不知道应该干什么,那么最好先不要用电脑,因为你可能有更重要的事情需要做。

2、不用挑剔发行版本

很多人刚开始用 Linux 的时候,总是在怀疑别的发行版本是否比自己正在用的这个好,总是怀疑自己以后时候会失去支持,不得不换用别的发行。所以很多人今天是 Redhat,明天又换成了 debian, 一会儿又是 gentoo, …… 甚至有的人在一台机器上装了两个版本的 Linux,然后比较哪一个好。

其实你完全没有必要这样做,任何发行,只要你熟悉了,你在上面的工作方式几乎是不会受到任何影响的。你常常听说 Debian 的更新比 Redhat 快,包比 Redhat 多,但是你可以比 Debian 更新还要快,直接到你需要的程序的主浏览点浏览源码来编译就是了。

Debian, TurboLinux, SuSE, Redhat, Gentoo, ... 任何一个版本都是不错的。

3、不要当“传教士”

很多人在讨论区不断的引起 "Linux vs. Windows" 之类的讨论,甚至争的面红耳赤,这是没有必要的。因为各人的需要不同,生活的环境不同,你不可能得到一个定论。我们需要尊重别人的选择,这是你在进行任何对工具的讨论前需要提醒自己的事情。面对一些容易引起争论的东西:浏览 和 TeX;Emacs 和 VIM;MAXIMA,Mathematica 和 Maple;Gnome,FVWM 和 KDE;Mutt 和 Pine …… 一定要冷静。

你需要关心的不是你的工具是什么,而是你用它做了什么。精通 Linux 并不说明任何问题,因为它只是一个工具而已。如果你用 Windows 能很好的完成你的任务,那你就没有必要费时间去熟悉 Linux。直到有一天你发现一项任务只有 Linux 才能完成的时候再换也不迟,因为你身边的 Linux 的爱好者一定会很乐意的帮助你。

并不是喜欢一种东西就必须反对其它的。世界需要多样性,人们都需要FUN。用自己的兴趣去压制别人的,就会毁掉所有的兴趣。个人喜欢什么就用什么,完全没必要为这个争论。

不要做“传教士”!你说我现在就是在“传教”?冤枉啊~

4、直接从源码安装程序

很多人放着的源码不用,等着有人帮他做出 rpm, deb, 才能安装。我说你为什么不用源码编译,这样版本比 rpm 高的多,有很多新功能,而没有烦人的依赖关系。可是他说:“要是我用源码编译安装,卸载的时候就不方便了,会留下很多垃圾。”

为什么程序还没有安装你就想到卸载?难道你不知道这个程序是用来做什么的?你应该改变到处找程序来试用的作法,而应该先了解一下到底那些程序有同样的功能,听听别人的意见,看看它们各有什么长处和短处,然后挑一个最适合你的程序来用。

从源码编译安装程序,不但比你装rpm更适合自己的机器设置,而且它们一般会装到 /usr/local 目录,这样你以后如果换硬盘重装系统,也可以把以前 /usr/local 下的程序原封不动拷贝过去用。我的 /usr/local 下有 2G 之多的程序,你想要是我有一台新机器要重新安装,然后配置,得花费多少时间?实际上我曾经通过网络把它们传到一台新机器上,然后就出去吃晚饭,回来时我就得到了另一台一摸一样的 Linux 机器。


确实要卸载 make install 的程序怎么办呢?答案是直接删掉。别以为直接删掉程序会留下垃圾,引起“系统不稳定”。(浏览w: 这是谁教你的啊?呵呵。) make install 无非就是把可执行程序放在 /usr/local/bin, 把某些函数库放在 /usr/local/lib,把数据文件放在 /usr/local/share 下一个它自己的目录,你把这些东西都删掉就行了,不会留下垃圾,即使真的留下一点文件没有删掉也占不了多少空间,更不可能引起系统不稳定。UNIX 就是这么简单

但是有几个程序不建议从源码安装,它们是 Mozilla, Open 浏览, ... 它们编译时会占用你几个G的空间和好几个小时的时间,这种花费我觉得是不值得的,因为你不能从编译得到更多好处,不如直接安装编译好的版本。

5、不要盲目升级

不知道这是心理作用还是什么,有的人看到比较大的版本号,就会很想换成那个。很多人的 Redhat 本来配置的很舒服了,可是一旦 Redhat 发行新的版本,他们就会尽快下载过来,然后选择升级安装。结果很多时候把自己原来浏览改得很好的配置文件给冲掉了。新的软件又带来了新的问题,比如有一次我的 rxvt 升级到 2.7.8 就跟 miniChinput 冲突了,升级到 Redhat 8.0,发现 xmms 居然缺省不能放mp3了,XFree86 的 xtt 模块在 I810 上有新的 bug,会导致 Mozilla 突然退出。

如果你已经配置好了一切,千万别再整体升级了,这会浪费你很多很多时间的,不值得。如果需要的话,你可以只把某些部件升级,比如内核,glibc, gcc, XFree86,...

使用 UNIX 的经典程序

好的程序一般都是可以很方便的在很多种 UNIX 上移植的,bash, VIM, Emacs, Mutt, FVWM, xterm, 都是这样。如果你用这些程序,你就可以在 Sun, HP, ... 等工作站上也装上,这样你在各种机型上的工作环境就几乎完全一样了!你不需要在 Sun 上面用 CDE,在PC上又换成 KDE,在它们上面都装一个 FVWM,使用相同的配置文件,就能得到一致的界面。

这些程序大部分都是久经考验的,是经过很多人多年开发的结果。它们功能完善,各种情况都考虑周全,绝对是你的好助手。

6、不要配置你不需要的东西

如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的科研任务和日常工作,那就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理员确实很辛苦。普通用户学习那些不经常用到的复杂的维护系统的工具,其实是浪费时间,学了不用是会很快忘记的!

我不是一个合格的网络管理员,我的服务器都只设置了我自己需要的功能,设置好 ssh, 浏览 已经足够了,那样可以省去我很多麻烦。我从来不过度考虑“浏览”,因为 Linux 缺省已经很安全了。我没有磁带机,就不用管 tar 的那些稀奇古怪的参数了,czf, xzf, ztf 已经可以满足我所有的需要。sed, awk, ... 我也只会几种常用的命令行。

7、不用忙着看内核源码

除非你想研究操作系统,否则还是先把怎么使用 Linux 掌握好再说吧。我以前看了那么多内核源代码,写了驱动程序,结果最后发现我还是一只很多事情不能用 Linux 解决的吸取我的教训吧,你应该首先掌握 shell,Xwindow 的使用和原理,它们可不比内核简单。+

8.放弃Windows

"有半杯可乐,如果想往装着可乐的杯子里面注满清水,比须先把里面可乐倒干净....."----李小龙

学习Linux同样如此,
当开始学习Linux的第一步时就要记住一点:Shell不是DOS!它是比你目前见过的任何GUI操作环境都强大而且稳定,并且速度更快,同时又节省电脑资源的操作电脑的工具,哪怕是浏览网页,也要放弃Windows,利用每一个机会熟悉Linux的习惯,这一点很重要,
因为想要知道Linux是什么,首先你要接受它,
虽然最初很痛苦,但是坚持下来,你可能会受益终身
其次 我们需要了解 虚拟机



什么是虚拟机软件?
Win2000 + VMWare运行RedHat7.2、
虚拟机软件可以在一台电脑上模拟出来若干台PC,每台PC可以运行单独的操作系统而互不干扰,可以实现一台电脑“同时”运行几个操作系统,还可以将这几个操作系统连成一个网络。
比如上图中,是在一台电脑上安装了Win2000 server,再在Win2000 server上安装虚拟机软件VMWare,利用VMWare模拟出来3台PC,在这3台PC上分别运行RedHat7.2、Win98和Solaris 8 for x86操作系统。包括Win2000在内,这4个操作系统同时在一台电脑上运行,互不干扰,并且同在一个局域网内。
目前PC上的虚拟机软件有下述两个:
VMWare          http://www.vmware.com/

Virtual PC      http://www.connectix.com/
本文主要介绍VMWare。
 
使用虚拟机的好处

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

1、如果要在一台电脑上装多个操作系统,不用虚拟机的话,有两个办法:一是装多个硬盘,每个硬盘装一个操作系统。这个方法比较昂贵。二是在一个硬盘上装多个操作系统。这个方法不够安全,因为硬盘MBR是操作系统的必争之地,搞不好会几个操作系统同归于尽。而使用虚拟机软件既省钱又安全,对想学linuxunix的朋友来说很方便。
2、虚拟机可以在一台机器上同时运行几个操作系统,是SOHO开发一族的必备工具。有了虚拟机,在家里只需要一台电脑,或出差时只带着一个笔记本,就可以调试C/S、B/S的程序了。
3、利用虚拟机可以进行软件测试。
 
使用虚拟机的硬件要求

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

虚拟机毕竟是将两台以上的电脑的任务集中在一台电脑上,所以对硬件的要求比较高,主要是CPU、硬盘和内存。目前的电脑CPU多数是PIII以上,硬盘都是几十G,这样的配置已经完全能满足要求。关键是内存。内存的需求等于多个操作系统需求的总和。现在的内存已经很便宜,也不成为问题了。
 
虚拟机的运行环境

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

VMWare可运行在Windows(WinNT以上)和Linux操作系统上。
Virtaul PC可运行在Windows(Win98以上)和MacOS上。
运行虚拟机软件的操作系统叫Host OS,在虚拟机里运行的操作系统叫Guest OS。
VMWare的使用经验

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

1、支持的Guest OS:

VMWare支持如下Guest OS:

MS-DOS、Win3.1、Win9x/Me、WinNT、Win2000、WinXP、Win.Net、Linux、FreeBSD、NetWare6、Solaris x86。

不支持的Guest OS:

BeOS、IBM OS/2 and OS/2 Warp、Minix、QNX、SCO Unix、UnixWare。
2、VMWare模拟的硬件

VMWare模拟出来的硬件包括:主板、内存、硬盘(IDE和SCSI)、DVD/CD-ROM、软驱、网卡、声卡、串口、并口和USB口。VMWare没有模拟出显卡。VMWare为每一种Guest OS提供一个叫做vmware-tools的软件包,来增强Guest OS的显示和鼠标功能。
3、VMWare模拟出来的硬件是固定型号的,与Host OS的实际硬件无关。比如,在一台机器里用VMWare安装了linux,可以把整个linux copy到其他有VMWare的机器里运行,不必再安装。
4、VMWare可以使用ISO文件作为光盘。比如从网上下载的linux ISO文件,不需刻盘,可直接安装。
5、VMWare为Guest OS的运行提供三种选项:

(1) persistent

Guest OS运行中所做的任何操作都即时存盘

(2) undoable

Guest OS shutdown时会问是否对所做的操作存盘

(3) nonpersistend

Guest OS运行中所做的任何操作,在shutdown后等于没做过。

如果要进行软件测试或试验,这是非常有用的功能,可以尽情地玩,把

Guest OS搞死无限次都不怕。
6、VMWare的两种网络设置方式:

(1)Bridged方式

用这种方式,Guest OS的IP可设置成与Host OS在同一网段,Guest OS相当于网络内的一台独立的机器,网络内其他机器可访问Guest OS,Guest OS也可访问网络内其他机器,当然与Host OS的双向访问也不成问题。

(2)NAT方式

这种方式也可以实现Host OS与Guest OS的双向访问。但网络内其他机器不能访问Guest OS,Guest OS可通过Host OS用NAT协议访问网络内其他机器。

NAT方式的IP地址配置方法:Guest OS先用DHCP自动获得IP地址,Host OS里的VMWare services会为Guest OS分配一个IP,之后如果想每次启动都用固定IP的话,在Guest OS里直接设定这个IP即可。
一般来说,Bridged方式最方便好用。但如果Host OS是win2000而网线没插,网络很可能不可用(大部分用PCI网卡的机器都如此),此时就只能用NAT方式。
7、VMWare用Host OS的文件来模拟Guest OS的硬盘。一个Guest OS的硬盘对应一个或多个Host OS里的文件。如果往Guest OS里写入100M的文件,Host OS里虚拟硬盘文件就增大100M。在Guest OS里删除这100M文件,Host OS里虚拟硬盘文件不会减小。下次往Guest OS里写文件的时候,这部分空间可继续利用。vmware-tools里还提供shrink功能可以立刻释放不用的空间,减小Host OS里虚拟硬盘文件的容量。

为了减少硬盘空间的浪费,避免经常使用shrink,更好的做法,是在Guest OS里挂上另外一个硬盘存放不常用的文件,比如安装文件之类,用完之后可以把这块硬盘重新分区格式化。
8、vmware-tools

vmware-tools增强Guest OS的显示和鼠标功能。vmware-tools自带在VMWare里。安装Guest OS的时候,VMWare的状态栏里就有一句话提示vmware-tools没装,鼠标单击这句话即可安装vmware-tools。也可通过菜单安装:settings -> vmware tools install
如果Guest OS是windows,vmware-tools会自动安装,如果是linux,安装后,vmware-tools的安装文件会被mount到光驱中(是虚拟方式,此时光驱并没有光盘),进入光驱的mount point,把文件copy出来安装即可。
对某些Guest OS,比如Solaris x86、NetBSD 1.x、OpenBSD 2.x和Caldera OpenLinux 1.3等,VMWare并没有提供vmware-tools。
9、在VMWare里装linux,不要用图形模式安装,要用文本模式安装。 安装到配置Xserver时,选默认配置就可以,安装出错也不用理会。安装完后,先别起X,先安装好vmware-tools后,再启动X。
10、如果不使用声卡,不要在VMWare里加入声卡,声卡对性能有一点点影响。

11、如果不常使用光驱,可以取消光驱的connect at power on选项,在需要用的时候,光驱可以随时“热插拔”。
 
VMWare与Virtual PC的主要区别!

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

Virtual PC是与vmware类似的虚拟机软件。两者的主要区别如下:
1、VMWare没有模拟显卡,要通过vmware-tools才能用上高分辨率和真彩色,否则只能用VGA。而Virtual PC模拟了一个比较通用的显卡:S3 Trio 32/64(4M)。从这一点看,Virtual PC比VMWare通用,但显示性能不如VMWare。
2、因为Virtual PC模拟了显卡,所以通用性很强。connectix.com网站声称,目前新版的Virtual PC 5支持所有基于x86的操作系统。
3、Virtual PC的网络共享方式与VMWare不同。VMWare是通过模拟网卡实现网络共享的,而Virtual PC是通过在现有网卡上绑定Virtual PC emulated switch服务实现网络共享的。对于win2000/xp等操作系统,如果网线没插或没有网卡的时候,要安装Microsoft的loopback软网卡,才能实现网络共享。在Virtual PC的global setting里,当有网卡并插好网线的时候,将Virtual switch设成现实的网卡;当没有网卡或网线没插的时候,将Virtual switch设成ms loopback软网卡,即可实现网络共享。

ms loopback软网卡的安装方法,以win2000为例:

控制面板 -> 添加/删除硬件 -> 添加/排除设备故障 -> 添加新设备 -> 否,从列表选择 -> 网卡 -> 制造商选microsoft -> microsoft loopback adapter。


回复

使用道具 举报

Archiver|魔力研究社

GMT+8, 2025-5-15 21:21 , Processed in 0.115967 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表