Linux 用户管理工具介绍
xuejin38
|
1#
xuejin38 发表于 2007-08-01 14:07
Linux 用户管理工具介绍
Linux 用户管理工具介绍
本文主要介绍Linux系统的用户和用户组的查询、添加、修改及删除等管理工具; Linux是一个多用户的操作系统,她有完美的用户管理工具,这些工具包括用户的查询、添加、修改,以及用户之间相互切换的工具等;通过这些工具,我们能安全、轻松的完成用户管理; 一、与用户管理相关的配置文件 1、/etc/passwd 和/etc/groups 在linux系统下,对用户和用户组进行添加、修改、删除等操作的最终目的都是通过修改用户和组的配置文件来实现的,这些主要配置文件主要有:/etc/passwd、/etc/shadows、/etc/groups、/etc/gshadow、/etc/skel 目录等; 用户和用户组的配置文件,是系统管理员最应该了解和掌握的系统基础之一,从另一方面来说,了解这些文件也是系统安全管理的重要组成部分; 1、/etc/passwd 用户帐号密码文件 [root@jekay /]# cat /etc/passwd 登陆名 口令 UID GID 用户全称和描述 用户主目录 用户登陆的shell环境 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync …… 在/etc/passwd 中,每一行都表示的是一个用户的信息;一行有7个段位;每个段位用:号分割,如上: 说明: UID是用户的ID值,是确认用户权限的标识,在系统中每个用户的UID的值是唯一的,更确切的说每个用户都要对应一个唯一的UID ,系统管理员应该确保这一规则。系统用户的UID的值从0开始,是一个正整数,至于最大值可以在/etc/login.defs 可以查到,一般Linux发行版约定为60000; 在Linux 中,root的UID是0,拥有系统最高权限;把几个用户设置为同样的UID会造成系统安全的隐患,尤其是设置成root的 UID号0; Linux系统中的用户角色: 用户在系统中是分角色的,在Linux 系统中,由于角色不同,权限和所完成的任务也不同;值得注意的是用户的角色是通过UID和识别的,特别是UID;在系统管理中,系统管理员一定要坚守UID 唯一的特性; root 用户:系统唯一,是真实的,可以登录系统,可以操作系统任何文件和命令,拥有最高权限; 虚拟用户:这类用户也被称之为伪用户或假用户,与真实用户区分开来,这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户,比如bin、daemon、adm、ftp、mail等;这类用户都系统自身拥有的,而非后来添加的,当然我们也可以添加虚拟用户; 普通用户:这类用户能登录系统,但只能操作自己家目录的内容;权限有限;这类用户都是系统管理员自行添加的; /etc/login.defs是设置用户帐号限制的文件,在这里我们可配置密码的最大过期天数,密码的最大长度约束等内容; 多数发行版本,添加新用户时的UID从500开始的,GID也是从500开始;500内的为系统预留; 2、/etc/shadows 用户帐号的加密文件 [root@jekay /]# cat /etc/shadow root:$1$MebjzxXM$0hVmQ6MMDB5ZVVAGuUG7G1:13599:0:99999:7::: bin:*:13599:0:99999:7::: daemon:*:13599:0:99999:7::: adm:*:13599:0:99999:7::: lp:*:13599:0:99999:7::: sync:*:13599:0:99999:7::: …… /etc/shadow 文件的内容包括9个段位,每个段位之间用:号分割; 第一字段: 用户名(也被称为登录名),在/etc/shadow中,用户名和/etc/passwd 是相同的,这样就把passwd 和shadow中用的用户记录联系在一起;这个字段是非空的; 第二字段:密码(已被加密),如果是有些用户在这段是x,表示这个用户不能登录到系统;这个字段是非空的; 第三字段:上次修改口令的时间;这个时间是从1970年01月01日算起到最近一次修改口令的时间间隔(天数),您可以通过passwd 来修改用户的密码,然后查看/etc/shadow中此字段的变化; 第四字段:两次修改口令间隔最少的天数;如果设置为0,则禁用此功能;也就是说用户必须经过多少天才能修改其口令;此项功能用处不是太大;默认值是通过/etc/login.defs文件定义中获取,PASS_MIN_DAYS 中有定义; 第五字段:两次修改口令间隔最多的天数;这个能增强管理员管理用户口令的时效性,应该说在增强了系统的安全性;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_MAX_DAYS 中定义; 第六字段:提前多少天警告用户口令将过期;当用户登录系统后,系统登录程序提醒用户口令将要作废;如果是系统默认值,是在添加用户时由/etc/login.defs文件定义中获取,在PASS_WARN_AGE 中定义; 第七字段:在口令过期之后多少天禁用此用户;此字段表示用户口令作废多少天后,系统会禁用此用户,也就是说系统会不能再让此用户登录,也不会提示用户过期,是完全禁用; 第八字段:用户过期日期;此字段指定了用户作废的天数(从1970年的1月1日开始的天数),如果这个字段的值为空,帐号永久可用; 第九字段:保留字段; /etc/shadow文件是/etc/passwd 的投影文件,这个文件并不由/etc/passwd 而产生的,这两个文件是应该是对应互补的;shadow内容包括用户及被加密的密码以及其它/etc/passwd 不能包括的信息,比如用户的有效期限等;这个文件只有root权限可以读取和操作,权限如下: -r-------- 1 root root 740 Mar 27 17:03 /etc/shadow 3、/etc/groups 用户组帐号文件 具有某种共同特征的用户集合起来就是用户组(Group)。用户组(Group)配置文件主要有 /etc/group和/etc/gshadow,其中/etc/gshadow是/etc/group的加密信息文件; /etc/group文件相对来说比较简单,通过这个配置文件,我们可以清楚地看到系统中用户组,以及用户属于哪个组,某个组中的用户成员有谁等; Linux系统下用户组分为2种,用户私有组和公有组; 私用组:只包含一个用户,创建用户时自动创建一个和用户同名的组 公有组:可以包含多个用户 当一个用户属于多个用户组时,某个用户的权限只能是当前所属组的权限,而不能是多个组权限的累加,这与windows是不一样的; 不要随便把普通用户加入到root组; [root@jekay /]# cat /etc/group 组名 群组密码 GID 组中用户列表 root:x:0:root bin:x:1:root,bin,daemon daemon:x:2:root,bin,daemon sys:x:3:root,bin,adm adm:x:4:root,adm,daemon tty:x:5: …… 在/etc/group 中的每条记录分四个字段,中间使用:隔开 GID和UID类似,是一个正整数或0,是用户组的ID值,GID从0开始, 0被系统赋予root用户组;系统会预留一些较靠前的GID给系统虚拟用户组之用;多数linux发行版本预留了500,也就是说新用户组的GID从500开始;查看 /etc/login.defs 中的 GID_MIN 和GID_MAX 值,可以知道GID的最大设置值; 4、/etc/gshadow 用户组帐号的加密文件 [root@jekay /]# cat /etc/gshadow 用户组名 用户组密码 用户组的管理者 组成员列表 root:::root bin:::root,bin,daemon daemon:::root,bin,daemon sys:::root,bin,adm adm:::root,adm,daemon tty::: …… /etc/gshadow是/etc/group的加密文件; 用户组密码,用于结构比较复杂的权限模型; 5、/etc/skel 目录 用来初始化用户的主目录 [root@jekay /]# ls -al /etc/skel total 20 drwxr-xr-x 2 root root 4096 Mar 27 16:59 . drwxr-xr-x 32 root root 4096 Mar 27 17:04 .. -rw-r--r-- 1 root root 24 Feb 11 2003 .bash_logout -rw-r--r-- 1 root root 191 Feb 11 2003 .bash_profile -rw-r--r-- 1 root root 124 Feb 11 2003 .bashrc 目录中存放有与用户相关的配置文件。一般来说,每个用户都有自己的主目录,用户 成功登录后就处于自己的主目录下。 当为新用户创建主目录时,系统会在新用户的主目录下建立一份/etc/skel目录下所有文件的拷贝,用来初始化用户的主目录。 2、超级权限控制sudo 的配置文件 /etc/sudoers root超级用户是系统最高权限的拥有者;几乎无所不能,多数的系统设置和权限设置对root帐号来说是无用的;所以root帐号权限管理不善就会造成系统安全的隐患; 在对系统操作时尽量避免使用root登陆,也应该尽量避免直接使用root帐号对系统进行配置和操作;但有时普通用户可能需要root权限来完成必要的系统管理工作,我们可以使用su和sudo来实现; 用户帐号类型: 超级用户:在Linux操作系统中,root的权限是最高的,也被称为超级权限的拥有者。普通用户无法执行的操作,root用户都能完成,所以也被称之为超级管理用户。在系统中,每个文件、目录和进程,都归属于某一个用户,没有用户许可其它普通用户是无法操作的,但对root除外。root用户的特权性还表现在root可以超越任何用户和用户组来对文件或目录进行读取、修改或删除(在系统正常的许可范围内);对可执行程序的执行、终止;对硬件设备的添加、创建和移除等;也可以对文件和目录进行属主和权限进行修改,以适合系统管理的需要(因为root是系统中权限最高的特权用户);UID为0; 普通用户和伪装用户:与超级用户相对的就是普通用户和虚拟(也被称为伪装用户),普通和伪装用户都是受限用户;但为了完成特定的任务,普通用户和伪装用户也是必须的;Linux是一个多用户、多任务的操作系统,多用户主要体现在用户的角色的多样性,不同的用户所分配的权限也不同;这也是Linux系统比Windows系统更为安全的本质所在; 但值得注意的是超级用户的操作是在系统最高许可范围内的操作;有些操作就是具有超级权限的root也无法完成;如:/proc目录、加了写保护的文件等; [root@jekay /]# ls -ld /proc dr-xr-xr-x 47 root root 0 Mar 27 12:03 /proc [root@jekay tmp]# chattr +i file [root@jekay tmp]# rm -f file rm: cannot remove `file': Operation not permitted 获取超级权限的过程,就是切换普通用户身份到超级用户身份的过程;这个过程主要是通过su和sudo 来解决; 使用 su 命令临时切换用户身份 su命令就是切换用户的工具; su [OPTION选项参数] [用户] -, -l, --login 登录并改变到所切换的用户环境; -c, --commmand=COMMAND 执行一个命令,然后退出所切换到的用户环境; su 在不加任何参数,默认为切换到root用户,不改变shell环境; su 加参数 - ,表示默认切换到root用户,并且改变到root用户的环境; su 的确为管理带来方便,通过切换到root下,能完成所有系统管理工具,只要把root的密码交给任何一个普通用户,他都能切换到root来完成所有的系统管理工作;但如果登陆的用户比较多,而多个用户都需要使用root权限,这时就可能会造成安全隐患,而且由于切换的过程是打开root的shell环境,很多情况下也会造成root权限外泻; sudo工具 由于su 对切换到超级权限用户root后,权限的无限制性,所以su并不能担任多个管理员所管理的系统。通过sudo,我们能把某些超级权限有针对性的下放,并且不需要普通用户知道root密码,所以sudo 相对于权限无限制性的su来说,还是比较安全的,所以sudo 也能被称为受限制的su ;另外sudo 是需要授权许可的,所以也被称为授权许可的su; sudo 执行命令的流程是当前用户切换到root(或其它指定切换到的用户),然后以root(或其它指定的切换到的用户)身份执行命令,执行完成后,直接退回到当前用户;而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权; sudo的配置文件是/etc/sudoers ;可通过命令visudo直接进行编辑; 通过sudo -l 来查看哪些命令是可以执行或禁止的; /etc/sudoers 文件中每行算一个规则,前面带有#号可以当作是说明的内容,并不执行;如果规则很长,一行列不下时,可以用\号来续行,这样看来一个规则也可以拥有多个行; /etc/sudoers 的规则可分为两类;一类是别名定义,另一类是授权规则;别名定义并不是必须的,但授权规则是必须的; 默认/etc/sudoers配置文件 [root@jekay]# cat /etc/sudoers # sudoers file. # This file MUST be edited with the 'visudo' command as root. # See the sudoers man page for the details on how to write a sudoers file. # Host alias specification # User alias specification # Cmnd alias specification # Defaults specification # User privilege specification root ALL=(ALL) ALL # Uncomment to allow people in group wheel to run all commands # %wheel ALL=(ALL) ALL # Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL # Samples # %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom # %users localhost=/sbin/shutdown -h now 别名规则定义格式如下: Alias_Type NAME = item1, item2, ... 或Alias_Type NAME = item1, item2, item3 : NAME = item4, item5 别名类型(Alias_Type):别名类型包括如下四种 Host_Alias 定义主机别名;项目可以是主机名、可以是单个ip(整段ip地址也可以),也可以是网络掩码; Host_Alias BE01=localhost,bt05,tt04,10.0.0.4,255.255.255.0,192.168.1.0/24 注:定义主机别名HT01,通过=号列出成员 User_Alias 用户别名,别名成员可以是用户,用户组(前面要加%号) User_Alias SYSAD=jekay,linux,lt,benet:NETAD=jekay:WEBMASTER=admin Runas_Alias 用来定义runas别名,这个别名指定的是“目的用户”,即sudo 允许切换至的用户; Runas_Alias OP = root, operator Cmnd_Alias 定义命令别名; Cmnd_Alias DISKMAG=/sbin/fdisk,/sbin/parted Cmnd_Alias NETMAG=/sbin/ifconfig,/etc/init.d/network Cmnd_Alias KILL = /usr/bin/kill NAME 就是别名了,NMAE的命名是包含大写字母、下划线以及数字,但必须以一个大写字母开头; item 按中文翻译是项目,在这里我们可以译成成员,如果一个别名下有多个成员,成员与成员之间,通过半角,号分隔;成员在必须是有效并事实存在的。 item成员受别名类型 Host_Alias、User_Alias、Runas_Alias、Cmnd_Alias 制约,定义什么类型的别名,就要有什么类型的成员相配。我们用Host_Alias定义主机别名时,成员必须是与主机相关相关联,比如是主机名(包括远程登录的主机名)、ip地址(单个或整段)、掩码等;当用户登录时,可以通过w命令来查看登录用户主机信息;用User_Alias和Runas_Alias定义时,必须要用系统用户做为成员;用Cmnd_Alias 定义执行命令的别名时,必须是系统存在的文件,文件名可以用通配符表示,配置Cmnd_Alias时命令需要绝对路径;其中 Runas_Alias 和User_Alias 有点相似,但与User_Alias 绝对不是同一个概念,Runas_Alias 定义的是某个系统用户可以sudo 切换身份到Runas_Alias 下的成员;我们在授权规则中以实例进行解说; 别名规则是每行算一个规则,如果一个别名规则一行容不下时,可以通过\来续行;同一类型别名的定义,一次也可以定义几个别名,他们中间用:号分隔, /etc/sudoers中的授权规则 授权规则是分配权限的执行规则,我们前面所讲到的定义别名主要是为了更方便的授权引用别名;如果系统中只有几个用户,其实下放权限比较有限的话,可以不用定义别名,而是针对系统用户直接直接授权,所以在授权规则中别名并不是必须的; 授权用户 主机=命令动作 这三个要素缺一不可,但在动作之前也可以指定切换到特定用户下,在这里指定切换的用户要用( )号括起来,如果不需要密码直接运行命令的,应该加NOPASSWD:参数,但这些可以省略; 授权用户 主机=[(切换到哪些用户或用户组)] [是否需要密码验证] 命令1,[(切换到哪些用户或用户组)] [是否需要密码验证] [命令2],[(切换到哪些用户或用户组)] [是否需要密码验证] [命令3]...... 注解: 凡是[ ]中的内容,是可以省略;命令与命令之间用,号分隔;可以使用NOPASSWD参数,就不要在运行命令时提示密码输入; 举例: jekay ALL=(root) /bin/chown,/bin/chmod 执行时会提示输入jekay的密码 jekay ALL=(root) NOPASSWD: /bin/chown,/bin/chmod 就不需要密码 jekay ALL=(root) NOPASSWD: /bin/more 切换到jekay用户下使用more /etc/shadow就可以了,不会提示输入密码 User_Alias SYSUSER=jekay SYSUSER ALL=(root) /sbin/fdisk 使用用户别名来完成; sudo [参数选项] 命令 -l 列出用户在主机上可用的和被禁止的命令;一般配置好/etc/sudoers后,要用这个命令来查看和测试是不是配置正确的; -v 验证用户的时间戳;如果用户运行sudo 后,输入用户的密码后,在短时间内可以不用输入口令来直接进行sudo 操作;用-v 可以跟踪最新的时间戳; -u 指定以以某个用户执行特定操作; -k 删除时间戳,下一个sudo 命令要求用求提供密码; 3、添加用户规则文件 /etc/login.defs 和 /etc/default/useradd /etc/login.defs 配置文件 /etc/login.defs 文件是当创建用户时的一些规划,比如创建用户时,是否需要家目录,UID和GID的范围;用户的期限等等,这个文件是可以通过root来定义的; /etc/logins.defs 文件内容; # *REQUIRED* # Directory where mailboxes reside, _or_ name of file, relative to the # home directory. If you _do_ define both, MAIL_DIR takes precedence. # QMAIL_DIR is for Qmail # #QMAIL_DIR Maildir MAIL_DIR /var/spool/mail 注:创建用户时,要在目录/var/spool/mail中创建一个用户mail文件; #MAIL_FILE .mail # Password aging controls: # # PASS_MAX_DAYS Maximum number of days a password may be used. # PASS_MIN_DAYS Minimum number of days allowed between password changes. # PASS_MIN_LEN Minimum acceptable password length. # PASS_WARN_AGE Number of days warning given before a password expires. # PASS_MAX_DAYS 99999 注:用户的密码不过期最多的天数; PASS_MIN_DAYS 0 注:密码修改之间最小的天数; PASS_MIN_LEN 5 注:密码最小长度; PASS_WARN_AGE 7 注: # # Min/max values for automatic uid selection in useradd # UID_MIN 500 注:最小UID为500 ,也就是说添加用户时,UID 是从500开始的; UID_MAX 60000 注:最大UID为60000; # # Min/max values for automatic gid selection in groupadd # GID_MIN 500 注:GID 是从500开始; GID_MAX 60000 # # If defined, this command is run when removing a user. # It should remove any at/cron/print jobs etc. owned by # the user to be removed (passed as the first argument). # #USERDEL_CMD /usr/sbin/userdel_local # # If useradd should create home directories for users by default # On RH systems, we do. This option is ORed with the -m flag on # useradd command line. # CREATE_HOME yes 注:是否创用户家目录,要求创建; /etc/default/useradd 文件 通过useradd 添加用户时的规则文件; # useradd defaults file GROUP=100 HOME=/home 注:把用户的家目录建在/home中; INACTIVE=-1 注:是否启用帐号过期停权,-1表示不启用; EXPIRE= 注:帐号终止日期,不设置表示不启用; SHELL=/bin/bash 注:所用SHELL的类型; SKEL=/etc/skel 注: 默认添加用户的目录默认文件存放位置;也就是说,当我们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的; 二、用户相关工具命令; 1、添加用户工具有useradd和adduser ,这两个工具所达到的目的都是一样的; 2、通过修改用户配置文件/etc/passwd和/etc/groups的办法来实现; 3、还有图形下的工具; 1、useradd 工具 Useradd添加用户时,先读取/etc/login.defs和/etc/default/useradd中所定义的规则添加用户;并向/etc/passwd和/etc/groups文件添加用户和用户组记录;当然/etc/passwd和/etc/groups的加密文件也同步生成记录;同时发生的还有系统会自动在/etc/add/default中所约定的目录中建用户的主目录,并复制/etc/skel中的文件(包括隐藏文件)到新用户的主目录中; useradd 的语法: (1) 对/etc/default/useradd进行修改,设置添加的新用户的默认设置; useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ] -D选项出现时,显示/etc/default/useradd配置文件中设置的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显示目前预设的值。 (2)useradd 添加用户; 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 可使用的选项为 -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 ; 2、userdel 用法; userdel 的语法格式: userdel [-r] 名称 userdel很简单,只有一个参数可选 -r ;如果加参数-r ,表示在删除用户的同时,一并把用户的家目录及本地邮件存储的目录或文件也一同删除; userdel 参数 用户名 警告: 请不要轻易用-r参数;他会删除用户的同时删除用户所有的文件和目录;如果用户目录下有重要的文件,在删除前请备份; 3、usermod 用户修改工具(极其强大) usermod 不仅能改用户的SHELL类型,所归属的用户组,也能改用户密码的有效期,还能改登录名。 usermod [-u uid [-o]] [-g group] [-G group,...] [-d 主目录 [-m]] [-s shell] [-c 注释] [-l 新名称] [-f 失效日] [-e 过期日] [-p 密码] [-L|-U] 用户名 -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设定。 警告: usermod 最好不要用它来改用户的密码,因为他在/etc/shadow中显示的是明口令;修改用户的口令最好用passwd ; 4、添加用户组命令groupadd ; 语法格式: groupadd [-g gid [-o]] [-r] [-f] 组名 -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。 5、groupdel的用法; groupdel 是用来删除用户组的; 语法格式:groupdel 用户组 6、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 用户名 ,注意要以root用户的权限来创建; passwd 几个比较重要的参数; [root@localhost]# 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 only) 注:查询用户的密码状态,仅能root用户操作; --stdin read new tokens from stdin (root only) 注意: 当我们清除一个用户的密码时,登录时就无需密码;这一点要加以注意; 7、chage 修改用户密码有效期限的命令; chage 用语法格式: chage [-l] [-m 最小天数] [-M 最大天数] [-W 警告] [-I 失效日] [-E 过期日] [-d 最后日] 用户 8、chfn 修改用户信息工具; chfn 这个工具主要是用来改用户的全名,办公室地址,电话之类的;用法如下: chfn [ -f full-name ] [ -o office ] [ -p office-phone ] [ -h home-phone ] [ -u ] [ -v ] [ username ] [root@localhost]# chfn linux 注:更改用户linux的信息; Changing finger information for linux. Name []: jekay Linux 注:用户全名jekay Linux ,随便写一个就行; Office []: benet Office Phone []: 44444444 Home Phone []: 88888888 Finger information changed. 注:更改完成; 9、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]# chsh -s /bin/ksh linux 注:更改linux所用的shell为ksh ; Changing shell for linux. Shell changed. 注:更改完成; 10、gpasswd 设置一个组的群组密码 格式:gpasswd 参数 用户名 组名 -a----将一个用户加入到一个组中 -d----将一个用户从一个组中删除掉 -r----取消一个用户组的群组密码 -g----修改一个用户组的gid号 -n----修改一个用户组的组名 groupmod -n 新组名 老组名 finger 参数 用户名 id 选项 用户名 除了直接查看用户(User)和用户组(Group)配置文件的办法除外,我们还有id和finger工具可用,我们一样通过命令行的操作,来完成对用户的查询;id和finger,是两个各有测重的工具, id工具更测重用户、用户所归属的用户组、UID 和GID 的查看; finger侧重用户资讯的查询,比如用户名(登录名)、电话、家目录、登录SHELL类型、真实姓名、空闲时间等等; id 命令用法: [root@localhost /]# id jekay uid=500(jekay) gid=500(jekay) groups=500(jekay) finger 的用法: finger [参数选项] [用户名] -l 采用长格式(默认),显示由-s选项所包含的所有信息,以及主目录、办公地址、办公电话、登录SHELL、邮件状态、.plan、.project和.forward; -m 禁止对用户真实名字进行匹配; -p 把.plan和.project文件中的内容省略; -s 显示短格式,用户名(也被称为登录名Login)、真实名字(NAME)、在哪个终端登录(Tty)、写状态、空闲时间(Idle)、登录时间(Login Time)、办公地点、办公电话等; [root@localhost /]# finger jekay Login: jekay Name: (null) Directory: /home/jekay Shell: /bin/bash Never logged in. No mail. No Plan. 查看用户信息还可以通过配置文件去查询用户和组的信息; w、who和users工具,是查询已登录当前主机的用户;另外finger -s 也同样能查询;侧重点不一样; [root@localhost /]# w 22:43:44 up 3:03, 1 user, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.1.104 7:41pm 0.00s 1.93s 0.35s w [root@localhost /]# who root pts/0 Mar 27 19:41 (192.168.1.104) [root@localhost /]# users rootbeinan pts/4 :0.0 12:06 0.00s 0.21s 0.00s w w命令功能更加强大,它不但可以显示有谁登录到系统,还可以显示出这些用户当前正在进行的工作,并且统计数据相对who命令来说更加详细和科学,可以认为w命令就是who命令的一个增强版。 w命令的显示项目按以下顺序排列: -----当前时间,系统启动到现在的时间,登录用户的数目,系统在最近1秒、5秒和15秒的平均负载。 然后是每个用户的各项数据,项目显示顺序如下: -----登录帐号、终端名称、远程主机名、登录时间、空闲时间、JCPU、PCPU、当前正在运行进程的命令行。 16、pwcov 注:同步用户从/etc/passwd 到/etc/shadow pwck 注:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整; pwunconv 注:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件; visudo 来编辑/etc/sudoers来实现;visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的; 通过修改用户和用户组配置文件的办法来添加用户和组 流程: 1)修改 /etc/passwd ,添加用户记录; jekay:x:508:508::/home/jekay:/bin/bash 然后执行pwconv ,让/etc/passwd 和/etc/shadow同步,您可以查看 /etc/shadow的内容是否同步; [root@localhost]# pwconv 2)修改/etc/group,添加私有用户组 jekay:x:508: 其次,是运行 grpconv 来同步/etc/group 和/etc/gshadow内容,您可以通过查看/etc/gshadow的内容变化确认是不是添加组成功了; [root@localhost]# grpconv 3)创建用户的主目录,并把用户启动文件也复制过去; 在/home下创建jekay用户的主目录,名称与用户名相同,另外我们还需要把/etc/skel 目录下的.*隐藏文件复制过去; [root@localhost]# cp -R /etc/skel/ /home/jekay [root@localhost]# ls -la /home/jekay 4)改变新增用户家目录的属主和权限; 我们发现新增用户的主目录的属主目前是root ,并且主目录下的隐藏文件也是root权限; [root@localhost]# chown -R jekay.jekay /home/jekay [root@localhost]# chmod 700 /home/jekay/ 5)设置新增用户的密码; passwd 的用法: passwd 用户名 6)测试添增用户是否成功; |