Linux Shell学习笔记5:理解Linux文件权限

1、用户账户

  • 用户ID:User ID,缩写为UID,一个数值。权限是通过创建用户时分配的UID来跟踪的。
  • 登录名name:用户用来登录系统的最长8字符的字符串。
  • 用户密码

(1)root账户
Linux系统的管理员,通常分配给它的UID是0。

(2)系统账户
Linux系统会为各种各样的功能创建不同的用户帐号,这些账户并不是真的用户。
是系统上运行的各种服务进程访问资源用的特殊账户。
所有运行在后台的服务都需要一个系统账户登录到Linux系统上。
Linux为系统账户预留了500以下的UID值。
为普通用户创建账户时,大多数Linux系统会将500起始的第一个可用UID分配给这个账户。

Linux系统使用特定的文件和工具来跟踪和管理系统上的用户账户。
(3)/etc/passwd文件
文件将用户的登录名匹配到对应的UID值。
/etc/passwd文件包含的子段信息:

  • 用户登录名
  • 用户密码
  • 用户账户的UID
  • 用户账户的GID
  • 用户账户的文本描述(称为备注字段)
  • 用户HOME目录的位置
  • 用户的默认shell

(4)etc/shadow文件
保存用户密码的文件,只有特定的程序才能访问该文件。
只有root用户才能访问该文件。
文件为系统上每个用户账户保存一条记录,记录内容如下:

  • 与etc/passwd文件中的登录名对应的登录名;
  • 加密后的密码;
  • 自1970年1月1日(上次修改密码的日期)到当天的天数;
  • 多少天后才能更改密码;
  • 多少天后必须更改密码;
  • 密码过期前提前多少天提醒用户更改密码;
  • 密码过期后多少天禁用用户账户;
  • 用户账户被禁用的日期,用自1970年1月1日到当天的天数表示;
  • 预留字段,给将来使用。

2、添加新用户:useradd命令
(1)查看Linux系统的系统默认值
[root@bogon yl2isoft]# /usr/sbin/useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@bogon yl2isoft]#
这些默认值的意思是:

  • 新用户会被添加到GID为100的公共组;
  • 新用户的HOME目录将会位于/home/loginnane;
  • 新用户账户密码在过期后不会被禁用;
  • 新用户账户未被设置为某个日期后就过期;
  • 新用户账户将bash shell作为默认shell;
  • 系统会将/etc/skel目录下的内容复制到用户的HOME目录下;
  • 系统为该用户账户在mail目录下创建一个用于接收邮件的文件。

/etc/skel目录下的文件
useradd命令允许管理员创建一份默认的HOME目录配置,然后把它作为创建新用户HOME目录的模板。这样,就能自动在每个新用户的HOME目录里放置默认的系统文件。
[root@bogon yl2isoft]# ls -al /etc/skel
总用量 24
drwxr-xr-x. 3 root root 74 8月 29 18:21 .
drwxr-xr-x. 137 root root 8192 10月 2 07:22 ..
-rw-r–r–. 1 root root 18 3月 6 2015 .bash_logout
-rw-r–r–. 1 root root 193 3月 6 2015 .bash_profile
-rw-r–r–. 1 root root 231 3月 6 2015 .bashrc
drwxr-xr-x. 4 root root 37 8月 29 18:19 .mozilla

(2)创建一个新用户账户
[root@bogon yl2isoft]# useradd -m test
[root@bogon yl2isoft]# ls -al /home/test
总用量 12
drwx——. 3 test test 74 10月 2 07:52 .
drwxr-xr-x. 5 root root 45 10月 2 07:52 ..
-rw-r–r–. 1 test test 18 3月 6 2015 .bash_logout
-rw-r–r–. 1 test test 193 3月 6 2015 .bash_profile
-rw-r–r–. 1 test test 231 3月 6 2015 .bashrc
drwxr-xr-x. 4 test test 37 8月 29 18:19 .mozilla
-m参数会创建HOME目录。
useradd命令创建了新的HOME目录,且将/etc/skel目录中的文件复制过来。

(3)修改系统默认的新用户值
useradd -D -s /bin/tsch
-s参数更改默认登录shell。

3、修改用户
(1)usermod
修改用户账户的字段,并可以指定主要组以及附加组的所属关系。
用来修改/etc/passwd文件中的大部分字段,只需要用与想修改的字段对应的命令行参数就可以了。

  • -c 修改备注字段
  • -e 修改过期日期
  • -g 修改默认的登录组
  • -l 修改用户账户的登录名
  • -L 锁定用户
  • -p 修改账户的密码
  • -U 解除锁定

(2)passwd 和 chpasswd 改变用户密码
passwd test(passwd命令只能改变自己的密码)
chpasswd < users.txt
chpasswd命令能为系统中的大量用户修改密码,该命令从标准输入自动读取登录名和密码度对(由冒号分隔)列表,给密码加密,然后为用户设置。

(3)chsh、chfn和chage 专门用来修改特定的账户信息

chsh命令

快速修改默认的用户登录shell

chfn命令

提供了在/etc/passwd文件的备注字段中存储信息的标准方法。
chfn命令会将Unix的finger命令用到的信息存进备注字段,而不是简单地存入一些随即文件,或是将备注字段留空。
finger 用来简单地查看Linux系统上的用户信息。
出于安全性的考虑,很多Linux系统管理员会在系统上禁用finger命令。

chage命令
用来管理用户账户的有效期

  • -d 设置上次修改密码到现在的天数
  • -E 设置密码过期的日期
  • -I 设置密码过期到锁定账户的天数
  • -m 设置修改密码之间最少要多少天
  • -W 设置密码过期前多久开始出现提醒信息

chage命令的日期值使用以下中的任一种:
–YYYY-MM-DD格式的日期;
–代表从1970年1月1日起到该日期天数的数值。

4、删除用户
/usr/sbin/userdel -r test
默认情况下,userdel命令只会删除/etc/passwd文件中的用户信息,而不会删除系统中属于该账户的任何文件,如果加上-r参数,就会删除用户的HOME目录以及mail目录,但是,系统上仍可能存在归已删除用户所有的其他文件。

5、组
唯一的GID,唯一的组名。

etc/group文件
包含系统上用到的每个组的信息。
系统账户用的组通常会分配低于500的GID值,而用户组的GID则会从500开始分配。
etc/group文件有4个字段:

  • 组名
  • 组密码
  • GID
  • 属于该组的用户列表

6、创建新组
/usr/sbin/groupadd tg
/usr/sbin/usermod -G tg test(将test用户添加到tg组)
tail /etc/group (查看组tg信息)
-G参数将该组添加到用户的属组的列表里,而不会影响默认组。
如果使用-g参数,指定的组名会替换掉该账户的默认组。

7、修改组
groupmod 可以修改组的GID(-g参数)或组名(-n参数)
[root@bogon yl2isoft]# /usr/sbin/groupmod -n ntg tg
[root@bogon yl2isoft]# tail /etc/group
随意改变组名不会影响文件的安全性,因为所有文件的安全权限都是基于GID的。

8、文件权限
[root@bogon yl2isoft]# ls -l
总用量 0
drwxrwxr-x. 2 yl2isoft yl2isoft 85 9月 29 21:41 mytestdir
drwxrwxr-x. 2 yl2isoft yl2isoft 16 9月 20 18:09 mytestdir1
第一个字段的含义:
(1)第一个字符的含义:

  • -代表文件
  • d代表目录
  • l代表链接
  • c代表字符型设备
  • b代表块设备
  • n代表网络设备

之后的3组三字符的码,每一组三字符码表示三重访问权限:

  • r代表对象是可读的
  • w代表对象是可写的
  • x代表对象是可执行的
  • 如果没有某种权限,在该权限位会出现单破折线

这3组三字符码分别对应对象的3个安全级别:

  • 对象的属主
  • 对象的属组
  • 系统的其他用户

9、设置用户创建文件和目录的默认权限。
umask 显示这个默认权限
umask 026 设置这个默认权限
touch nf touch命令用分配给我的用户账户的默认权限创建nf文件

[yl2isoft@bogon ~]$ umask
0002
第一位代表了一项特别的安全特性,叫做粘着位(stiky bit)。
后3位表示文件或者目录的umask的八进制值。

八进制模式的安全性设置
先获取这3组rwx权限的值,然后将其转换成3位二进制值来表示一个八进制值。
Linux Shell学习笔记5:理解Linux文件权限_第1张图片
umask值只是个掩码。若权限为644,则掩码为022,那么umask设置权限时使用umask 022。
umask值通常会在/etc/profile启动文件中设置。

10、改变安全性设置
chmod 用来改变文件和目录的安全性设置。
chmod格式
chmod options mode file
mode参数后可跟个八进制模式或符号模式来进行安全性设置。
options取-R参数时可以让权限的改变递归地作用到文件和子目录。
可以在指定文件名时用通配符将权限的更改通过一个命令作用到多个文件上。
(1)八进制模式
[yl2isoft@bogon ~] chmod760nf[yl2isoft@bogon ] ls -l
-rwxrw—-. 1 yl2isoft yl2isoft 0 10月 2 16:44 nf
(2)符号模式格式
[ugoa…][+-=][rwxXstugo]
第一组字符定义权限作用的对象:

  • u代表用户;
  • g代表组;
  • o代表其他;
  • a代表上述所有。

第二组字符表示你想在现有权限的基础上的操作:

  • +增加权限
  • -移出权限
  • =将权限设置成后面的值

第三组字符表示作用到设置上的权限:

  • rwx 略
  • X 如果对象是目录或者它已有执行权限,赋予执行权限
  • s 运行时重新设置UID或GID
  • t 保留文件或目录
  • u 将权限设置为跟属主一样
  • g 将权限设置为跟属组一样
  • o 将权限设置为跟其他用户一样

chmod o+r nf(为其他用户添加读取权限)
chmod u-x nf(移出属主已有的执行权限)

11、改变所属关系
(1)chown命令 用来改变文件的属主
chown命令的格式
chown options owner[.group] file
chown test nf
chown test.test nf (支持同时改变属主和属组)
chown .test nf(只改变文件的默认属组)
options

  • -R参数加通配符可以递归地改变子目录和文件的所属关系。
  • -h参数可以改变该文件的所有符号链接文件的所属关系。

只有root用户能够改变文件的属主。
任何属主都可以改变文件的属组,但前提是属主必须是源和目标属组的成员。

(2)chgrp命令 用来改变文件的默认属组
chgrp test nf

12、共享文件
Linux为每个文件和目录存储了3个额外的信息位:

  • 设置用户ID(SUID):当文件被用户使用时,程序会以文件属主的权限运行;
  • 设置组ID(SGID):对文件来说,程序会以文件属组的权限运行;对目录来说,目录中创建的新文件会以目录的默认属组作为默认属组;
  • 粘着位:进程结束后文件还会在内存中。

使用SGID,能让在一个目录下创建的新文件都属于该目录的属组,也就是每个用户的组。

设置SGID
(1)使用八进制模式
它会加到标准3位八进制值之前(组成4位八进制值)
SUID/SGID/粘着位的八进制值
Linux Shell学习笔记5:理解Linux文件权限_第2张图片

(2)符号模式
chmod g+s dir

创建共享文件
/usr/sbin/groupadd shared
mkdir sharedir
chgrp shared sharedir
umask 002
cd sharedir
touch sharefile

你可能感兴趣的:(我爱归纳,Linux)