Administrator
Published on 2024-03-11 / 11 Visits
0

用户,用户组,文件权限

用户

查看

查看系统所有用户

cat /etc/passwd
getent /etc/passwd

用户组

用户可以属于多个组,但只有一个主要组。主要组通常是用户登录时所属的组,而额外的组则提供了对该用户的其他权限集合的访问。

查看

查看系统所有用户组

cat /etc/group

列出的行数据比如:root:x:0:,其中root是组名称;x为密码占位符,表示该组有一个密码,但实际上密码被加密存储在/etc/gshadow文件中;0为组的ID(GID);最后一个:后面代表属于该组的用户列表,如果后面没有内容表示没有列出任何特定于该组的用户,但是实际上,但这并不意味着没有用户属于该组;

getent group

查看当前用户所属组

groups

查看特定用户所属组

groups username

编辑

更改用户主要组

usermod -g new_primary_group username

new_primary_group替换为组名或组GID,username替换为用户名

增加用户额外的组

usermod -aG additional_group username

new_primary_group替换为组名或组GID,username替换为用户名

文件/文件夹所属用户/用户组

查看

查看(名称)

ls -l 文件名

如果是文件夹名,则显示该文件夹所有文件列表

stat -c "%U %G" 文件夹名/文件名

查看(ID)

ls -ln 文件名

将显示用户的UID和组的GID。
如果是文件夹名,则显示该文件夹所有文件列表

编辑

更改文件所有者

chown root file.txt

更改文件所有组

chgrp root file.txt

更改文件所有者和组

chown root:root file.txt

:前的是用户,:后的是组

文件/文件夹权限

权限说明

设置对应权限,对应的用户/组的所有用户才能对此文件进行对应权限的操作。

权限分为三种类型:

  • 读(r):允许查看文件内容或列出目录内容。
  • 写(w):允许修改文件或目录。
  • 执行(x):允许执行文件或搜索目录。

其中r等同于4,w等同于2,x等同于1。(用在八进制设置法)

查看

查看

ls -l 文件名

-rw-r--r--表示文件权限,分四部分查看:

  • -:表示普通文件
  • rw-:文件所有者的权限,-表示无对应权限。
  • r--:文件所属组的权限,-表示无对应权限。
  • r--:其他用户的权限,-表示无对应权限。

设置

设置(符号参数)

#给文件所有者添加执行权限
chmod u+x file

#从文件所属组移除写权限
chmod g-w file

#设置其他用户的权限为只读
chmod o=r file

#设置文件所有者拥有读写执行权限,所属组和其他用户分别拥有读和执行权限
chmod u=rwx,g=rx,o=r file

#设置文件所有者,所属者,其他用户都有执行权限;其中a可以不写
chmod a+x file
chmod +x file

u,g,o,a表示的意思:

  • u:文件所有者
  • g:文件所属组
  • o:其他用户
  • a:所有用户(u、g 和 o 的总和)

+,-,=表示的意思:

  • +:增加
  • =:赋予,与+的区别时,其他没写的权限都会被移除
  • -:移除

设置(八进制参数)

#设置文件所有者拥有读写执行权限(7),所属组和其他用户拥有读和执行权限(5)
chmod 755 file

#设置文件所有者拥有读写权限(6),所属组和其他用户拥有只读权限(4)
chmod 644 file

八进制法,需要传入3位数字的参数,比如755,对应的数字对应关系:

  • 第一个数字:文件所有者的权限
  • 第二个数字:所属组的权限
  • 第三个数字:其他用户的权限

数字的大小规则为通过将r/w/x相应的值相加得到,比如7表示4+3+1,即拥有读写执行三个权限。

参数不一定要是3位数的,如果只有一个,代表设置的是其他用户的权限,其他权限将移除;如果有两个,代表设置是所属组和其他用户的权限,所属用户权限将移除。

特殊

  • 如果使用的是root权限,那么即使待操作的文件不属于root和root组,且无读写执行权限,那么还是进行读,写。执行的话,比较特殊,需要至少给其他用户的执行权限才可以有权限运行(所有者和组没有不影响)。
  • 只有文件的所有者或 root 用户可以更改文件权限(即使无读写权限也不影响)。
  • 如果只有写权限,用vi命令会提示权限不足,但不影响编辑保存。
  • 对于sh脚本类,执行除了要给w权限,还需要r权限,不然会提示权限不足;真正的程序则不用给r权限。