零基础之liunx用户及组相关命令总结

用户,组和权限

用户 user

  • linux是一个多任务(Multi-task),多用户(Multi—user)的操作系统。
    每个使用者都一个标识:用户ID号,也叫UID.用户登入输入用户名,密码。系统会做下面三件事:
    • Authentication 认证
    • Authorization 授权
    • Audition 审计

用户类别

  • 管理员用户
  • 普通用户
    • 系统用户
    • 登录用户

在系统里用户名用用户标识(UserID,也中UID)识别.UID用16位二进制数字表示:其范围是0-65635.

  • 管理员的UID=0
  • 系统用户或的UID的范围为:
    • centos 6 : 1-499
    • centos 7 : 1-999
  • 普通用户或登录用户的UID的范围为:
    • centos 6 : 500-60000
    • centos 7 : 1000-60000

用户,UID的名称解析:根据名称解析库进行。

username<–>UID 解析库文件位置: /etc/passwd

组group

组:用户组,用户容器,觉色。

组类别

组类别 1

  • 管理员组
    • 普通用户组
      • 系统用户组
      • 登入用户组
    • 组标识:GroupID , GID
    • 管理员组gid为:0
    • 系统用户组gid为:
      • centos 6系列:1-499
      • centos 7系列:1-999
    • 登入用户组gidO为:
      • centos 6系列:500-60000
      • centos 7系列:1000-60000

名称解析:groupname <–>gid

组类别 2

  • 用户的主组,也叫基本组。
  • 用户的附加组。

组类别 3

  • 组名同用户名,且只包含一个用户。
  • 公共组:组内包含了多个用户。

注意—-认证信息:通过对比事先存储的用户信息,与登录时提供的信息是否一致。

password文件分别存放在/etc/passwd /etc/gshadow中。

密码使用策略

  • a . 使用随机密码。
  • b . 最短长度不人低于8位。
  • c . 密码应该使用大写字母,小写字母,数字和标点符号四类字体中至少三类。
  • d . 定期更换密码原则。

加密算法分类

  • 对称加密:加密和解密使用同一个密码。
  • 非对称加密:加密和解密使用一对儿密码。

    • 密码对儿:公钥(Public Key) 私钥(private key)
    • 单向加密:只能加密,不能解密,<提取数据特征吗>

    • 密码的特征:定长输出 ,雪崩效应。

      • 常用的加密算法:

      • md5sum # md: message digest 定长输出128bit 。

      • sha1sum # sha: secure hash algorithm ,定长160bit。
      • sha224sum
      • sha255sum
      • sha384sum
      • sha512sum
    • example:

    [root@caibird ~]# echo "how are you ? " |md5sum
    ae5c1fc1125570f4646704c8c797cbea  -
    [root@caibird ~]# echo "how are you . " |md5sum
    ce7d7579821ab64284d1175233705936  -
    [root@caibird ~]# 
    

    注意:密码在计算之时加salt,添加的随机数。

  • 密码+随机数—->加密字串

  • 密码+随机数—->生成加密字串

/etc/passwd 用户的信息库

  • 文件内容的格式 : 一行代表一个用户。

    • account:password:UID:GID:GECOS:directory:shell

    • 用户名:密码:用户ID:组ID:注释:家目录:登入shell

      • account : username ;系统上的用户名。
      • password : 可以是加密的密码,也可以是占位 符X
      • UID :username,用户的ID号。
      • GID : 用户所属的主组ID号
      • GECOS : 用户注释。
      • directory:用户的家目录。
      • shell : 用户登入时默认shell程序。

passwd 命今

  • 功能: 设置和修改用户密码

passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [–stdin] [username]

  • 用法

    • passwd : 修改用户自己的密码。

    • passwd username : 修改指定用户的密码,但仅root有此权限。

  • passwd [选项…] <帐号名称>

    • -k, –keep-tokens : 保持身份验证令牌不过期。

    • -d, --delete : 清除用户的密码串(只有根用户才能进行此操作)。

    • -l, --lock : 锁住用户(仅root操作)。
    • -u, --unlock : 解锁用户(仅root操作)。
    • -e, --date : 过期期限,日期. (root only)。
    • -f, –force : 强制执行操作。
    • -x, --maximum=DAYS : 密码的最长有效时限(只有根用户才能进行此操作)。
    • -n, --minimum=DAYS : 密码的最短有效时限(只有根用户才能进行此操作)。
    • -w, --warning=DAYS: 在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)。
    • -i, --inactive=DAYS: 当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作)。
    • -S, –status : 报告已命名帐号的密码状态(只有根用户才能进行此操作)。
    • --stdin : 从标准输入读取令牌(只有根用户才能进行此操作)。
  • echo “PASSWORD” | passwd –stdin username
[root@caibird ~]# useradd tan
[root@caibird ~]# echo "123456" | passwd --stdin tan
更改用户 tan 的密码 。
passwd: 所有的身份验证令牌已经成功更新。

  • 例如:给用户mageia添加密码,密码为mageedu.

[root@localhost ~]# echo  "mageedu" | passwd --stdin mageia
更改用户 mageia 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# 

/etc/shadow

shadow 是一个文件。它包含系统账户的密码信息和可选的时间信息。此文件的每一行为一个用户的密码信息。包括 9 个字段,使用半角冒号 (“:”) 分隔。如下:

  • shutdown:*:17246:0:99999:7:::
  • 登录名:加密了的密码 :最后一次更改密码的日期 :密码的最短修改时间 :最大密码修改时间 :密码警告时间段

    • 登录名:
      必须是有效的账户名,且已经存在于系统中。

    • 加密了的密码:

      • 请参考crypt(3)来了解关于解析此字符串的细节信息。

      • 如果密码字段包含一些不是 crypt(3) 合法结果的字符,比如! 或 *,用户将无法使用 unix 密码登录(但是可以通过其它方法登录系统)。

      • 此字段可以为空,此时认证为特定的登录名时,不要求密码。然而,一些读取/etc/shadow
        文件的应用程序,在密码字段为空时,可能决定禁止任何访问。

        • 以叹号开始的密码字段意味着密码被锁定。该行的剩余字符表示锁定之前的密码。
    • 最后一次更改密码的日期:
      最近一次更改密码的时间,表示从1970年1月1日开始的天数。
      0 有特殊意思,表示用户应该在下次登录系统时更改密码。 空字段表示密码年龄功能被禁用。

    • 密码的最短修改时间:
      最小密码修改时间是指,用户一次更改密码之后,要等多长时间才再次被允许更改密码。
      空字段或 0 表示没有最小密码时间。

    • 最大密码修改时间:
      最大密码年修改是指,这写天之后,用户必须更改密码。
      这写天之后,密码仍然可用。用户将会在下次登录的时候被要求更改密码。
      空字段表示没有最大密码年龄,没有密码警告时间段,没有密码禁用时间段(请看下边)。
      如果最大密码年龄小于最小密码年龄,用户将会不能更改密码。

    • 密码警告时间段: 密码过期之前,提前警告用户的的天数(请参考上边的密码的最大修改时间)。

groupadd 命令

  • 作用:创建一个组。
  • 格式 :groupadd [选项] group
  • 选项 :

    • -f, –force 如果组已经存在则成功退出
      并且如果 GID 已经存在则取消 -g.
    • -g, –gid GID 为新组指定GID,默认是上一个组的GID+1.
    • -h, –help 显示此帮助信息.
    • -K, –key KEY=VALUE 不使用 /etc/login.defs 中的默认值.
    • -o, –non-unique 允许创建有重复 GID 的组.
    • -p, –password PASSWORD 为新组使用此加密过的密码.
    • -r, –system 创建一个系统账户(centos 6 GID 1-499 ; centos 7 GID 1-999).
    • -R, –root CHROOT_DIR chroot 到的目录.

每个进程在访问资源时,它一定是代表某一用户在运行。
安全上下文:进程以某发起者身份运行,进程对文件的访问权限,取决于发起此进程的用户权限。例如:

[root@localhost ~]# whoami 
root
[root@localhost ~]# cat /etc/shadow     # root用户访问
root:$6$RJIXE8vZqNYKqNnD$GFI6zFs.hQbaND5CCoWzidgqWzoUnQE.G7beTA0djZkOj5WXshwPNS6sLTodiOqMkGgVNUDNOsZ4P/VmJamCV/::0:99999:7:::
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::
adm:*:17110:0:99999:7:::

[root@localhost ~]# su - caibird
[caibird@localhost ~]$ whoami
caibird
[caibird@localhost ~]$ cat /etc/shadow   # 普通用户访问
cat: /etc/shadow: 权限不够
[caibird@localhost ~]$ 
  • 10-1,创建组distro,GID为2016

[root@localhost ~]# tail /etc/group
nfsnobody:x:65534:
gnome-initial-setup:x:986:
avahi:x:70:
slocate:x:21:
postdrop:x:90:
postfix:x:89:
sshd:x:74:
tcpdump:x:72:
caibird:x:1000:
boo:x:1001:
[root@localhost ~]# groupadd distro -g 2016
[root@localhost ~]# tail /etc/group
gnome-initial-setup:x:986:
avahi:x:70:
slocate:x:21:
postdrop:x:90:
postfix:x:89:
sshd:x:74:
tcpdump:x:72:
caibird:x:1000:
boo:x:1001:
distro:x:2016:
[root@localhost ~]# 

  • 什么叫系统用户?为了能让那些后台进程(系统启动时运行的程序 )或服务进程非管理员的身份运行,通常需要为此进程 创建多个普通用户,这类用户从不用登录系统。这样的用记就叫做系统用户.

groupmod 命令

  • 功能 :修改组的属性
  • 用法: groupmod [选项] GROUP
  • 选项 :
    • -g , –gid GID : 修改组的GID,(centos 6 {systemuser GID:1-499,loginuser GID:500-60000},centos 7 {systemuser GID:1-999,loginuser GID:1000-60000})
    • -h , –help : 显示此帮助信息
    • -n , –new-name NEW_GROUP 改名为 NEW_GROUP
    • -o , –non-unique 允许使用重复的 GID
    • -p , –password PASSWORD 将密码更改为(加密过的) PASSWORD
    • -R , –root CHROOT_DIR chroot 到的目录

配置文件

  • 在 /etc/login.def中有如下配置变量,可以用来更改此工具的行为:

    MAX_MEMBERS_PER_GROUP (number) : 每个组条目的最大成员数。达到最大值时,在 /etc/group开始一个新条目(行)(使用同样的名称,同样的密码,同样的GID)。默认值是0,意味着组中的成员数没有限制。此功能(分割组)允许限制组文件中的行长度。这对于确保 NIS组的行比长于 1024 字符。如果要强制这个限制,可以使用 25。注意:分割组可能不受所有工具的支持(甚至在 Shadow工具集中)。您不应该使用这个变量,除非真的需要。

相关文件

  • /etc/group
    :组账户信息。
  • /etc/gshadow
    :安全组账户信息
  • /etc/login.defs
    : Shadow 密码套件配置。
  • /etc/passwd
    : 用户账户信息。

groupdel

  • 功能 :删除一个组
  • 格式 : groupdel [选项] GROUP

您不能删除现有用户的主组。在删除此组之前,必须先删除此用户.

gpasswd

  • 格式: gpasswd [选项] group

  • 选项:

    • -a , –add USER : 向组 GROUP 中添加用户 USER 。
    • -d , –delete USER : 从组 GROUP 中添加或删除用户 。
    • -h , –help : 显示此帮助信息并推出 。
    • -Q , –root CHROOT_DIR : 要 chroot 进的目录 。
    • -r, –delete-password : remove the GROUP’s password 。
    • -R , –restrict : 向其成员限制访问组 GROUP 。
    • -M, –members USER,… : 设置组 GROUP 的成员列表 。
    • -A, –administrators ADMIN,… :设置组的管理员列表 。
      除非使用 -A 或 -M 选项,不能结合使用这些选项。
  • 配置文件在 /etc/login.def中有如下配置变量,可以用来更改此工具的行为:

    • ENCRYPT_METHOD (string) :

      • 这定义了系统加密密码的默认算法(如果没有在命令行上指定算可以使用如下值:DES (default), MD5, SHA256, SHA512.注意,此参数会覆盖 MD5_CRYPT_ENAB 变.
    • MAX_MEMBERS_PER_GROUP (number):

      • 每个组条目的最大成员数。达到最大值时,在 /etc/group开始一个新条目(行)(使用同样的名称,同样的密码,同样的GID)。默认值是 0,意味着组中的成员数没有限制.
    • MD5_CRYPT_ENAB (boolean):

      • 表示密码是否必须使用基于MD5的算法加密。如果设为
        yes,新密码将使用可以和新版FreeBSD兼容的基于MD5的算法加密。它支持无限长度的密码以及更长的字符串。如果您需要将加密的密码复制到其它不理解新算法的系统,设置为
        no. 默认值是 no.

        This variable is superseded by the ENCRYPT_METHOD
        variable or by any command line option used to configure
        the encryption algorithm.
        此变量已经废弃.您应该使用 ENCRYPT_METHOD。

    • SHA_CRYPT_MIN_ROUNDS (number),
      -SHA_CRYPT_MAX_ROUNDS (number)
      ENCRYPT_METHOD 设为 SHA256 或 SHA512
      时,此项确定加密算法默认使用 SHA
      轮转数目(当轮转数没有通过命令行指定时).使用很多轮转,会让暴力破解更加困难。但是需要注意,认证用户时也会需要更多的CPU 资源。
      如果没有指定,libc会选择默认的轮转数(5000).值必须在 1000 - 999,999,999之间.如果只设置了一个 SHA_CRYPT_MIN_ROUNDS 或
      SHA_CRYPT_MAX_ROUNDS 值,就会使用这个值。如果 SHA_CRYPT_MIN_ROUNDS >
      SHA_CRYPT_MAX_ROUNDS,将会使用大的那个。

  • 相关文件

    /etc/group
    组账户信息.

    /etc/gshadow
    安全组账户信息.

useradd 命令 <–> adduser

useradd 与 adduser的关系

[root@localhost ~]# ll /usr/sbin/adduser  # 链接文件
lrwxrwxrwx. 1 root root 7 420 23:26 /usr/sbin/adduser -> useradd
[root@localhost ~]# ll /usr/sbin/useradd 
-rwxr-x---. 1 root root 118192 116 2016 /usr/sbin/useradd
[root@localhost ~]# 

功能 :创建一个新用户或者更新一个用户的用户信息。

格式1 : useradd [选项] 登入名(username)

  • 选项 :

    • -b, –base-dir BASE_DIR :新账户的主目录的基目录。
    • -c, --comment COMMENT 新GECOS 字段;指明注释信息

    • -d, --home-dir HOME_DIR : 以指定的路径为用户的的家目录,通过复制/etc/skel 此目录并且重名实现。指定的家目录如果事先存在,则不会为用户复制环境配置文件

    • -D, –defaults 显示或更改默认的 useradd 配置。
    • -e, –expiredate EXPIRE_DATE 新账户的过期日期; 0 表示立即禁用,-1 表示禁用这个功能。
    • -f, –inactive INACTIVE 新账户的密码不活动期。
    • -g, --gid GROUP 指定基本组ID,此组必须事先存在
    • -G, --groups GROUPS1 [,GROUPS2],,,[,GROUPN]]]; 指明用户所属的附加组,多个组之间用逗号隔开。
    • -k, –skel SKEL_DIR 使用此目录作为骨架目录。
    • -K, –key KEY=VALUE 不使用/etc/login.defs 中的默认值。
    • -l, –no-log-init 不要将此用户添加到最近登录和登录失败数据库。
    • -m , –create-home 如果目录不存在,则创建用户主目录,vcwg ,骨架目录中/etc/skel 的文件和目录将会复制至主目录 ,默认上,如果没有指定此选项并且GREATE_HOME没有启用,不会创建主目录.

    • -M, –no-create-home 不创建用户的主目录,即使系统在/etc/login.defs中的设置CREATE_HOME 为yes。

    • -N, –no-user-group 不创建同名的组。
      • -o, –non-unique 允许使用重复的 UID 创建用户。
    • -p, –password PASSWORD 加密后的新账户密码。
    • -r, --system 创建一个系统账户
  • -R, –root CHROOT_DIR chroot 到的目录。
  • -s, --shell SHELL 指定用户的默认shell,可用的所有shell列表位于/etc/shells目录下。
  • -u, –uid UID 指定用户 ID。
  • -U, –user-group 创建与用户同名的组。
  • -Z, –selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER。

  • 例如: 10-6 创建用户slackware,其ID号为2002,基本组为distro,附加组peguin。

[root@localhost ~]# tail /etc/passwd
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
gnome-initial-setup:x:991:986::/run/gnome-initial-setup/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
caibird:x:1000:1000:caibird:/home/caibird:/bin/bash
ab:x:1002:1000: this is common user:/home/a:/bin/bash
mageia:x:1100:1100::/home/linux:/bin/bash
[root@localhost ~]# useradd slackware -u 2002 -g distro -G peguin
useradd:“peguin”组不存在
[root@localhost ~]# groupadd  peguin
[root@localhost ~]# useradd slackware -u 2002 -g distro -G peguin
[root@localhost ~]# tail -1 /etc/passwd
slackware:x:2002:2016::/home/slackware:/bin/bash
[root@localhost ~]# tail /etc/group
avahi:x:70:
slocate:x:21:
postdrop:x:90:
postfix:x:89:
sshd:x:74:
tcpdump:x:72:
caibird:x:1000:
distro:x:2016:
mageia:x:1100:
peguin:x:2017:slackware
[root@localhost ~]# 
  • 例如: 创建用户mandriva,其ID号为1005;基本组为distro。
[root@localhost ~]# tail /etc/passwd
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
gnome-initial-setup:x:991:986::/run/gnome-initial-setup/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
caibird:x:1000:1000:caibird:/home/caibird:/bin/bash
boo:x:1001:1001::/home/boo:/bin/bash
ab:x:1002:1000: this is common user:/home/a:/bin/bash
[root@localhost ~]# useradd mandriva -u 1005 -g distro
[root@localhost ~]# tail -2 /etc/passwd
ab:x:1002:1000: this is common user:/home/a:/bin/bash
mandriva:x:1005:2016::/home/mandriva:/bin/bash

例如 :创建用户mageia,其ID为1100,家目录为/home/linux.


[root@localhost ~]# useradd mageia -u 1100 -d /home/linux
[root@localhost ~]# tail /etc/passwd
gnome-initial-setup:x:991:986::/run/gnome-initial-setup/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
caibird:x:1000:1000:caibird:/home/caibird:/bin/bash
boo:x:1001:1001::/home/boo:/bin/bash
ab:x:1002:1000: this is common user:/home/a:/bin/bash
mandriva:x:1005:2016::/home/mandriva:/bin/bash
mageia:x:1100:1100::/home/linux:/bin/bash
[root@localhost ~]# 

useradd -D :显示创建用户的默认配置。


[root@localhost ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE= # 密码永不过期
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@localhost ~]#

useradd -D [选项] : 修改默认选项的值。

修改的结果保存于/etc/default/useradd 文件中

注意: 创建用户时诸多默认设置配置文件位于/etc/login.defs。

usermod 命令

  • 功能 :修改用户的的相关信息。

    • 用法:usermod [选项] 用户名
  • 选项:

    • -c, --comment 注释 : 修改注释(GECOS) 信息
    • -d, --home HOME_DIR : 修改用户的家目录,用户原有的文件不会被转移到新的位置
    • -f, –inactive INACTIVE : 过期 INACTIVE 天数后,设定密码为失效状态。
    • -g, --gid GROUP : 修改用户所属的基本主
    • -G, --groups GROUPS :修改用户所属的附加组,原来的附加组会被覆盖
      --a, --append GROUP : 与 -G 一同使用,用于为用户增加新的附加组
    • -h, –help : 显示此帮助信息并推出。
    • -l, --login NEW LOGINname : 修改用户名
      --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 修改用户帐号的ID为此处指定的新UID

    • -U, --unlock :解锁用户的密码。

    • -Z, –selinux-user SEUSER 用户账户的新 SELinux 用户映射。
  • 例如:修改slackware的默认shell为/bin/tcsh;

10-7

[root@localhost ~]# grep 'slack*' /etc/passwd
slackware:x:2002:2016::/home/slackware:/bin/bash
[root@localhost ~]# usermod  -s /bin/tcsh slackware
[root@localhost ~]# grep 'slack*' /etc/passwd
slackware:x:2002:2016::/home/slackware:/bin/tcsh
[root@localhost ~]# 


  • 例如 :为用户slackware新增附加组admins;
10-8

[root@localhost ~]# grep 'admins*' /etc/group
[root@localhost ~]# grep 'admins*' /etc/group
[root@localhost ~]# groupadd admins
[root@localhost ~]# grep 'admins*' /etc/group
admins:x:2018:
[root@localhost ~]# grep 'slackware' /etc/passwd
slackware:x:2002:2016::/home/slackware:/bin/tcsh
[root@localhost ~]# usermod -G admins slackware
[root@localhost ~]# grep 'admins*' /etc/group
admins:x:2018:slackware
[root@localhost ~]# grep 'slackware' /etc/passwd
slackware:x:2002:2016::/home/slackware:/bin/tcsh
[root@localhost ~]# 



userdel 命令

  • 用法:userdel [选项] 登录

  • 选项:

    • -f, –force : 强制删除用户。
    • -h, –help : 显示此帮助信息并退出。
    • -r, –remove : 删除家目录 。
    • -R, –root CHROOT_DIR : chroot 到的目录。
      • -Z, –selinux-user : 为用户删除所有的 SELinux 用户映射。
  • 例如 :删除magndriva,但保留其家目录。


[root@localhost ~]# ls /home
a  caibird  linux  mandriva
[root@localhost ~]# tail /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
gnome-initial-setup:x:991:986::/run/gnome-initial-setup/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
caibird:x:1000:1000:caibird:/home/caibird:/bin/bash
ab:x:1002:1000: this is common user:/home/a:/bin/bash
mandriva:x:1005:2016::/home/mandriva:/bin/bash
mageia:x:1100:1100::/home/linux:/bin/bash
[root@localhost ~]# userdel mandriva
[root@localhost ~]# tail /etc/passwd
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
gnome-initial-setup:x:991:986::/run/gnome-initial-setup/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
caibird:x:1000:1000:caibird:/home/caibird:/bin/bash
ab:x:1002:1000: this is common user:/home/a:/bin/bash
mageia:x:1100:1100::/home/linux:/bin/bash
[root@localhost ~]# ls /home/
a  caibird  linux  mandriva
[root@localhost ~]# 

newgrp 命令

  • 功能 :登录到一个新组
  • -newgrp [-] [group]

    • newgrp groupnaame
    • exit 退回来。

chage 命令

  • 功能:更改用户密码过期信息。

  • 格式: chage [选项] 用户名

  • 选项:

    • -d, –lastday 最近日期 将最近一次密码设置时间设为“最近日期”。
    • -E, –expiredate 过期日期 将帐户过期时间设为“过期日期”。
    • -h, –help 显示此帮助信息。
    • -I, –inactive INACITVE 过期 INACTIVE 天数后,设定密码为失效状态。
    • -l, –list 显示帐户年龄信息。
    • -m, –mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数”;0表示 用户可以在任何时间修改其密码 。
    • -M, –maxdays 最大天数 将两次改变密码之间相距的最大天数设为“最大天数”。
    • -R, –root CHROOT_DIR chroot 到的目录。
    • -W, –warndays 警告天数 将过期警告天数设为“警告天数”。

id 命令

  • 功能 :显示用户的实际ID和有效ID信息。不带选项,只显示自己的ID信息。

  • 格式: id [OPTION]… [USER]

    • -a ignore, for compatibility with other versions。
    • -Z, –context print only the security context of the current user。
    • -g, –group print only the effective group ID。
    • -G, –groups print all group IDs。
    • -n, –name print a name instead of a number, for -ugG。
    • -r, –real print the real ID instead of the effective ID, with -ugG。
    • -u, –user print only the effective user ID。
    • -z, –zero delimit entries with NUL characters, not whitespace;
      not permitted in default format。
    • –help 显示此帮助信息并退出。
    • –version 显示版本信息并退出。

    如果不附带任何选项,程序会显示一些可供识别用户身份的有用信息。

su (switch user)命令

登入式切换–>完全切换: su - username or su -l username ;该模式下,会通过重新读取目标用户的配置文件来重新初始化助用户工作环境。

非登录式切换—>半切换:su username ;在该模式下,不会通过重新读取目标用户的配置文件来重新初始化助用户工作环境

  • 功能:将有效用户 id 和组 id 更改为 USER 的 id。
    单个 - 视为 -l。如果未指定 USER,将假定为 root。

  • 格式:su [options…] [-] [user [args…]]

  • 选项:

    • -m, -p, –preserve-environment 不重置环境变量
    • -g, –group <组> 指定主组
      -G, –supp-group <组> 指定一个辅助组

    • -, -l, –login 使 shell 成为登录 shell

    • -c, –command <命令> 使用 -c 向 shell 传递一条命令。
    • –session-command <命令> 使用 -c 向 shell 传递一条命令(仅以指定用户的身份运行此处指定的命令, 而不创建新会话。
    • -f, –fast 向shell 传递 -f 选项(csh 或 tcsh)。
    • -s, –shell 若 /etc/shells 允许,则运行 shell。

      • -h, –help 显示此帮助并退出。
      • -V, –version 输出版本信息并退出。

其他与管理相关的命令

1.chsh 命令

  • 功能 : 改变用户登入的shell

  • 语法: chsh [-s shell] [-l] [-u] [-v] [username]

  • 选项:

    • -s, –shell shell
      Specify your login shell.

    • -l, –list-shells
      Print the list of shells listed in /etc/shells and exit.

2.whoami 命令

  • 显示用户的有效ID号。
  • whoami [OPTION]…

3.pwck命令

  • 用法:pwck [选项] [passwd [shadow]]

  • 选项:

    • -h, –help 显示此帮助信息并推出。
    • -q, –quiet 只报告错误。
    • -r, –read-only 显示错误和警告,但不改变文件。
    • -R, –root CHROOT_DIR chroot 到的目录。
    • -s, –sort 通过 UID 排序项目。
  • 作用: 检查密码文件的完整性。

4. grpck命令

  • grpck - 检查组文件的完整性

大纲
grpck [选项] [group [ shadow ]]

用法:grpck [选项] [组 [gshadow]]

选项:
-h, –help 显示此帮助信息并推出 。
-r, –read-only 显示错误和警告,但不改变文件。
-R, –root CHROOT_DIR chroot 到的目录。
-s, –sort 通过 UID 排序项目。

5.finger 命令

  • 功能: 用户信息查找程序, 显示关于系统用户的信息 。

  • 格式: finger [-lmsp] [user …] [user@host …]

6. chfn 命令

  • 改 变 你 的 finger 讯 息

  • 格式:
    chfn [ -f full-name ] [ -o office ] [ -p office-phone ]
    [ -h home-phone ] [ -u ] [ -v ] [ username ]

  • 用法:
    chfn [选项] [用户名]

  • 选项:

    • -f, –full-name <全名> 真实姓名。
    • -o, –office <办公> 办公号码。
    • -p, –office-phone <电话> 办公电话。
    • -h, –home-phone <电话> 住宅电话。
    • -u, –help 显示此帮助并退出。
    • -v, –version 输出版本信息并退出。
[root@localhost ~]# who
caibird  :0           2018-05-14 02:30 (:0)
caibird  pts/0        2018-05-14 02:30 (:0)
root     pts/1        2018-05-27 07:18 (192.168.3.1)
root     pts/2        2018-05-27 14:22 (192.168.3.1)
root     pts/3        2018-05-27 14:22 (192.168.3.1)
root     pts/4        2018-05-27 14:22 (192.168.3.1)
[root@localhost ~]# who | cut -f1 -d" " | uniq
caibird
root
[root@localhost ~]# 

[caibird@localhost ~]$ w 
 14:35:57 up 1 day, 17:07,  7 users,  load average: 0.06, 0.03, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
caibird  :0       :0               14518 ?xdm?   6:17   0.27s /usr/libexec/gnome-session-binary --session gnome-classic
caibird  pts/0    :0               14518 13days  0.09s  0.49s /usr/libexec/gnome-terminal-server
root     pts/1    192.168.3.1      07:18    1:17   0.21s  0.21s -bash
root     pts/2    192.168.3.1      14:22    1:17   0.02s  0.02s -bash
root     pts/3    192.168.3.1      14:22   13:14   0.02s  0.02s -bash
root     pts/4    192.168.3.1      14:22   13:13   0.02s  0.02s -bash
caibird  pts/5    192.168.3.1      14:35    5.00s  0.03s  0.00s w
[caibird@localhost ~]$ w | tail -1 
caibird  pts/5    192.168.3.1      14:35    3.00s  0.03s  0.00s w
[caibird@localhost ~]$ 
  • 例如 :取出当前系统上被用户作其默认shell最多的那个shell。
[root@localhost ~]#  cp /etc/passwd .
[root@localhost ~]# cut  -d: -f7  ./passwd  | uniq -c | sort -n | tail -1 
     32 /sbin/nologin
[root@localhost ~]# 
  • 例如:将/etc/passwd中的第三个字段数值最大之后的10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。

[root@localhost ~]# sort -t: -n -k3 ./passwd | tail -11 | head  | tr 'a-z'  'A-Z' >/tmp/maxusers.txt
[root@localhost ~]# cat /tmp/maxusers.txt
GEOCLUE:X:993:988:USER FOR GEOCLUE:/VAR/LIB/GEOCLUE:/SBIN/NOLOGIN
CHRONY:X:994:990::/VAR/LIB/CHRONY:/SBIN/NOLOGIN
SETROUBLESHOOT:X:995:993::/VAR/LIB/SETROUBLESHOOT:/SBIN/NOLOGIN
SASLAUTH:X:996:76:SASLAUTHD USER:/RUN/SASLAUTHD:/SBIN/NOLOGIN
COLORD:X:997:994:USER FOR COLORD:/VAR/LIB/COLORD:/SBIN/NOLOGIN
LIBSTORAGEMGMT:X:998:995:DAEMON ACCOUNT FOR LIBSTORAGEMGMT:/VAR/RUN/LSM:/SBIN/NOLOGIN
POLKITD:X:999:997:USER FOR POLKITD:/:/SBIN/NOLOGIN
CAIBIRD:X:1000:1000:CAIBIRD:/HOME/CAIBIRD:/BIN/BASH
BOO:X:1001:1001::/HOME/BOO:/BIN/BASH
AB:X:1002:1000: THIS IS COMMON USER:/HOME/A:/BIN/BASH
[root@localhost ~]# 


  • 例如 :列出/etc目录下有 以.conf结尾的文件的文件名,并将其名字转换成大写后保存至/tmp/etc.conf文件中。
[root@localhost ~]# ls /etc/*.conf | tr 'a-z'  'A-Z' > /tmp/etc.conf
[root@localhost ~]# cat /tmp/etc.conf 
/ETC/ASOUND.CONF
/ETC/AUTOFS.CONF
/ETC/AUTOFS_LDAP_AUTH.CONF
....中间省....
/ETC/SUDO-LDAP.CONF
/ETC/SYSCTL.CONF
/ETC/TCSD.CONF
/ETC/UPDATEDB.CONF
/ETC/USB_MODESWITCH.CONF
/ETC/VCONSOLE.CONF
/ETC/WVDIAL.CONF
/ETC/YUM.CONF
[root@localhost ~]# 


7. who 命令

  • 功能 :显示当前系统已经登录的用户信息 。
  • 选项:
    • -a, –all :等于-b -d –login -p -r -t -T -u 选项的组合 。
    • -b, –boot :上次系统启动时间 。
    • -d, –dead :显示已死的进程 。
    • -H, –heading :输出头部的标题列 。
      -l,–login : 显示系统登录进程 。
      –lookup : 尝试通过 DNS 查验主机名 。
    • -m :只面对和标准输入有直接交互的主机和用户 。
    • -p, –process :显示由 init 进程衍生的活动进程 。
    • -q, –count :列出所有已登录用户的登录名与用户数量 。
    • -r, –runlevel :显示当前的运行级别 。
    • -s, –short :只显示名称、线路和时间(默认) 。
    • -T, -w, –mesg :用+,- 或 ? 标注用户消息状态 。
    • -u, –users :列出已登录的用户 。
      • –message :等于-T 。
      • –writable :等于-T 。
    • –help : 显示此帮助信息并退出 。
    • –version : 显示版本信息并退出 。

8.wc 命令

  • 格式 :
    • wc [选项]… [文件]…
    • wc [选项]… –files0-from=F
  • 功能:输出每个指定文件的行数、单词计数和字节数,如果指定了多于一个文件,继续给出所有相关数据的总计。如果有指定文件,或者文件为”-“,则从标准输入读取数据。

    • -c , –bytes :输出字节数统计。
    • -m , –chars : 输出字符数统计 。
    • -l , –lines : 输出行数统计 。
    • –files0-from=文件 ::从指定文件读取以NUL 终止的名称,如果该文件被 指定为”-“则从标准输入读文件名 。
    • -L , –max-line-length : 显示最长行的长度 。
    • –w , –words : 显示单词计数 。
    • –help : 显示此帮助信息并退出 。
    • –version : 显示版本信息并退出 。

9.tree 命令

  • 功能 : 以树的形状显示目录内容。

  • 选项:

    • -L level : 显示目录的层数,level表示 n层数。
  • 例如 :显示/var目录下一级子目录或文件的总个数。

[root@localhost ~]# tree -L  1 /var
/var
├── adm
├── cache
├── crash
├── db
├── empty
├── games
├── gopher
├── kerberos
├── lib
├── local
├── lock -> ../run/lock
├── log
├── mail -> spool/mail
├── nis
├── opt
├── preserve
├── run -> ../run
├── spool
├── tmp
└── yp

20 directories, 0 files

[root@localhost ~]# tree -L 1 /var | tail -1
20 directories, 0 files                 # 一级子目录或文件的总个数.
[root@localhost ~]# 
  • 例如: 取出/etc/group文件中第三个字段数值最小的10个组的名字。
[root@localhost ~]# sort -t: -n -k3 ./group 
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:caibird
cdrom:x:11:

[root@localhost ~]# sort -t: -n -k3 ./group | cut -d: -f1 | head
root
bin
daemon
sys
adm
tty
disk
lp
mem
kmem
[root@localhost ~]# 
  • 例如:将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。
[root@localhost ~]# cat /etc/fstab  /etc/issue >> /tmp/etc.test
[root@localhost ~]# cat /tmp/etc.test 

#
# /etc/fstab
# Created by anaconda on Mon May 14 01:20:23 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=187bf10d-7aaf-42b5-99e4-e0a23c0cc228 /                       xfs     defaults        0 0
UUID=a0be23ca-ec5e-471a-bd92-a86819ef182c /boot                   xfs     defaults        0 0
UUID=ce39f5f9-e560-4194-9cef-8e7ad8857ba7 swap                    swap    defaults        0 0
\S
Kernel \r on an \m

[root@localhost ~]# 
  • 例如:列出当前主机的IP,提示,对ifconfig命令结果进行切分。
[root@localhost ~]# ifconfig   |grep inet[^6]|grep  -E -o '([0-9]{1,3}\.){3}[0-9]{1,3}'  | head -1
192.168.3.139

你可能感兴趣的:(base_zero)