用户账号和组账号
Linux系统是基于用户身份对资源访问进行控制,Linux的用户账号分为以下三类:
- 超级用户:就是root用户,在所有用户中它拥有最大的权限 ,管理着普通用户,可以说你有了一台服务器的root权限,那这台服务器基本就是你的了。
- 普通用户: 一般用户,其使用系统的权限受限,可以使用root账户对其管理。
- 程序用户:也叫系统用户,保障系统运行的用户,一般不可人为登录系统。
常用的组账号一般分为两种:
- 基本组:也叫私有组,一般在创建账号时系统默认给每个账号都创建一个与自己同名的基本组。
- 附加组:也叫公共组,一般都是由管理员账户创建用来管理用户权限的。
UID和GID:
- UID:用户标识号(User IDentity)
- GID:组标识,(Group IDentity)
用户账号相关的两个文件:
- 用户账号文件/etc/passwd:保存用户名称、宿主目录、登录shell等基本信息。
上面是我截出的/etc/passwd文件的基本格式,下面我来介绍每个部分代表的内容:root:用户名称 x:密码占位符,密码保存在/etc/shadow文件内 0:用户id,UID 0:组id,GID root:注释信息 /root:用户家目录 /bin/bash:用户默认使用shell
root的UID/GID为0;程序用户的UID/GID为1~499;普通用户的UID/GID为500~60000。
- 用户账号文件/etc/shadow:保存用户的密码、账号有效期等信息。
上面是我截出的/etc/shadow文件的基本格式,下面我来介绍每个部分代表的内容:
jiang:用户名称
$6$lA9A.3a/aE$5V.E3sipR6H1bcdNg.5uQOGeS0M6NDcoqinrfMI9f3g>rWYXZHZgGyCRYZ1cRifI1/5tIy5hcX3UtGsncq2jYr1:用哈希(Hash)算法加密过的密码
18117:用户创建的日期距离1970-01-01多少天(1970-01-01是官方的Unix启动时间)
0:表示密码的最短使用期限(天)
99999:表示密码的失效时间(天)
7:表示失效前多少天提醒用户
用户操作:添加用户、修改密码、修改用户和删除用户
- 添加用户账号:useradd命令(格式:useradd...[选项]...用户名)
[选项]: -u-----------------UID -d-----------------用户的家目录 -e-----------------失效时间(天) 格式:YYYY-MM-DD(如:1990-10-11) -g-----------------基本组 -G-----------------附加组 -M----------------不创建家目录 -s-----------------shell登录(可以登录:/bin/bash;无法登录:/sbin/nologin)
设置/更改用户密码:passwd命令(格式:passwd...[选项]...用户名)
[选项]:
-d----------------------------删除密码
-l-----------------------------停止账号使用
-S(大写)---------------显示密码信息
-u---------------------------启用已被停止的账户
不加选项直接跟用户,是更改用户密码
修改用户账号的属性:usermod命令(格式:usermod...[选项]...用户名)
[选项]:
-l(小写)-----------------------修改账号名称
-L(大写)----------------------锁定用户账号
-U(大写)---------------------解锁用户账号
其它选项还有-u、-d、-e、-g、-G、-s的含义与useradd命令相同
删除用户账号:userdel命令(格式:userdel...[-r]...用户名)
添加-r选项时,表示连用户宿主目录一起删除。
补充:切换用户命令:su [-] 用户名。加“-”表示维持当前路径进入其他用户,不加“-”切换用户默认进入用户家目录。
组账号相关文件
组账号文件与用户账号文件相类似:
- /etc/group:保存组账号基本信息
- /etc/gshadow:保存组账号的密码信息
添加组账号:groupadd命令(格式:group...[-g GID]...组账号名)
添加/删除组成员:gpasswd命令(格式:gpasswd...[选项]...组账号名)
此命令也可用来设置组账号密码,不过用的极少。
选项:
-a------------------向组内添加一个用户
-d------------------从组内删除一个用户
-M-----------------定义组成员列表,以逗号“,”分隔(同时向组内添加多个成员,但会覆盖之前添加的成员)
删除组账号:groupdel命令(格式:groupdel...组账号名)
查询账号信息:
groups命令:查询用户所属的组(格式:groups...[用户名])
id命令:查询用户身份标识(格式:id...[用户名])
finger命令:查询用户账号的详细信息(格式:finger...[用户名])
w、who、users命令:查询已登录到主机的用户信息
文件目录的权限和归属:
访问权限:
- 读取r:允许查看文件内容、显示目录列表(对应数字4)
- 写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录(对应数字2)
- 可执行x:允许运行程序、切换目录(对应数字1)
归属(所有权): - 属主:拥有该文件或目录的用户账号
- 属组:拥有该文件或目录的组账号
查看文件、目录的权限和归属:
一般用ls -l 命令去查看文件、目录的权限和归属,可以在目录下直接输入“ls -l”命令查看当前目录下的子目录与文件的权限和归属,也可以直接用“ls -l 目录名/文件名”直接查看你想看的目录或文件的权限与归属。
下面我截取一个文件的信息来仔细解释每个部分所代表的含义:
-rw-------. 1 root root 1801 8月 9 19:32 anaconda-ks.cfg
将这个文件的信息进行分解:
- ; rw- ; --- ; ---. ; 1 ; root ; root ; 1801 ; 8月 9 19:32 ; anaconda-ks.cfg
-:表示文件的类型(-表示普通文件、d表示目录文件、l表示链接文件、b设备文件)
rw-:表示文件属主对该文件拥有的权限(r表示读取权限、w表示写入权限、x表示执行权限、rwx三个权限的顺序固定,-在哪个位置就表示不具备该权限)
---:表示属组对该文件拥有的权限
---:表示所有人对该文件的拥有权限
1:表示硬链接的数量
root:表示文件的属主
root:表示文件的属组
1801:表示文件大小,单位字节
8月 9 19:32 :表示文件创建时间
anaconda-ks.cfg:表示文件名
设置文件和目录的权限:
chmod命令(有两种格式,加上“-R”表示递归修改目录下所有子项的权限)
- 格式1:chmod... [u、g、o、a][+、-、=][r、w、x]....文件/目录
u、g、o、a分别表示属主、属组、其他用户、所有用户
+、-、=分别表示增加、去除、设置权限
r、w、x分别表示读取、写入、执行权限 - 格式2:chmod...nnn....文件/目录(这种格式比第一种更方便快捷,推荐用这种格式)
n、n、n为三个八进制数,第一个n表示属主权限,第二个表示属组权限,第三个表示所有人的权限
n为每个权限对应数字的和,只有读取权限则n=4,拥有读写权限则n=6,拥有所有权限则n=7,没有权限则n=0
设置文件和目录的归属:
chown命令(加上“-R”递归修改目录下所有子项的归属)
格式:chown...属主[:属组]...文件或目录
权限掩码umask:
umask的作用:
控制新建的文件或目录的权限
默认权限去除umask的权限就为新建的文件或目录的权限
umask设置:命令“umask... nnn”,三个n与chmod命令的相同
umask查看:命令“umask”,直接输入“umask”可以查看当前的权限掩码
原文地址:https://blog.51cto.com/14449541/2430539