Linux基础-Linux 用户命令

Posted 旗木卡卡祥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基础-Linux 用户命令相关的知识,希望对你有一定的参考价值。

  1. 添加用户前需要确定:
    确定用户的默认组是否有特殊要求
    确定用户是否允许登录
    确定用户的密码策略
    确定用户的有效期
    确定用户的uid是否有特殊要求

  2. 使用useradd命令新增账户,注意adduser命令软链接指向useradd
    [root@localhost ~]# LANG=zh_CN.UTF-8
    [root@localhost ~]# useradd -h
    用法:useradd [选项] 登录
    useradd -D
    useradd -D [选项]

选项:
-b, --base-dir BASE_DIR 新账户的主目录的基目录
-c, --comment COMMENT 新账户的 GECOS 字段
-d, --home-dir HOME_DIR 新账户的主目录
-D, --defaults 显示或更改默认的 useradd 配置
-e, --expiredate EXPIRE_DATE 新账户的过期日期
-f, --inactive INACTIVE 新账户的密码不活动期
-g, --gid GROUP 新账户主组的名称或 ID
-G, --groups GROUPS 新账户的附加组列表
-h, --help 显示此帮助信息并推出
-k, --skel SKEL_DIR 使用此目录作为骨架目录
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-l, --no-log-init 不要将此用户添加到最近登录和登录失败数据库
-m, --create-home 创建用户的主目录
-M, --no-create-home 不创建用户的主目录
-N, --no-user-group 不创建同名的组
-o, --non-unique 允许使用重复的 UID 创建用户
-p, --password PASSWORD 加密后的新账户密码
-r, --system 创建一个系统账户
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 新账户的登录 shell
-u, --uid UID 新账户的用户 ID
-U, --user-group 创建与用户同名的组
-Z, --selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER

[root@localhost ~]#

常用参数
‘-u‘ 指定用户的UID,不能和现有ID冲突
‘-g‘ 指定用户用户默认基本组
‘-G‘ 指定用户附加组,用逗号隔开添加多个附加组
‘-d‘ 指定用户家目录
‘-c‘ 指定用户注释信息
‘-M‘ 不建立家目录
‘-s‘ 指定用户默认shell
‘-r‘ 创建系统账户, 没有家目录

创建oldboy用户,指定UID为5001,基本组Students,附加组sa/dba,注释信息2018_new_Student,指定shell为/bin/bash
[root@localhost ~]# groupadd students
[root@localhost ~]# groupadd sa
[root@localhost ~]# groupadd dba
[root@localhost ~]# useradd -u 5001 -g students -G sa,dba -c "2018_new_Student" -s /bin/bash oldboy
[root@localhost ~]# tail -2 /etc/passwd
test2?1002:1002::/home/test2:/bin/bash
oldboy?5001:1003:2018_new_Student:/home/oldboy:/bin/bash
[root@localhost ~]# id oldboy
uid=5001(oldboy) gid=1003(students) 组=1003(students),1004(sa),1005(dba)
[root@localhost ~]#

创建系统用户,-M不建立用户家目录,-s指定nologin使其用户无法登陆系统
[root@localhost ~]# useradd -M -s /sbin/nologin mysql
[root@localhost ~]# useradd -r -s /sbin/nologin dba
useradd:dba 组已经存在 - 如果您想将此用户加入到该组,请使用 -g 参数。
[root@localhost ~]# useradd -r -s /sbin/nologin -g dba dba
[root@localhost ~]# tail -2 /etc/passwd
mysql?5002:5002::/home/mysql:/sbin/nologin
dba?996:1005::/home/dba:/sbin/nologin
[root@localhost ~]# ls /home/
oldboy test test1 test2
[root@localhost ~]#

注意:
-M 指定不建立用户家目录
-r 创建系统用户,也不会建立用户家目录

  1. 使用usermod命令修改用户组
    [root@localhost ~]# usermod -h
    用法:usermod [选项] 登录

选项:
-c, --comment 注释 GECOS 字段的新值
-d, --home HOME_DIR 用户的新主目录
-e, --expiredate EXPIRE_DATE 设定帐户过期的日期为 EXPIRE_DATE
-f, --inactive INACTIVE 过期 INACTIVE 天数后,设定密码为失效状态
-g, --gid GROUP 强制使用 GROUP 为新主组
-G, --groups GROUPS 新的附加组列表 GROUPS
-a, --append GROUP 将用户追加至上边 -G 中提到的附加组中,
并不从其它组中删除此用户
-h, --help 显示此帮助信息并推出
-l, --login LOGIN 新的登录名称
-L, --lock 锁定用户帐号
-m, --move-home 将家目录内容移至新位置 (仅于 -d 一起使用)
-o, --non-unique 允许使用重复的(非唯一的) UID
-p, --password PASSWORD 将加密过的密码 (PASSWORD) 设为新密码
-R, --root CHROOT_DIR chroot 到的目录
-s, --shell SHELL 该用户帐号的新登录 shell
-u, --uid UID 用户帐号的新 UID
-U, --unlock 解锁用户帐号
-Z, --selinux-user SEUSER 用户账户的新 SELinux 用户映射

[root@localhost ~]#

常用参数
‘-u‘ 修改用户的UID
‘-g‘ 修改用户所属的基本组GID
‘-G‘ 修改用户附加组, 使用逗号隔开多个附加组, 覆盖原有的附加组
‘-a‘ 追加更多的附加组, 必须和-G使用: -aG 追加附加组
‘-d‘ 指定用户的家目录新位置
‘-md‘ 家目录迁移, 必须和-d一起使用, 移动用户的家目录到新的位置
‘-c‘ 修改用户的注释信息
‘-s‘ 更改用户使用的shell
‘-l‘ 更改用户登录名
‘-L‘ 锁定用户
‘-U‘ 解锁用户

[root@localhost ~]# grep -i oldboy /etc/passwd
oldboy?5001:1003:2018_new_Student:/home/oldboy:/bin/bash
[root@localhost ~]#

修改用户uid/gid,附加组,注释信息,用户家目录,登陆shell,登陆名

--建立组,指定gid
[root@localhost ~]# groupadd -g 5008 newwork_sa
[root@localhost ~]# groupadd -g 5009 devops
[root@localhost ~]#

--修改用户属性
[root@localhost ~]# usermod -u 5200 -g 5008 -aG 5009 -c "2019_new_students" -md /home/oldgirl -s /bin/bash -l oldgirl oldboy
--检查是否修改成功
[root@localhost ~]# grep -i old /etc/passwd
oldgirl?5200:5008:2019_new_students:/home/oldgirl:/bin/bash
[root@localhost oldgirl]# id oldgirl
uid=5200(oldgirl) gid=5008(newwork_sa) 组=5008(newwork_sa),1004(sa),1005(dba),5009(devops)
[root@localhost oldgirl]#

//验证家目录
[root@oldboy ~]# ll -d /home/oldgirl/
drwx------. 2 oldstudent network_sa 62 Sep 23 00:07 /oldgirl/

如果使用的参数是-md,没有事先创建该目录,随后创建了目录

[root@localhost ~]# su - oldgirl
Last login: Sat Mar 16 21:51:04 CST 2019 on pts/3
-bash-4.2$ cp -a /etc/skel/.bash* ./
-bash-4.2$ ll -a
total 16
drwx------ 4 oldgirl newwork_sa 112 Mar 16 21:53 .
drwxr-xr-x. 6 root root 59 Mar 16 21:50 ..
-rw------- 1 oldgirl newwork_sa 65 Mar 16 21:52 .bash_history
-rw-r--r-- 1 oldgirl newwork_sa 18 Apr 11 2018 .bash_logout
-rw-r--r-- 1 oldgirl newwork_sa 193 Apr 11 2018 .bash_profile
-rw-r--r-- 1 oldgirl newwork_sa 231 Apr 11 2018 .bashrc
drwxr-xr-x 3 oldgirl newwork_sa 18 Mar 16 21:51 .cache
drwxr-xr-x 3 oldgirl newwork_sa 18 Mar 16 21:51 .config
-bash-4.2$ exit
logout
[root@localhost ~]# su - oldgirl
Last login: Sat Mar 16 21:52:44 CST 2019 on pts/3
[oldgirl@localhost ~]$

锁定/解锁用户
[root@localhost ~]# passwd oldboy
更改用户 oldboy 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# usermod -L oldboy
[root@localhost ~]# su - oldboy
上一次登录:六 3月 16 22:07:49 CST 2019pts/2 上
最后一次失败的登录:六 3月 16 22:08:24 CST 2019tty1 上
最后一次成功登录后有 2 次失败的登录尝试。
[root@localhost ~]# su - test
上一次登录:五 9月 12 00:00:26 CST 2014pts/1 上
[test@localhost ~]$ su - oldboy
Password:
su: Authentication failure
[test@localhost ~]$ exit
logout
[root@localhost ~]# usermod -U oldboy
[root@localhost ~]# su - test
上一次登录:六 3月 16 22:10:33 CST 2019pts/3 上
[test@localhost ~]$ su - oldboy
Password:
Last login: Sat Mar 16 22:09:15 CST 2019 on pts/2
Last failed login: Sat Mar 16 22:10:45 CST 2019 on pts/3
There were 3 failed login attempts since the last successful login.
[oldboy@localhost ~]$

  1. 使用finger命令查询用户信息以及登录信息
    [root@localhost ~]# finger -h
    -bash: finger: command not found
    [root@localhost ~]# yum install -y finger

[root@localhost ~]# finger -l
Login: root Name: root
Directory: /root Shell: /bin/bash
On since 日 3月 17 18:10 (CST) on pts/0 from 192.168.254.1
7 seconds idle
On since 日 3月 17 18:13 (CST) on pts/1 from 192.168.254.1
1 minute 12 seconds idle
No mail.
No Plan.
[root@localhost ~]# finger oldboy
Login: oldboy Name:
Directory: /home/oldboy Shell: /bin/bash
Last login 六 3月 16 22:11 (CST) on pts/3
No mail.
No Plan.
[root@localhost ~]#

  1. 使用chfn修改用户信息
    [root@localhost ~]# finger oldboy
    Login: oldboy Name:
    Directory: /home/oldboy Shell: /bin/bash
    Last login 六 3月 16 22:11 (CST) on pts/3
    No mail.
    No Plan.
    [root@localhost ~]# chfn oldboy
    Changing finger information for oldboy.
    名称 []: 老男孩
    办公 []: 沙河富腾公寓
    办公电话 []: 010-59136921
    住宅电话 []: 177901121859

Finger information changed.
[root@localhost ~]# finger oldboy
Login: oldboy Name: 老男孩
Directory: /home/oldboy Shell: /bin/bash
Office: 沙河富腾公寓, 010-59136921 Home Phone: 177901121859
Last login 六 3月 16 22:11 (CST) on pts/3
No mail.
No Plan.
[root@localhost ~]#

  1. 使用chsh命令更改用户登录shell
    [root@localhost ~]# finger oldboy
    Login: oldboy Name: 老男孩
    Directory: /home/oldboy Shell: /bin/bash
    Office: 沙河富腾公寓, 010-59136921 Home Phone: 177901121859
    Last login 六 3月 16 22:11 (CST) on pts/3
    No mail.
    No Plan.
    [root@localhost ~]# chsh oldboy
    Changing shell for oldboy.
    New shell [/bin/bash]: /sbin/nologin
    Shell changed.
    [root@localhost ~]# finger oldboy
    Login: oldboy Name: 老男孩
    Directory: /home/oldboy Shell: /sbin/nologin
    Office: 沙河富腾公寓, 010-59136921 Home Phone: 177901121859
    Last login 六 3月 16 22:11 (CST) on pts/3
    No mail.
    No Plan.
    [root@localhost ~]# tail -1 /etc/passwd
    oldboy?5003:5003:老男孩,沙河富腾公寓,010-59136921,177901121859:/home/oldboy:/sbin/nologin
    [root@localhost ~]#

  2. 检查用户登录情况
    [root@localhost ~]# who
    root tty1 2019-03-17 18:26
    root pts/0 2019-03-17 18:10 (192.168.254.1)
    root pts/1 2019-03-17 18:13 (192.168.254.1)
    [root@localhost ~]# w
    18:27:07 up 17 min, 3 users, load average: 0.00, 0.01, 0.05
    USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
    root tty1 18:26 43.00s 0.03s 0.03s -bash
    root pts/0 192.168.254.1 18:10 3.00s 0.16s 0.00s w
    root pts/1 192.168.254.1 18:13 13:24 0.03s 0.03s -bash
    [root@localhost ~]# whoami
    root
    [root@localhost ~]#

  3. 使用userdel删除账户
    [root@localhost ~]# userdel -h
    用法:userdel [选项] 登录

选项:
-f, --force force some actions that would fail otherwise
e.g. removal of user still logged in
or files, even if not owned by the user
-h, --help 显示此帮助信息并推出
-r, --remove 删除主目录和邮件池
-R, --root CHROOT_DIR chroot 到的目录
-Z, --selinux-user 为用户删除所有的 SELinux 用户映射

[root@localhost ~]#

常用参数
语法 : userdel [-r] username //-r 同时删除家目录

[root@oldboy ~]# userdel user1
[root@oldboy ~]# ll /home/user1/ -d
drwx------. 3 501 501 4096 2017-11-15 12:40 /home/user1/

//连同家目录一起删除
[root@oldboy ~]# userdel -r user1

Linux创建用户默认会读取/etc/default/useradd的配置文件.
如果当我指定参数时,使用指定参数;如果不指定参数,默认使用/etc/default/useradd中的配置.
当我们使用useradd命令新建用户时,用户家目录下会产生响应的.bash*文件,这些文件默认是从/etc/skel目录中复制.如需变更环境拷贝目录站点可修改/etc/default/useradd配置文件.

注意:
如果执行useradd命令新建用户时,指定了参数,就会覆盖/etc/default/useradd默认配置.
[root@localhost ~]# cat /etc/default/useradd

useradd defaults file

GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

[root@localhost ~]#

[root@student ~]# cat /etc/default/useradd
GROUP=100
HOME=/home //把用户的家目录建在/home中。
INACTIVE=-1 //是否启用账号过期停权,-1表示不启用。
EXPIRE= //账号终止日期,不设置表示不启用。
SHELL=/bin/bash //新用户默认所有的shell类型。
SKEL=/etc/skel //配置新用户家目录的默认文件存放路径。
CREATE_MAIL_SPOOL=yes //创建mail文件。

/etc/login.defs文件定义了与/etc/password和/etc/shadow配套的用户限制设定。这个文件是需要的,缺失并不会影响系统的使用,但是也许会产生意想不到的错误。
如果/etc/shadow文件里有相同的选项,则以/etc/shadow里的设置为准,也就是说/etc/shadow的配置优先级高于/etc/login.defs。
[root@localhost ~]# egrep -v "^$|^#" /etc/login.defs
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 1000
UID_MAX 60000
SYS_UID_MIN 201
SYS_UID_MAX 999
GID_MIN 1000
GID_MAX 60000
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
[root@localhost ~]#

//用户登录linux操作系统,环境变量被误删,出现-bash-4.2$,如何解决!
-bash-4.2$ cp -a /etc/skel/.bash* ./
-bash-4.2$ exit

[root@student ~]# su - oldboy
[oldboy@student ~]$

以上是关于Linux基础-Linux 用户命令的主要内容,如果未能解决你的问题,请参考以下文章

Linux基础 08Linux用户权限相关命令

Linux基础知识第七讲,用户权限以及用户操作命令

Linux 权限磁盘操作命令-Linux基础环境命令学习笔记

Linux 权限磁盘操作命令-Linux基础环境命令学习笔记

Linux基础篇--linux基础和帮助用法

Linux基础回顾之基础命令五(用户及组)