的re are quite a few changes you can make to user accounts on Linux systems: setting them up, deleting or disabling them, adding or removing users from secondary groups, changing usernames or UIDs, moving home directories, changing users’ shells, altering account expiration timing, and so on.
可以使几乎所有这些更改更容易的一个命令是usermod。的only real constraints are 1) that the accounts you intend to change must already exist on the system (this command won’t set them up from scratch), and 2) that the affected users should probably not be logged in when you make these changes.
该命令的基本语法是usermod命令[选项] LOGIN但是选项部分有比您预期的更多的可能性。此外,sudo权限将需要此命令,因为超级用户访问权限设置或更改几乎所有的用户帐户设置要求。
虽然用户可以更改自己的密码、选择不同的默认shell并更改自己的环境设置(比如搜索路径),但他们不能(至少在没有根特权的情况下)将自己添加到组、更改用户名、修改用户的描述信息/ etc / passwd文件或对其帐户配置进行其他更改。事实上,在没有root访问权限的情况下,他们也不能删除或锁定他们的帐户。系统管理员必须为自己做这些更改。
与sudo另一方面,您可以对用户帐户进行任何更改usermod,你可以很容易地做到这一点。除了修改的文件,您运行的修改使适合你的需要修改的文件列表命令。
让我们看看可用选项的长列表usermod命令和他们所做的。
选项
的usermod命令有这么多的选择,几乎字母用完命令表达出来。这儿有一些变化显示,该命令可以使范围内的选择一些快速的解释:
- -一种与使用-G将用户附加到指定的组
- -b允许不符合标准名称
- -C属性中的注释字段/ etc / passwd文件
- -d更改用户的主目录;与-m补充说,旧目录中的内容被移动到一个新
- -e更改用户的帐户过期日期(存储在/etc/shadow文件)
- -F设置密码过期后帐户被禁用的天数(存储在/etc/shadow文件)
- -G更改用户的组,前提是要分配的组已经存在
- -G设置用户将成为其成员的组列表,删除其他成员,除非-一种添加
- -l更改用户的用户名
- -L锁一个帐户
- -m用户家的内容移动到另一个位置
- -o当用于-u,允许UID具有不惟一的值
- -p更改用户的密码(不建议,因为它将显示ps输出和新密码必须以加密形式提供)
- -P对前缀目录应用更改
- -R应用CHROOT_DIR目录中的更改
- -s更改用户的登录shell
- -u更改用户的UID
- -U解锁用户的密码(删除!)
- -v将从属uid添加到用户帐户
- -V从用户帐户中删除从属uid
- -w将从属gid添加到用户帐户
- -W从用户帐户删除下属的GID
- -Z为帐户添加一个SELinux用户(需要启用SELinux的内核)
显然,您可以通过作为根用户编辑相关文件来进行许多此类更改。例如,可以通过将用户名替换为/ etc / passwd和/etc/shadow文件,然后更改它的所有实例所属文件。不过,几usermod命令可以做同样的事情,把工作快了很多的工作。
这里有一些例子usermod命令来显示它是如何工作的。
要将用户“dhart”添加到系统上的组“secteam”中,可以这样做:
$ sudo usermod -G secteam ghart
该组必须已经存在。
要改变dhart的用户名dbell,你可以使用如下命令。通知参数的顺序;最后一个参数是被改变的人。
$ sudo usermod -l dbell dhart
^ ^
||
目前新
请注意,这usermod命令将更新/ etc / passwd和/etc/shadow文件。
要改变Dory的描述中/ etc / passwd文件,你可以这样做:
dbell:x:1002:1002:Dory Bell:/home/dbell:/bin/bash
需要注意的是改变Dory的用户名也不会自动改变,即使这几天大多数用户的主要群体是同他们的用户名,她的小组。要重命名Dory的组,你可以使用相关的groupmod命令是这样从而改变Dory的组的名称从dhart到dbell:
$ sudo groupmod -n dbell dhart
^ |
||
+ --- +
使用脚本
是脚本仍然有用吗?是的,当然他们!即使有有效的命令,它往往挑战记住,你需要使用哪些命令,没关系把它才能在它的参数。
在下面所示的脚本中,我们希望在一个工作人员从假期返回时只告诉我们她刚结婚,因此有了一个新姓氏,然后在上面的命令中进行详细的所有更改。下面的脚本将完成所有更改,我们不费什么力气就能适应这个人的偏好,并确认这些更改已经完成。
#!/斌/庆典回声-n“当前用户名:“阅读使用oldName回声-n“新用户名:“读NEWNAME回声-n“更改用户说明字段?[Y / N]“读ANS如果[$ ANS == “Y”];then echo -n “Enter description> “ read desc sudo usermod -c “$desc” $oldname fi # change the user’s username in /etc/passwd and /etc/shadow files sudo usermod -l $newname $oldname # move the user’s home to match the new username sudo usermod -d /home/$newname -m $newname # change the user’s group name sudo groupmod -n $newname $oldnam # verify the changes were made echo /etc/passwd: echo -n “ “ grep $newname /etc/passwd echo home directory: echo -n “ “ ls -ld /home/$newname
下面是一个脚本的例子:
$ update_user当前用户名:dhart新的用户名:dbell更改用户描述字段?[Y / N] y输入描述>鲂贝尔/ etc / passwd中:dbell:X:1002:1002:多瑞贝尔:/家/ dbell:/斌/庆典主目录的。drwxr-XR-×8 dbell dbell 4096 10月06日11:44 /家/ dbell
一旦你把所需的命令到一个脚本,你将不必在确保您的命令是正确的这么辛苦,你仍然会得到迅速彻底地进行必要的修改的好处。
总结
别忘了,usermod提供的就可以更改用户帐户设置选项一个长长的清单。他们中的一些可能使您的工作更容易一点。