1、列出当前系统上所有已经登录的用户的用户名,注意:同一用户登录多次,则只显示一次即可。

who | cut -d" " -f1 | sort | uniq

image.png

2、取出最后登录到当前系统的用户的相关信息

finger  `who | tail -1 | cut -d" " -f1`
id `who | tail -1 | cut -d" " -f1`

image.png

3、取出当前系统被用户当作其默认shell的最多的那个shell

cut -d ":" -f7 /etc/passwd | sort | uniq -c | sort -n | tail -1

image.png

4、将/etc/passwd/中的第三字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxuser.txt文件中。

 sort -t":" -k3 -n /etc/passwd |tail -10 | tr [a-z] [A-Z] >> /tmp/maxuser.txt

image.png

5、取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。

ifconfig wlan0 | egrep -o "inet[^0-9]{1,}([0-9]{1,3}.)+" | cut -d":" -f2
ifconfig wlan0 | head -2 |tail -1 |cut -d":" -f2 | cut -d" " -f1

image.png

6、列出/etc目录下所有以.conf.结尾的文件,并将其名字转换为大写后保存至/tmp/etc.conf文件中

find /etc/ -name "*.conf" -exec basename {} \; | tr [a-z] [A-Z] > /tmp/etc.conf

7、显示/var目录下一级目录或文件的总个数

ls /var/ | wc -l   (centos6)
ls -d  /var/  | wc -l  (centos7)

image.png

8、取出/etc/group文件中第三个字段数值最小的10个组的名字

sort -t":" -k3 -n /etc/group | head -10 | cut -d":" -f1

image.png

9、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中

cat /etc/fstab /etc/issue > /tmp/etc.test

10、总结描述用户和组管理类命令的使用方法并完成以下练习:

    (1)、创建组distro,其GID为2016;

groupadd -g 2016 distro

    (2)、创建用户mandriva,其ID号为1005,;基本组为distro;

useradd -u 1005 -g distro mandriva

    (3)、创建用户mageia,其ID号为1100,家目录为/home/linux;

useradd -u 1100 -d /home/linux mageia

    (4)、给用户mageia添加密码,密码为mageedu;

passwd mageia

    (5)、删除mandriva,但保留其家目录;

userdel mandriva

    (6)、创建用户slackware,其ID号为2002,基本组为distro,附件组peguin;

groupadd peguin
useradd -u 2002 -g distro -G peguin slackware

    (7)、修改slackware的默认shell为/bin/tcsh;

usermod -s /bin/tcsh slackware

    (8)、为用户slackware新增附加组admins;

groupadd admins
usermod -a -G admins slackware

用户和组管理类命令

(一)、创建

useradd  建立用户帐号

-c<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。
-d<登入目录>  指定用户登入时的启始目录。
-D  变更预设值.
-e<有效期限>  指定帐号的有效期限。
-f<缓冲天数>  指定在密码过期后多少天即关闭该帐号。
-g<群组>  指定用户所属的群组。
-G<群组>  指定用户所属的附加群组。
-m  自动建立用户的登入目录。
-M  不要自动建立用户的登入目录。
-n  取消建立以用户名称为名的群组.
-r  建立系统帐号。
-s<shell>   指定用户登入后所使用的shell。
-u<uid>  指定用户ID。

groupadd  用于添加组账号

-f,--force 如果指定的组已经存在,此选项将失明了仅以成功状态退出。当与-g一起使用,并且指定的GID_MIN已经存在时,选择另一个唯一的GID(即-g关闭)。
-g,--gid GID 这个值必须是唯一的,除非使用-o选项。但必须是非负的。默认值是使用大于或等于GID_MIN的最小值,并且大于每个其他组。
-K,--key KEY=VALUE 重写/etc/login.defs默认值(GID_MIN,GID_MAX和其他)。可以指定多个K选项。示例:-K GID_MIN=100 –KGID_MAX=499。注意:-K GID_MIN=10,GID_MAX=499不能工作。
-o,--non-unique 此选项允许添加一个非唯一的GID值。
-p,--password PASSWORD 为新组使用此加密过的密码。默认为禁用密码。注意:不推荐使用这个选项,因为密码(或加密过的密码)会被用户通过列出这个过程而看到。您应该确保密码符合系统的密码政策。
-r,--system 创建一个系统组。新的系统组数字标识符在SYS_GID_MIN到SYS_GID_MAX范围内选择,定义在login.defs中而不是GID_MIN到GID_MAX。
-R,--root CHROOT_DIR 将修改应用到CHROOT_DIR目录,并使用配置


(二)、修改

usermod  修改用户帐号的各项设定


  • -c<备注>  修改用户帐号的备注文字。
    -d登入目录>  修改用户登入时的目录。
    -e<有效期限>  修改帐号的有效期限。
    -f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。
    -g<群组>  修改用户所属的群组。
    -G<群组>  修改用户所属的附加群组。
    -l<帐号名称>  修改用户帐号名称。
    -L  锁定用户密码,使密码无效。
    -s<shell>  修改用户登入后所使用的shell。
    -u<uid>  修改用户ID。
    -U  解除密码锁定

groupmod  更改群组识别码或名称。


  • -g <群组识别码>  设置欲使用的群组识别码。
    -o  重复使用群组识别码。
    -n <新群组名称>  设置欲使用的群组名称


(三)、删除

userdel  删除用户帐号

  • -r  删除用户登入目录以及目录中所有文件

groupdel 删除群组

groupdel 群组名称


(四)、密码

passwd  更改使用者的密码


  • -d 删除密码
    -f 强制执行
    -k 更新只能发送在过期之后
    -l 停止账号使用
    -S 显示密码信息
    -u 启用已被停止的账户
    -x 设置密码的有效期
    -g 修改群组密码
    -i 过期后停止用户账号

gpasswd 更改群组的密码

-a:添加用户到组
-d:从组删除用户
-A:指定管理员
-M:指定组成员和-A的用途差不多
-r:删除密码
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组

chage  修改密码有效期

-m   +天数  表示密码可更改的最小天数。
-M   +天数  表示密码有效(可更改)的最大天数
-E  +日期  表示在该日期之后密码失效。   如chage -E 2017-1-20  zhangsan 
-l(小写L) +用户名   可以查看用户的当前设置信息


(五)、切换

su  变更为其他使用者的身份

su 用户名  临时切换用户
su - 用户名  模拟重新登录切换用户

newgrp 切换基本组


newgrp GROUPNAME 临时切换基本组
newgrp – GROUPNAME 模拟重新登录切换基本组


(六)、查看

id  显示用户真实和有效id信息

finger 用户信息


(七)、其他

chsh  修改shell

chfn  修改finger信息

whoami   当前登录信息