Linux异常 “id: cannot find name for user ID 1000”chmod

1,805 阅读2分钟

详细异常

id: cannot find name for user ID 1000
id: cannot find name for group ID 1000
id: cannot find name for user ID 1000

原因

因为该用户没有权限读取/etc/passwd/etc/group

解决办法

赋予用户读取/etc/passwd/etc/group的权限。

chmod o+r /etc/passwd
chmod o+r /etc/group

解读chmod命令

语法

chmod [-cfvR] [--help] [--version] mode file

[-cfvR]

  • -c 若文件权限被更改,输出更改信息
  • -f 当文件模式不能被更改,不会输出信息通知用户
  • -v 无论是否修改成功,都会输出每个文件的信息
  • -R 递归遍历子目录,即权限变动应用到目录下所有文件和子目录 慎用

mode

mode的构成

[ugoa] [+-=] [rwx] 

[ugoa]

  • -u 文件的拥有者
  • -g 文件的拥护者所属的群体,即同一个用户组
  • -o 除了ug包含的其他用户
  • -a all 包含前三者

[+-=]

    • 增加权限
    • 取消权限
  • = 唯一设定权限

[rwx]

  • -r 可读取
  • -w 可写入
  • -x 可执行

示例

chmod o+r /etc/passwd

o代表其他用户,+ 代表增加权限,r 代表可读取,所以该命令作用是赋予其他用户读取/etc/passwd的权限。

查看文件权限

命令ll即可查看文件的权限,如:

# ll
# 输出
-rwxr--r-- 1 root root  965 May 30 11:03 kill_tomcat.sh
-rwxr--r-- 1 root root 1863 May 30 11:31 releaseNew.sh

字符权限表达式

-rwxr--r-- 权限表达式一共是10位。

  • 第1位,代表的是文件类型;
  • 第2-4位,代表的是文件拥有者的权限;
  • 第5-7位,代表的是用户组拥有的权限;
  • 第8-10位,达标的是其他用户拥有的权限;

示例

当前使用用户是rootkill_tomcat.sh的权限是-rwxr--r--。第一位是-没有标明文件类型。2-5位为rwx,代表root用户拥有读写执行权限。5-7位为r--,代表root用户所在的用户组拥有读取权限。8-10位为r--,代表除了root用户组内的其他用户拥有读取权限。

三位八进制表达式

我们也可以使用3位八进制数字(4 2 1)之和的形式来表示权限,其中4代表高位,2代表中位,1代表低位。那么rwxr--r--改为数字表示就是744。7为r(4)w(2)x(1)4+2+1之和,4为r(4)-(0)-(0)4+0+0之和。

chmod o+x /etc/passwd也可以改为chmod 141 /etc/passwd