/etc/passwd --密码文件

NAME 名称
       passwd - 密码文件


描述

      account:password:UID:GID:GECOS:directory:shell
    (帐号名称:密码:UID:GID:用户信息说明列:主文件夹:shell)
       Passwd  是个文本文件, 它包含了一个系统帐户列表, 给出每个帐户一些有用的信息,比如用户 ID,组 ID, 家目录, shell,等.
       

      这个文件是这样的:每一行都代表一个帐号,有几行就代表有几个帐号在你的系统中!不过需要特别留意的是,里面很多帐号本来就是系统正常运行所必须要的,我们可以简称为系统帐号,例如bin ,daemon ,adm ,nobody等,这些帐号请不要随意删除!!


root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

 

上面是 Mandrake 9.0 预设的几个账号,这些账号是系统在使用的呦!我们先来看一下 root 这个系统管理员这一行好了,你可以明显的看出来,每一行使用『:』分隔开,共有七个咚咚,分别是

  1. 账号名称 :就是账号名称啦! 对应 UID 的! 使用者在系统中的名字,它不能包含大写字母. 例如 root 就是预设的系统管理员的账号名称;
  2. 密码 :早期的 Unix 系统的密码是放在这个档案中的,不过由于这样一来很容易造成数据的被窃取,所以后来就将数据给他改放到 /etc/shadow 中了,这一部份等一下再说,而这里你会看到一个 x ,呵呵!别担心密码已经被移动到 shadow 这个加密过后的档案啰;
  3. UID :这个就是使用者识别码(ID)啰!通常 Linux 对于 UID 有几个限制需要说给您了解一下:
    • 0 系统管理员,所以当你要作另一个系统管理员账号时,你可以将该账号的 UID 改成 0 即可;
    • 1~499 保留给系统使用的ID,其实 1~65534 之间的账号并没有不同,也就是除了 0 之外,其它的 UID 并没有不一样,预设 500 以下给系统作为保留账号只是一个习惯。这样的好处是,以 named 为例,这个程序的预设所有人 named 的账号 UID 是 25 ,当有其它的账号同样是 25 时,很可能会造成系统的一些小问题!为了杜绝这样的问题,建议保留 500 以前的 UID 给系统吧!
    • 500~65535 给一般使用者用的!
  4. 上面这样说明可以了解了吗?是的, UID 为 0 的时候,就是 root 呦! 所以请特别留意一下你的 /etc/passwd 档案!
     
  5. GID :这个与 /etc/group 有关!其实 /etc/group 的观念与 /etc/passwd 差不多,只是他是用来规范 group 的而已!
  6. 用户信息说明列 :这个字段基本上并没有什么用途,只是用来解释这个账号的意义而已! 不过,如果您提供使用 finger 的功能时,这个字段可以提供很多的讯息呢!底下的 chfn 可以解释一下啰!
  7. 家目录主文件夹 ):这是使用者的家目录(主文件夹),以上面为例, root 的家目录在 /root ,所以当 root 登入之后,马上在的所在就是 /root 里头啦!呵呵!如果你有个账号的使用空间特别的大,你想要将该账号的家目录移动到其它的硬盘去,没有错!可以在这里进行修改呦!预设的使用者家目录在 /home/yourIDname中。 用户的 $HOME 目录。
  8.  
  9. Shell :所谓的 shell 是用来沟通人类下达的指令与硬件之间真正动作的界面!我们通常使用 /bin/bash 这个 shell 来进行指令的下达!关于 shell 的用法我们会在后面再提及的!这里比较需要注意的是,有一个 shell 可以用来替代成让账号无法登入的指令!那就是 /bin/false 这个东西!这也可以用来制作纯 pop 邮件账号者的数据呢!

 

注意
       如果你想建立用户组,他们的 GID 必须相等并且一定是在 /etc/group的一条记录, 要不然组就不存在.

 


### 命令解析:`grep "fekora" /etc/passwd | wc -lwc` 这个命令由两部分组成,通过管道 `|` 连接: 1. **`grep "fekora" /etc/passwd`**:从 `/etc/passwd` 文件中查找包含字符串 `"fekora"` 的行。 2. **`wc -lwc`**:统计输入的行数(`-l`)、单词数(`-w`)和字符数(`-c`)。 --- ### **1. 详细分解** #### **(1) `grep "fekora" /etc/passwd`** - **作用**:在 `/etc/passwd` 文件中搜索包含 `"fekora"` 的行。 - **输出示例**: ```plaintext fekora:x:1001:1001::/home/fekora:/bin/bash testfekora:x:1002:1002::/home/test:/bin/zsh ``` - 默认输出所有匹配的行(每行代表一个用户条目)。 #### **(2) `wc -lwc`** - **作用**:统计输入的行数、单词数和字符数。 - **`-l`**:统计行数(匹配的行数)。 - **`-w`**:统计单词数(以空格分隔的字段)。 - **`-c`**:统计字符数(包括字母、数字、符号等)。 - **示例输出**: ```plaintext 2 10 80 ``` - 解释: - `2`:匹配的行数(如上例中的 2 行)。 - `10`:总单词数(每行 `/etc/passwd` 条目默认有 7 个字段,用冒号 `:` 分隔)。 - `80`:总字符数(包括用户名、UID、路径等所有字符)。 --- ### **2. 关键注意事项** 1. **`/etc/passwd` 文件格式**: - 每行格式为 `用户名:密码占位符:UID:GID:描述:家目录:登录Shell`。 - 若 `"fekora"` 是用户名,通常只会匹配一行;若是描述或 Shell 中的字符串,可能匹配多行。 2. **统计的差异**: - **单词数(`-w`)**:以空格分隔的字段(但 `/etc/passwd` 用冒号 `:` 分隔,可能影响统计)。 - **字符数(`-c`)**:统计的是**字节数**(ASCII 字符与字节数相同,但 UTF-8 编码的多字节字符可能不同)。 3. **管道的作用**: - `grep` 的输出作为 `wc` 的输入,因此 `wc` 统计的是**匹配行的信息**,而非整个文件。 --- ### **3. 变体命令示例** #### **(1) 仅统计行数** ```bash grep "fekora" /etc/passwd | wc -l ``` - 输出:`2`(匹配的行数)。 #### **(2) 仅统计字符数** ```bash grep "fekora" /etc/passwd | wc -m ``` - 输出:`80`(总字符数,`-m` 明确统计字符数)。 #### **(3) 忽略大小写统计** ```bash grep -i "fekora" /etc/passwd | wc -lwc ``` - 匹配 `fekora`、`Fekora`、`FEKORA` 等变体。 #### **(4) 结合 `awk` 精确统计字段** ```bash grep "fekora" /etc/passwd | awk '{print $0}' | wc -lwc ``` - 确保统计的是整行内容(但 `/etc/passwd` 的字段分隔符是冒号,非空格)。 --- ### **4. 常见问题** 1. **`wc -c` 和 `wc -m` 的区别**? - `-c`:统计字节数(适用于 ASCII 文本)。 - `-m`:统计字符数(正确处理多字节字符,如 UTF-8)。 2. **如何统计 `"fekora"` 在文件中出现的总次数(包括重复字符串)**? ```bash grep -o "fekora" /etc/passwd | wc -l ``` - `-o`:仅输出匹配的字符串(每行多次匹配会分行显示)。 3. **如何统计匹配行的 UID 或 GID**? ```bash grep "fekora" /etc/passwd | awk -F: '{print $3}' # 提取 UID ``` 4. **为什么 `wc -w` 统计的单词数不符合预期**? - `/etc/passwd` 用冒号 `:` 分隔字段,但 `wc -w` 默认按空格分隔。建议改用 `awk` 或 `cut` 提取字段。 5. **如何统计匹配行的平均字符数**? ```bash grep "fekora" /etc/passwd | awk '{sum += length($0); count++} END {print sum/count}' ``` --- ### **5. 总结** - **命令目的**:查找 `/etc/passwd` 中包含 `"fekora"` 的行,并统计这些行的行数、单词数和字符数。 - **典型输出**:`2 10 80`(行数、单词数、字符数)。 - **关键点**: - `grep` 负责过滤匹配行。 - `wc` 负责统计输入内容的属性。 - 管道 `|` 将两部分串联,实现“先筛选后统计”。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值