Linux学习 - 用户管理和文件权限

OrzMiku / 2023-08-20 / 原文

用户管理

相关配置文件

用户信息文件

  • 文件名:passwd
  • 所在目录:/etc
  • 用途:存放用户信息

用户信息存放在用户信息文件中,用户信息文件位于/etc/passwd,是一个文本文件。

可以使用cat,less,head等等命令来查看文件内容,也可以使用vim等编辑器进行编辑。(只有root用户可以编辑)

每行记录一个账号信息,每行由7个部分组成,用分割各个部分,格式如下:

用户登录名 : 密码 :用户ID :所属组ID :用户描述 :用户主目录 :登录shell

eg:
(现在的linux已经不会在passwd文件中显示密码了,所以密码的位置显示了x)
root:x:0:0:root:/root:/bin/bash
orzmiku:x:1000:1000:orzmiku:/home/orzmiku:/bin/bash

加密口令文件

  • 文件名:shadow
  • 所在目录:/etc
  • 用途:记录口令信息

shadow文件中的格式类似于passwd,每行记录都记录了一个用户的口令信息,每条记录分为9项,之间使用冒号(:)分割。这9项按先后顺序分别是:

(1)用户登录名
(2)加密密码
(3)上次更改密码时间距1970年1月1日的天数
(4)密码更改后不可以再次更改的天数
(5)密码更改后必须再次更改的天数(即密码的有效期)
(6)密码失效前多少天警告用户
(7)密码失效后距账号被查封的天数
(8)账号被查封时间距1970年1月1日的天数
(9)保留字段

用户组信息文件

在Linux中,每个用户至少属于一个组,这些组的具体信息保存在/etc/group文件中。group文件中每行一个用户组信息,格式如下:

组名:组密码:组ID:成员列表
每个字段含义:
(1)用户组名
(2)组密码:不常用;用于临时切换用户的所属组。
(3)组ID:用于系统内部标识组
(4)成员列表:属于该组的用户名列表,每个用户名使用“,”分割

用户管理

创建用户 - useradd

useradd [选项] 用户登录名

常用选项有:
(1)-c str 注释信息,指定passwd文件中的第5项,可以是任意字符
(2)-m 如果用户主目录不存在则创建
(3)-d dir 指定用户主目录,若不指定默认为:/home/用户名;一般和-m配合使用
(4)-g group 指定用户的初始化组,若不指定默认为和用户同名的组,若同名用户组不存在,则创建;若指定了则指定组必须存在
(5)-G groups 指定用户所属普通组列表,每个组名用逗号隔开。
(6)-s shell 指定用户的登录shell程序的完整路径
注:新创建的用户是不能登录的,需要通过passwd命令为新用户设置登录密码才能登录。另外,不能通过useradd命令为用户指定密码。

删除用户 - userdel

userdel [-r] 用户名

功能:删除指定用户
选项:
-r 再删除用户的同时删除其用户主目录及邮箱(如果有)。

修改用户 - usermod

usermod  [选项] 用户名

功能:修改指定用户的用户信息项,如:用户主目录、初始化组等。其选项同useradd命名。

用户组管理

添加用户组 - groupadd

groupadd 组名

功能:为系统添加新的用户组

删除用户组 - groupdel

groupdel	组名

功能:删除指定用户组,注意被删除的用户组不能包含任何用户。

其它

用户身份切换 - su

su [-] [用户名]

功能:临时切换身份。

  • 切换用户时同上切换用户环境

查询用户信息 - id

id [用户名]

功能:查询指定用户信息,包括用户ID、初始化组及ID、所属其它用户组列表。默认查询当前用户信息

权限管理

文件所有者

Linux下,文件谁创建谁拥有。创建者是文件的所有者,可以修改该文件的权限。文件的所有者并非一成不变,root用户(仅root用户)可以修改文件的所有者。

文件所属组

为了方便文件权限的分配,Linux将文件归于文件主外,还将文件归于一个特定的组,这个组成为文件的所属组,这个组并没有特殊的功能,只是为了判别组内用户对文件是否用于相应的存取权限。对默认所属组的分配也与创建者有关,默认为创建者(文件主)的初始化组。

文件权限

权限分配

Linux中,每个文件对不同的用户分配的权限不同。Linux针对文件权限将用户分为三类:文件主、所属组成员及其他人,然后再针对这三类人分配权限,便基本可以达到不同用户对同一文件具有不同的权限的目的。

权限种类

权限有三种:读(read),写(write),执行和查询(execute)

对于文件

  • 读权限(r)允许具有该权限的用户使用命令读取(获取)文件的内容,如cat、grep。
  • 写权限(w)允许具有该权限的用户修改文件的内容,如通过重定向向文件追加内容。并不代表可以修改文件名,删除文件等等,这个需要看当前目录的权限。
  • 执行权限(x)允许具有该权限的用户将该文件看做一个可执行程序去执行。

对于目录

  • 读权限(r)允许具有该权限的用户使用命令获取目录中的文件列表,如ls。
  • 写权限(w)允许具有该权限的用户在该目录中新建、删除文件和目录、更改文件名。
  • 执行权限(x)允许具有该权限的用户查询目录信息,及使用cd切换该目录为当前目录。

注意:读写权限对root不生效。

权限标识

可以用字母rwx标识,也可以用八进制数标识

  • 读 - r - 4

  • 写 - w - 2

  • 执行 - x -1

文件权限相关命令

查看文件权限

ls -l
-rw-rw-r--   1 orzmiku orzmiku   2587 Oct  5 19:01 _config.yml

image-20221006091427263

修改文件权限

chmod 权限模式 文件类别
  • 按权限模式修改文件列表中文的权限,只有文件主和root才可以修改文件权限。

  • 权限模式有两种形式:字符形式和数字形式。

语法

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

参数说明

mode : 权限设定字串,格式如下 :

[ugoa...][[+-=][rwxX]...][,...]

其中:

  • u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
  • + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
  • r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。

其他参数说明:

  • -c : 若该文件权限确实已经更改,才显示其更改动作
  • -f : 若该文件权限无法被更改也不要显示错误讯息
  • -v : 显示权限变更的详细资料
  • -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
  • --help : 显示辅助说明
  • --version : 显示版本

例子

chmod ugo+r config.yml
chmod a+r config.yml
chmod ug+w,o-w config.yml data.yml
chmod -R a+r dir*
chmod -R 755 *
chmod u=rwx config.yml

更改文件所有者

chown [-R] [user][.group] 文件列表

chown只有root用户才能执行,可以修改文件的所有者和所属组。

-R:递归修改

更改文件所属组

chgrp [-R] group 文件列表

修改指定文件的所属组为指定用户组。

-R:递归修改