1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。
思路:
首先使用 who
查看当前系统上所有已经登录的用户,然后用 cut
或 awk
截取用户名,最后使用 sort
或 unqi
去除重复信息。
命令:
who | cut -d' ' -f1 | sort -u
或 who | awk '{print $1}' | uniq
演示:
lc@Archlc [09:49:05] {~}
–>$ who
lc pts/0 Feb 25 09:03 (:0)
lc pts/1 Feb 25 09:03 (:0)
lc pts/2 Feb 25 09:03 (:0)
lc pts/3 Feb 25 09:37 (:0)
lc pts/5 Feb 25 09:41 (:0)
lc@Archlc [09:54:33] {~}
–>$ who | cut -d’ ‘ -f1 | sort -u
lc
lc@Archlc [09:54:53] {~}
–>$ who | awk ‘{print $1}’ | uniq
lc
2、取出最后登录到当前系统的用户的相关信息。
思路:
首先使用 who
查看当前系统上所有已经登录的用户,然后使用 tail
,cut
或者 awk
取出最后一个用户的用户名,最后再使用 id
来查看通过 xargs
或命令行引用传递的结果,这样便可以查看该用户的详细信息。
命令:
who | cut -d' ' -f1| tail -1 | xargs id
或者 id $(who | awk '{print $1}' | tail -1 )
演示:
lc@Archlc [10:03:08] {~}
–>$ who
lc pts/0 Feb 25 09:03 (:0)
lc pts/1 Feb 25 09:03 (:0)
lc pts/2 Feb 25 09:03 (:0)
lc pts/3 Feb 25 09:37 (:0)
lc pts/5 Feb 25 09:41 (:0)
lc@Archlc [10:03:28] {~}
–>$ who | cut -d’ ‘ -f1| tail -1 | xargs id
uid=1000(lc) gid=100(users) groups=100(users),10(wheel),91(video),994(docker),56(bumblebee),150(wireshark)
lc@Archlc [10:03:30] {~}
–>$ id $(who | awk ‘{print $1}’ | tail -1 )
uid=1000(lc) gid=100(users) groups=100(users),10(wheel),91(video),994(docker),56(bumblebee),150(wireshark)
3、取出当前系统上被用户当作其默认shell的最多的那个shell。
思路:
首先取出 /etc/passwd
文件中有关 shell 信息的行,再统计最多的那个 shell。
命令:
cat /etc/passwd | cut -d: -f7 | uniq -c | sort -n | tail -1 | cut -d' ' -f7
或 cat /etc/passwd | cut -d: -f7 | uniq -c | sort -n | tail -1 | awk '{print $2}'
演示:
lc@Archlc [10:10:10] {~}
–>$ cat /etc/passwd | cut -d: -f7 | uniq -c | sort -n | tail -1 | awk ‘{print $2}’
/usr/bin/nologin
lc@Archlc [10:12:12] {~}
–>$ cat /etc/passwd | cut -d: -f7 | uniq -c | sort -n | tail -1 | cut -d’ ‘ -f7
/usr/bin/nologin
4、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。
思路:
使用 sort
排序取出相关的信息,接着用 tail
取出最后 10 个,使用 tr
转换大小写,再使用重定向保存信息。
命令:
sort -t: -k3 -n /etc/passwd | tail -10 > /tmp/maxusers.txt
演示:
lc@Archlc [10:27:55] {~}
–>$ sort -t: -k3 -n /etc/passwd | tail -10 > /tmp/maxusers.txt
lc@Archlc [10:29:18] {~}
–>$ cat /tmp/maxusers.txt
systemd-network:x:193:193:systemd-network:/:/usr/bin/nologin
systemd-bus-proxy:x:194:194:systemd-bus-proxy:/:/usr/bin/nologin
systemd-resolve:x:195:195:systemd-resolve:/:/usr/bin/nologin
dnsmasq:x:993:993:dnsmasq daemon:/:/sbin/nologin
git:x:995:995:git daemon user:/:/bin/bash
sddm:x:996:996:Simple Desktop Display Manager:/var/lib/sddm:/usr/bin/
systemd-coredump:x:997:997:systemd Core Dumper:/:/sbin/nologin
systemd-journal-remote:x:998:998:systemd Journal Remote:/:/sbin/nolog
systemd-journal-upload:x:999:999:systemd Journal Upload:/:/sbin/nolog
lc:x:1000:100::/home/lc:/bin/bash
5、取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。
思路:
使用 ifconfig
或者 ip
找出网卡相关的信息,再使用 grep
,awk
取出 ip 地址。
命令:
ifconfig | grep -w inet | awk '{ print $2}'
或 ip a s | grep -w inet | awk '{ print $2}'
演示:
lc@Archlc [10:29:23] {~}
–>$ ip a s | grep -w inet | awk ‘{ print $2}’
127.0.0.1/8
223.129.46.238/24
192.168.12.1/24
172.17.0.1/16
lc@Archlc [10:34:34] {~}
–>$ ifconfig | grep -w inet | awk ‘{ print $2}’
192.168.12.1
172.17.0.1
223.129.46.238
127.0.0.1
6、列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中。
思路:
使用 globbing 机制找到所需的文件名,再使用 tr
转换大小写,再使用重定向保存信息。
命令:
cd /etc/ && ls *.conf | tr 'a-z' 'A-Z' >/tmp/etc.conf
演示:
lc@Archlc [10:47:35] {~}
–>$ cd /etc/ && ls *.conf | tr ‘a-z’ ‘A-Z’ >/tmp/etc.conf
lc@Archlc [10:47:44] {/etc}
–>$ cat /tmp/etc.conf
APPSTREAM.CONF
CREATE_AP.CONF
DHCPCD.CONF
DNSMASQ.CONF
FUSE.CONF
GAI.CONF
HEALTHD.CONF
HOST.CONF
KRB5.CONF
LD.SO.CONF
LIBAO.CONF
LOGROTATE.CONF
MAKEPKG.CONF
MAN_DB.CONF
MDADM.CONF
MENTOHUST.CONF
MKE2FS.CONF
MKINITCPIO.CONF
MTOOLS.CONF
NSCD.CONF
NSSWITCH.CONF
PACMAN.CONF
REQUEST-KEY.CONF
RESOLV.CONF
RESOLVCONF.CONF
RSYNCD.CONF
SDDM.CONF
SENSORS3.CONF
SIGNOND.CONF
SLP.CONF
TS.CONF
UPDATEDB.CONF
VCONSOLDE.CONF
YP.CONF
7、显示/var目录下一级子目录或文件的总个数。
思路:
首先使用 ls
的 -A
选项将多余的信息去掉,再使用 wc
来统计总个数。
命令:
ls -A /var/ | wc -l
演示:
lc@Archlc [10:56:42] {~}
–>$ ls -A /var
.updated cache db empty games lib local lock log mail opt run spool tmp yp
lc@Archlc [10:56:55] {~}
–>$ ls -A /var | wc -l
15
8、取出/etc/group文件中第三个字段数值最小的10个组的名字。
思路:
首先使用 sort
进行排序,再用 head
取出前 10 个,最后用 cut
或 awk
取出组的名字。
命令:
sort -t: -k3 -n /etc/group | head -10 | cut -d: -f1
或 sort -t: -k3 -nr /etc/group | tail -10 | awk 'BEGIN {FS = ":"} {print $1}'
演示:
lc@Archlc [11:06:11] {~}
–>$ sort -t: -k3 -n /etc/group | head -10 | cut -d: -f1
root
bin
daemon
sys
adm
tty
disk
lp
mem
kmem
lc@Archlc [11:06:42] {~}
–>$ sort -t: -k3 -nr /etc/group | tail -10 | awk ‘BEGIN {FS = “:”} {print $1}’
kmem
mem
lp
disk
tty
adm
sys
daemon
bin
root
9、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。
思路:
使用 cat
和重定向即可。
命令:
cat /etc/{fstab,issue} > /tmp/etc.test
演示:
lc@Archlc [11:09:42] {~}
–>$ cat /etc/{fstab,issue} > /tmp/etc.test
lc@Archlc [11:10:09] {~}
–>$ cat /tmp/etc.test
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
#Entry for /dev/sdb1 :
#UUID=09b9104e-7ebb-4704-a73f-4a952a2d2642 / ext4 rw,relatime,data=ordered 0 1
UUID=09b9104e-7ebb-4704-a73f-4a952a2d2642 / ext4 rw,defaults 0 1
##Entry for /dev/sda2 :
# UUID=72C6C9DCC6C9A129 /media/WIN10 ntfs-3g defaults,rw,nosuid,nodev,locale=C 0 0
##Entry for /dev/sda1 :
# UUID=AED2A7BED2A78963 /media/WINBoot ntfs defaults,nls=utf8,umask=0222 0 0
Arch Linux \r (\l)
10、请总结描述用户和组管理类命令的使用方法并完成以下练习:
(1)、创建组distro,其GID为2016;
(2)、创建用户mandriva, 其ID号为1005;基本组为distro;
(3)、创建用户mageia,其ID号为1100,家目录为/home/linux;
(4)、给用户mageia添加密码,密码为mageedu;
(5)、删除mandriva,但保留其家目录;
(6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
(7)、修改slackware的默认shell为/bin/tcsh;
(8)、为用户slackware新增附加组admins;
用户和组管理类命令主要有:
useradd 命令
描述: 使用它来创建用户
语法: useradd [OPTION] 登陆名
常用选项:
-u, –uid UID 指定 UID
-g, –gid GROUP 指定基本组 ID,这个组必须实现存在
-G, –groups GROUP1[,GROUPS]… 指明用户的附加组
-c. –comment COMMENT 指明注释信息
-d, –home HOME_DIR 指定用户的家目录:通过复制 /etc/skel 此目录并重命名来实现,指定的家目录路径如果实现存在,则不会为用户复制初始化文件
-s, –shell SHELL 指明用户的默认 shell,所有可用的 shell 列表可在 /etc/shells 中
-r, –system 创建系统用户
-M 不创建用户的家目录
-f –inactive INACTIVE 密码过期后,账户被彻底禁用前的天数 0 立即禁用 -1 禁用此功能
相关内容:
创建用户时的默认选项定义在 /etc/login.def
useradd -D 显示创建用户的默认配置
useradd -D [OPTION] 修改默认的选项 , 它更改的是 /etc/default/useradd
usermod 命令
描述: 修改用户属性
语法: usermod [OPTION] 登陆名
常用选项:
-u, –uid UID 修改用户的 ID 为新的 UID
-g, –gid GID 修改用户的基本组
-G –groups GROUPS 修改用户所属的附加组:原来的附加组会被覆盖
-a –append 只与 -G 一同使用,为用户追加新的附加组
-c. –comment COMMENT 修改注释信息
-d, –home HOME_DIR 修改用户的家目录:用户原有的文件不会被转移
-m –move-home 只与 -d 一同使用,用于将原来的家目录移动为新的家目录
-l –login NEW_LOGIN 修改用户名
-s –shell SHELL 修改用户的默认 shell
-L –lock 锁定用户密码,即在用户原来的密码字符串之前添加一个 ! 号
-U –unlock 解锁用户的密码
userdel 命令
描述: 删除用户
语法: userdel [OPTION] 用户名
常用选项:
-r 删除用户时一并删除其家目录
groupadd 命令
描述: 添加组
语法: groupadd [OPTION] group_name
常用选项:
-g GID 指定 GID 默认是上一个组的 GID+1
-r 创建系统组:
groupmod
描述: 修改组属性
语法: groupmod [OPTION] GROUP
常用选项:
-g GID 修改 GID
-n new_name 修改组名
groupdel 命令:
描述: 删除组
语法: groupdel [OPTION] GROUP
练习的演示
[root@47d523181d25 /]# groupadd -g 2016 distro # 第 1 小题
[root@47d523181d25 /]# tail -1 /etc/group
distro:x:2016:
[root@47d523181d25 /]# useradd -u 1005 -g distro mandriva # 第 2 小题
[root@47d523181d25 /]# tail -1 /etc/passwd
mandriva:x:1005:2016::/home/mandriva:/bin/bash
[root@47d523181d25 /]# useradd -u 1100 -d /home/linux mageia # 第 3 小题
[root@47d523181d25 /]# tail -1 /etc/passwd
mageia:x:1100:1100::/home/linux:/bin/bash
[root@47d523181d25 /]# echo “mageedu” | passwd –stdin mageia &> /dev/null # 第 4 小题
[root@47d523181d25 /]# userdel mandriva # 第 5 小题
[root@47d523181d25 /]# ls -al /home/mandriva/
total 12
drwx—— 2 1005 distro 62 Feb 25 03:23 .
drwxr-xr-x 6 root root 61 Feb 25 03:24 ..
-rw-r–r– 1 1005 distro 18 Dec 6 23:19 .bash_logout
-rw-r–r– 1 1005 distro 193 Dec 6 23:19 .bash_profile
-rw-r–r– 1 1005 distro 231 Dec 6 23:19 .bashrc
[root@47d523181d25 /]# groupadd peguin # 第 6 小题
[root@47d523181d25 /]# useradd -u 2002 -g distro -G peguin slackware
[root@47d523181d25 /]# id slackware
uid=2002(slackware) gid=2016(distro) groups=2016(distro),2017(peguin)
[root@47d523181d25 /]# usermod -s /bin/tcsh slackware # 第 7 小题
[root@47d523181d25 /]# tail -1 /etc/passwd
slackware:x:2002:2016::/home/slackware:/bin/tcsh
[root@47d523181d25 /]# groupadd admins # 第 8 小题
[root@47d523181d25 /]# usermod -aG admins slackware
原创文章,作者:FSSlc,如若转载,请注明出处:http://www.178linux.com/69996
评论列表(1条)
写的很棒!!!