首页 > 代码库 > Linux之用户管理--初级上
Linux之用户管理--初级上
管理用户命令汇总
命令 | 注释说明(特殊颜色的必须掌握) |
---|---|
useradd增 | 同adduser命令,执行此命令可在系统中添加用户。(更改4个用户文件) |
userdel删 | 执行此命令可删除用户及相关用户的配置或文件(更改4个用户文件) |
passwd | 执行此命令可为用户设置或修改密码。更改/etc/shadow文件 |
chage | 修改用户密码属性。管理/etc/shadow文件 |
usermod改 | 修改用户信息的命令,可以通过usermod来修改登录名,用户的家目录等等 |
id查 | 查看用户的UID,GID及所归属的用户组 |
su | 用户角色切换工具。su - |
sudo |
|
visudo | visudo配置sudo权限的编辑命令;也可以不用这个命令,直接用vi来编辑/etc/sudoers实现。但推荐用visudo来操作(会自动检查语法) |
管理用户组命令汇总
命令 | 注释说明(特殊颜色标记需要掌握) |
---|---|
groupadd | 添加用户组 |
groupdel | 删除用户组 |
/etc/skel目录是用来存放新用户环境变量文件的目录,当我们添加新用户时,这个目录下的所有文件会自动被复制到新添加的用户的家目录下:默认情况下,/etc/skel目录下的所有文件都是隐藏文件(以.点开头的文件);通过修改、添加、删除/etc/skel目录下的文件,我们可为新创建的用户提供统一的,标准的,初始化用户环境。
[root@chengliang ~]# cd /etc/skel[root@chengliang skel]# lsreadme[root@chengliang skel]# ls -altotal 20drwxr-xr-x. 2 root root 4096 May 12 22:14 .drwxr-xr-x. 79 root root 4096 May 16 17:07 ..-rw-r--r--. 1 root root 18 May 11 2016 .bash_logout-rw-r--r--. 1 root root 176 May 11 2016 .bash_profile-rw-r--r--. 1 root root 124 May 11 2016 .bashrc-rw-r--r--. 1 root root 0 May 12 22:14 readme[root@chengliang skel]#
命令说明: 在/etc/skel/目录下创建一个文件readme,然后我们创建一个新用户,发现在用户的家目录里也默认有一个readme。因此,得出结论,/etc/skel/目录下的所有文件都会默认出现在新建用户的家目录里。
[root@chengliang ~]# su - cheng[cheng@chengliang ~]$ ls -altotal 24drwx------. 2 cheng cheng 4096 May 13 01:23 .drwxr-xr-x. 7 root root 4096 May 12 22:15 ..-rw-------. 1 cheng cheng 125 May 13 01:23 .bash_history-rw-r--r--. 1 cheng cheng 18 May 11 2016 .bash_logout-rw-r--r--. 1 cheng cheng 176 May 11 2016 .bash_profile-rw-r--r--. 1 cheng cheng 124 May 11 2016 .bashrc-rw-r--r--. 1 cheng cheng 0 May 12 22:14 readme[cheng@chengliang ~]$
企业面试题:请问如下登录故障的原理及解决办法?
-bash-4.1$-bash-4.1$
问题示例: 命令说明:普通用户强制删除了家目录里的变量文件就会出现这种问题。
[teacher@chengliang ~]$ ls -altotal 20drwx------. 2 teacher teacher 4096 May 30 23:32 .drwxr-xr-x. 7 root root 4096 May 12 22:15 ..-rw-------. 1 teacher teacher 149 May 30 23:32 .bash_history-rw-r--r--. 1 teacher teacher 176 May 11 2016 .bash_profile-rw-r--r--. 1 teacher teacher 124 May 11 2016 .bashrc[teacher@chengliang ~]$ rm ./.bash*[teacher@chengliang ~]$ ls -altotal 8drwx------. 2 teacher teacher 4096 May 30 23:34 .drwxr-xr-x. 7 root root 4096 May 12 22:15 ..[teacher@chengliang ~]$ exitlogout[root@chengliang ~]# su - teacher-bash-4.1$
解决方法:我们去把/etc/skel/目录下的变量文件复制回来就好了
[root@chengliang ~]# su - teacher-bash-4.1$ -bash-4.1$ cp /etc/skel/.bash* ~-bash-4.1$ exitlogout[root@chengliang ~]# su - teacher[teacher@chengliang ~]$ ls -altotal 24drwx------. 2 teacher teacher 4096 May 30 23:36 .drwxr-xr-x. 7 root root 4096 May 12 22:15 ..-rw-------. 1 teacher teacher 80 May 30 23:36 .bash_history-rw-r--r--. 1 teacher teacher 18 May 30 23:36 .bash_logout-rw-r--r--. 1 teacher teacher 176 May 30 23:36 .bash_profile-rw-r--r--. 1 teacher teacher 124 May 30 23:36 .bashrc[teacher@chengliang ~]$
知识扩展*和.*的问题
[root@chengliang etc]# cp /etc/skel/* /tmp/[root@chengliang etc]# cd /tmp/[root@chengliang tmp]# lsetc mysql.sock readme[root@chengliang tmp]# ls -altotal 16drwxrwxrwt. 4 root root 4096 May 30 23:48 .dr-xr-xr-x. 24 root root 4096 May 12 15:28 ..drwxrwxrwt. 2 root root 4096 Nov 12 2016 .ICE-unixdrwxr-xr-x. 8 root root 4096 Nov 20 2016 etcsrwxrwxrwx. 1 mysql mysql 0 May 10 21:08 mysql.sock-rw-r--r--. 1 root root 0 May 30 23:48 readme[root@chengliang tmp]#
*不复制隐藏文件,所以/etc/skel/目录下的隐藏文件不会复制到/tmp/目录下
那么在运行cp /etc/skel/.*之前,我们先看看.*里都有什么东西?[root@chensiqi1 ~]# ls /etc/skel/.*/etc/skel/.bash_logout /etc/skel/.bash_profile /etc/skel/.bashrc/etc/skel/.:readme/etc/skel/..:ConsoleKit inputrc quotatabDIR_COLORS iproute2 rcDIR_COLORS.256color issue rc.dDIR_COLORS.lightbgcolor issue.bak rc.localNetworkManager issue.net rc.sysinitX11 issue.net.bak rc0.dabrt kdump-adv-conf rc1.dacpi kdump.conf rc2.dadjtime krb5.conf rc3.daliases latrace.conf rc4.daliases.db latrace.d rc5.dalsa ld.so.cache rc6.d东西太多以下省略....
.*连etc下的东西都复制出来了,这是为什么呢?别忘了,目录下都还有些什么东西,还有.和..
.代表当前目录,..代表上级目录。因此.*就把上级目录的所有文件也复制了。所以我们在复制隐藏文件的时候不能用.*来代表所有。
用户管理命令详解
添加用户命令useradd
- 添加用户的命令有useradd和adduser,这两个命令所能达到的效果是一样的。当然除了useradd和adduser命令以外,我们还能通过修改用户配置文件/etc/passwd和/etc/group及手动创建文件的办法来直接添加用户,不过这里并不推荐,这里建议大家统一使用useradd命令,本文也仅会针对useradd命令进行举例讲解。
- 当使用useradd命令不加参数选项,后面直接跟所添加用户名时,系统首先会读取配置文件/etc/login.defs和/etc/default/useradd中所定义的参数或规则,根据设置的规则添加用户,同时会向/etc/passwd和/etc/group文件内添加新建用户和用户组记录。
- 当然/etc/passwd和/etc/group的加密资讯文件/etc/shadows和/etc/gshadow也会同步生成记录,同时系统还会根据/etc/default/useradd文件中所配置的信息建立用户的家目录,并复制/etc/skel中的所有文件(包括隐藏的环境配置文件)到新用户的家目录中。
useradd语法:
[root@chensiqi ~]# man useradd #下面的内容源于此命令帮助的结果,对于部分地方做了修改名称: useradd - 账号建立或更新新用户资讯的工具语法: useradd [-c comment] [-d home_dir] [-e expire_date] [-f inactive_time] [-g initial_group] [-G group[,....]] [-m [-k skeleton_dir] | -M] [-s shell] [-u uid[-o][-n][-r] login] useradd -D [-g default_group] [-b default_home] [-f default_inactive] [-e default_expire_date] [-s default_shell] 描述: 新账号建立 当不加-D 参数时,useradd指令使用命令列来指定新账号的设定值和使用系统上的预设值(指前文提到的/etc/login.defs和/etc/default/useradd等配置文件)。新用户账号将产生一些系统档案,如用户目录的建立,拷贝起始档案等,这些均可以利用命令列选项指定。此版本为Red Hat Linux 提供,可帮每个新加入的用户建立和用户同名的group,要达到这个目的,不能添加-n选项。
为了方便查看,我们用表格的方式把useradd可使用的参数选项展现给大家如下所示:
|useradd 参数选项|注释说明(特殊颜色的需要掌握)|
|--|--|
|-c comment|新账号password档的说明栏|
|-d home_dir|新账号每次登入时所使用的home_dir.预设值为default_home内login名称,并当成登入时目录名称|
|-e expire_date|账号终止日期。日期的指定格式为MM/DD/YY或者YYYY-MM-DD
|
|-f inactive_day|账号过期几日后永久停权。当值为0时账号则立刻被停权。而当值为-1时则关闭此功能,预设值-1|
|-g initial_group|group 名称以数字来作为用户登入起始用户组(group)。用户组名须为系统现有存在的名称。用户组数字也须为现有存在的用户组,预设的用户组数字为1.
|
|-G group,[...]|定义此用户为多个不同groups的成员,每个用户组使用“,”逗号分隔。用户组名同-g选项的限制。默认值为用户的起始用户组。|
|-m|用户目录如不存在则自动建立。|
|-M|不建立用户家目录,优先于/etc/login.defs文件的设定。一般创虚拟用户时不建立家目录,部署服务时需要创建虚拟用户。
|
|-n|默认情况用户的用户组与用户的名称会相同。如果命令加了-n参数,就不会生成和用户同名的用户组了。|
|-r| 此参数是用来建立系统账号。|
|-s shell|用户登入后使用的shell名称。默认值不填写,这样系统会帮你指定预设的登入shell(根据/etc/default/useradd预设的值)。cat /etc/shells系统支持的shell
|
|-u uid|用户的ID值。这个值必须是唯一的,除非用-o选项。数字不可为负值
|
示例1:useradd -c,-u,-G,-s,-d,-m多个参数组合例子,自定义用户家目录。
示例2:新建用户默认的账号终止日期
示例3:添加用户时的默认shell类型/bin/bash改为/bin/sh
[root@chensiqi1 ~]# cat /etc/shells #查看当前系统支持的shell种类 /bin/sh/bin/bash/sbin/nologin/bin/dash/bin/tcsh/bin/csh[root@chensiqi1 ~]# grep SHELL /etc/default/useradd #查看当前默认的shell配置SHELL=/bin/bash[root@chensiqi1 ~]# useradd -D -s /bin/sh #修改为/bin/sh[root@chensiqi1 ~]# grep SHELL /etc/default/useradd #查看修改结果SHELL=/bin/sh #修改成功
特别提示,这里仅更改了配置文件的默认值,仅对之后建立的新用户生效,和老用户无关。
注意了,这里我更改shell类型之后,useradd新增用户时发现登陆,会出现如下登陆故障!
-bash-4.1$-bash-4.1$
Linux之用户管理--初级上