Linux 系统中用户/组账号的基本常用命令备忘录
本文最后更新于 2692 天前,其中的信息可能已经有所发展或是发生改变。

用户账号

与用户账号相关的配置文件主要有两个,分别是/etc/passwd/etc/shadow。前者用于保存用户名称、登录目录、登录Shell等基本信息,后者用于保存用户密码、账号有效期等信息。在这两个配置文件中,每一行对应一个用户账号,不同的配置项之间使用冒号:进行分隔。

passwd文件开头部分,包括超级用户root及各程序用户的账号信息,系统中新增加的用户账号信息将保存到passwd文件的末尾。passwd文件的每一行内容中,包括了七个用冒号:分隔的配置字段,从左到右各配置字段的含义分别如下所述。

第一字段:用户账号的名称。
第二字段:经过加密的用户密码字串,或者密码占位符“x”。
第三字段:用户账号的UID号。
第四字段:所属基本组账号的GID号。
第五字段:用户全名,可填写与用户相关的说明信息。
第六字段:主目录,即该用户登录后所在的默认工作目录。
第七字段:登录Shell等信息,用户完成登录后使用的Shell。

基于系统运行和管理需要,所有用户都可以访问passwd文件中的内容,但是只有超级用户root才能进行更改。

shadow文件又被称为“影子文件”,其中保存有各用户账号的密码信息,因此对shadow文件的访问应该进行严格限制。默认只有超级用户root能够读取文件中的内容,而不允许直接编辑该文件中的内容。

每一行内容中,包含了九个用冒号:分隔的配置字段,从左到右各配置字段的含义分别如下所述。

第一字段:用户账号名称。
第二字段:使用MD5加密的密码字串信息,当为“*”或“!!”时表示此用户不能登录到系统。若该字段内容为空,则该用户无需密码即可登录系统。
第三字段:上次修改密码的时间,表示从1970年01月01日算起到最近一次修改密码时间隔的天数。
第四字段:密码的最短有效天数,自本次修改密码后,必须至少经过该天数才能再次修改密码。默认值为0,表示不进行限制。
第五字段:密码的最长有效天数,自本次修改密码后,经过该天数以后必须再次修改密码。默认值为99999,表示不进行限制。
第六字段:提前多少天警告用户口令将过期,默认值为7.
第七字段:在密码过期之后多少天内禁用此用户。
第八字段:账号失效时间,此字段指定了用户作废的天数(从1970年1月1日起计算),默认值为空,表示账号永久可用。
第九字段:保留字段,目前没有特定用途。

useradd命令:添加用户账号

useradd –d /home/test -m test

此命令创建了一个用户test,其中-d-m选项用来为登录名test产生一个主目录/home/test(/home为默认的用户主目录所在的父目录)。

1)若未明确指定用户的主目录,则在/home目录下自动创建与该用户账号同名的主目录,并在该目录中建立用户的初始配置文件。
2)若没有明确指定用户所属的组,则自动创建与该用户账号同名的基本组账号,组账号的记录信息将保存到/etc/group /etc/gshadow文件中。

useradd命令中用于设置账号属性的几个常见选项。

-u:指定用户的UID号,要求该UID号码未被其他用户使用。
-d:指定用户的宿主目录位置。
-e:指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式。
-g:指定用户的基本组名(或使用GID号)。
-G:指定用户的附加组名(或使用GID号)。
-M:不建立使用者目录,即使/etc/login.defs系统档设定要建立使用者目录。
-m:自动创建用户的登录目录。
-s:指定用户的登录Shell。

查看全部参数选项可以执行以下命令:

useradd --help

【举例1.】创建名为test02的用户账号,并将其UID号指定为504:

useradd -u 504 test02

【举例2.】创建一个辅助管理员账号,名为admin,将其基本组指定为admin、附加组指定为root,登录目录指定为/admin

useradd -d /admin -g admin -G root admin

【举例3.】创建一个测试用的账号test03,指定属于users组,该账号于2015年10月7日失效:

useradd -g users -e 2015-10-07 test03

【举例4.】创建用于FTP访问的用户账号ftpuser,将登陆Shell指定为/sbin/nologin(禁止登陆),且不为其创建登录目录:

useradd -M -s /sbin/nologin ftpuser

adduser命令:作用一样,却不尽然

useraddadduser都能新建用户,区别是:

1.adduser会提示设置密码,而useradd不会
2.adduser会创建用户目录,比如/home/test test是用户,useradd不会
3.adduser会创建用户组,默认和用户名相同

useradd是一个ELF可执行程序,不添加任何参数选项,创建出来的用户将是默认“三无”用户:无用户目录,无密码,无Shell。

adduser是一个perl脚本, 可以交互式地设定一些用户参数。

总结:adduser更适合初级使用者,因为不用去记那些繁琐的参数选项,只要跟着系统的提示一步一步进行下去就行,缺点就是整个创建过程比较复杂而漫长;而useradd比较适合有些高阶经验的使用者,往往一行命令加参数就能解决很多问题,所以创建起来十分方便。有足够经验的人,则建议使用useradd来管理用户。

passwd命令:为用户账号设置密码

【举例5.】用useradd新建一个用户后,记得给它设置密码,否则将无法登录。超级用户root可以指定任何用户的密码,比如给用户test设置密码:

passwd test
New password:*******
Re-enter new password:*******

【举例6.】假设当前登录的用户是test,则下面的命令修改将自己的密码:

passwd
Old password:******
New password:*******
Re-enter new password:*******

虽然root用户可以指定用户名作为参数,对指定账号的密码进行管理,但是普通用户却只能执行单独的passwd命令修改自己的密码。

普通用户设置自己的密码时,密码要求有一定的复杂性,否则系统可能拒绝进行设置。

usermod命令:修改用户账号属性

对于已经存在的用户,可以使用usermod命令重新设置各种属性。usermod命令同样需要指定账号名称作为参数。常用的几个参数选项如下:

-u:修改用户的UID号。
-d:修改用户的宿主目录位置。
-e:修改用户的账户失效时间。
-g:修改用户的基本组名。
-G:修改用户的附加组名。
-M:不为用户建立并初始化主目录。
-s:指定用户的登录Shell。
-l:更改用户账号的登录名称。
-L:锁定用户账户。
-U:解锁用户账户。

使用usermod命令时,其大部分的选项与useradd命令的选项是相对应的,作用也相似。除此以外,还有两个选项-U-L,分别用于解锁、锁定用户账号。这两个选项与passwd命令的-l-u选项作用基本相同,只不过大小写存在区别。

【举例7.】将admin用户的登录目录/admin移动至/home目录下,并使用usermod命令做相应调整:

mv /admin /home
usermod -d /home/admin admin

【举例8.】将用户账号的登录名称test03更改为test04,下次登录时生效:

usermod -l test04 test03
grep "test03" /etc/passwd

【举例9.】test05本来的登录目录为/home/test05,改成/home/test,并把test05加入到test_b组:

usermod -d /home/test -G test_b test05

userdel命令:删除用户账号

使用该命令也需要指定账号名称作为参数。添加-r选项时可以将该用户的登录目录一并删除。

【举例10.】删除系统中的用户账号test06,但是保留登录目录。

userdel test06
# 假设登录目录为/home/test06,用ls命令查看会发现目录还在
ls -ld /home/test06

【举例11.】删除系统中的用户账号test06,同时删除登录目录。

userdel -r test06
# 假设登录目录为/home/test06,用ls命令查看会发现目录不存在
ls -ld /home/test06

其它相关命令

查看当前登录用户

查看自己的用户名

查看单个用户信息

关于用户账号的初始配置文件

添加用户账号后,useradd命令会在该用户的登录目录中建立一些初始配置文件。这些文件来自于账号模板目录/etc/skel,基本上都是隐藏文件,较常用的初始配置文件包括.bash_logout.bash_profile.bashrc

其中,.bashrc_profile文件中的命令将在该用户每次登陆时被执行;.bashrc文件中的命令会在每次加载/bin/Bash程序时(当然也包括登陆系统)被执行;而.bash_logout文件中的命令将在用户每次退出登陆时被执行。理解这些文件的作用,便于我们安排一些自动运行的后台管理任务。

如果希望为所有用户添加登录后自动运行的命令程序、自动设置变量等,可以直接修改/etc目录下的类似文件,如/etc/bashrc/etc/profile文件。

本作品采用 “知识共享署名-非商业性使用 4.0 国际许可协议” 进行许可。
免责声明:本站文章除特殊说明为原创禁转外,您可以自由的转载和修改,但请务必注明文章来源并不可用于商业目的。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇