Linux学习 - 用户管理和文件权限
用户管理
相关配置文件
用户信息文件
- 文件名: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
修改文件权限
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:递归修改