Linux命令行–理解Linux文件权限(转)
2016-08-23 21:14
295 查看
6.1.1 /etc/passwd文件
/etc/passwd:包含系统用户账户列表以及每个用户的基本配置信息每个条目有七个字段,每个字段用冒号隔开
登录用户名
用户密码
用户账户的UID
用户账户的GID
用户账户的文本描述
用户HOME目录的位置
1 | rich:x:501:501:Rich Blum:/home/rich:/bin/bash |
linux系统将用户密码保存在另一个单独的文件中(称为shadow文件,位置在/etc/shadow),只有特定的程序才能访问,如root
6.1.2 /etc/shadow文件
/etc/shadow文件为系统上的每个用户账户保存了一条记录每条记录有9个段:
与/etc/passwd文件中的登录名对应的登录名
加密后的密码
自1970年1月1日(上次修改密码的日期)到当天的天数
多少天后才能更改密码
多少天后必须修改密码
密码过期前提前多少天提醒用户更改密码
密码过期后多少天禁用用户账户
用户账户被禁用的日期,用自1970年1月1日到当天的天数表示
预留字段,给将来使用
1 | rich:$1$.Ffck0ns$f1UgiyHQ25wrB/hykCn020:11627:0:99999:7::: |
6.1.3 添加新用户
命令:useradd该命令使用系统的默认值以及命令行参数来设置用户账户
可以用useradd命令加-D参数来查看Linux系统上的系统默认参数
-D 参数显示了在创建新用户是如果你不在命令行指定的话useradd命令将使用的默认值
新用户会被加到GID为100的公共组
新用户的HOME目录将会位于/home/loginname
新用户账户密码在过期后不会被禁用
新用户账户未被设置为某个日期后就过期
新用户账户将bash shell作为默认shell
系统将/etc/skel目录下的内容复制到用户的HOME目录下
系统为该用户账户在mail目录下创建一个用于接收邮件的文件
倒数第二个意思:useradd命令允许管理员创建一份默认的HOME目录配置,然后把它作为创建用户的HOME目录的模板,这样就能自动在每个新用户的HOME目录里放置默认的系统文件
系统会自动将/etc/skel目录下的这些默认文件复制到你创建的每个用户的HOME目录中
useradd命令不会创建HOME目录,加上-m命令行选项后就会创建了
1 2 3 4 5 6 7 8 9 | # /usr/sbin/useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes # |
useradd更改默认值得参数:
参数 | 描述 |
---|---|
-b | 更改默认HOME目录 |
-e | 更改默认新账户的过期日期 |
-f | 更改默认从密码过期到账户被禁用的天数 |
-g | 更改默认的组名称或GID |
-s | 更改默认的登录shell |
6.1.4 删除用户
命令 userdel
默认情况下,userdel只会删除/etc/passwd文件中的用户信息,而不会删除系统中属于该账户的任何文件-r 参数:userdel会删除用户的HOME目录以及mail目录,然而,系统上仍可能存在有归已删除用户所有的其他文件
注意:在有大量用户使用的环境中使用-r需要小心,因为你永远不知道用户是否在他的HOME目录下存放了其他用户或其他程序要用的重要文件
6.1.5 修改用户
用户账户修改工具命令 | 描述 |
---|---|
usermod | 修改用户账户的字段,并可以指定主要组以及附加组的所属关系 |
passwd | 修改已有用户的密码 |
chpasswd | 从文件中读取登录名密码对,并更新密码 |
chage | 修改密码的过期日期 |
chfn | 修改用户账户的备注信息 |
chsh | 修改用户账户的默认登录shell |
6.2 使用Linux组
6.2.1 /etc/group文件
/etc/group文件包含系统上用到的每个组的信息包含4个字段:
组名
组密码
GID
属于改组的用户列表
1 2 | root:x:0:root ... |
6.2.2 创建新组
命令:groupadd +groupname
默认情况下,没有用户属于该组成员添加用户到组:usermod -G groupname
注意项:
如果更改了已登录系统账户所属的用户组,该用户必须登出系统后再登录,组关系的更改才会生效
将组添加到用户账户时要注意
如果加了-g参数,指定的组名会替换掉该账户的默认组
-G则会将改组添加到用户的属组的列表里,而不会影响默认组
6.2.3 修改组
groupmod会修改已有组的GID(加-g参数)和组名(加-n参数)修改组名时GID和组成员不会变,只有组名会改变
因为所有的安全权限都是基于GID的,所以可以任意改变组名而不会影响文件的安全性
6.3 理解文件权限
默认文件权限
umask命令用来设置用户创建的文件和目录的默认权限1 2 3 4 | $ touch newfile $ ls -al newfile -rw-r--r-- 1 rich rich 0 Sep 20 19:16 newfile $ |
1 2 3 | $ umask 0022 $ |
第1位:代表了一项特别的安全特性,叫作粘着位
后面3个数组表示文件和目录的umask的八进制值
对于rwx,每个位置代表一个二进制,有相关权限就置1,否则为0,如:r–转换为二进制位100,八进制为4
umask值是个掩码,它会屏蔽掉不想授予安全级别的权限
umask值会从对象的全权限值中减掉,所以在例子中,一开始的权限是666,然后umask值是022,剩下的文件权限就成了644了
文件的全权限值是666(所有用户都有读和写权限),目录的全权限是777(所有用户都有读写和执行权限)
umask的值会在/etc/profile启动文件中设置,可以用umask命令为默认umask设置指定一个新值
6.4 改变安全性设置
6.4.1 改变权限
chmod命令
该命令用来设置文件和目录的安全性设置用法:chmod options mode file
mode参数后可跟八进制模式或符号模式来设置安全性设置
options参数为chmod命令提供了另外一些功能
-R:可以让权限的改变递归地作用到文件和目录
八进制模式略
chmod在指定符号模式下指定权限的格式:[ugoa…][+-=][rwxXstugo]
第一组定义了权限的作用对象
u:用户
g:组
o:其他
a:上述所有
第二组是想要在现有权限基础上增加权限(+),还是移除(-),还是将权限设置成后面的值(=)
最后一组代表作用到设置上的权限,这个值比rwx多,额外的设置有一下几项
X:如果对象时目录或者它已有执行权限,赋予执行权限
s:运行时重新设置UID或GID
t:保留文件或目录
u:将权限设置为跟属主一样
g:将权限设置为跟属组一样
o:将权限设置为跟其他用户一样
1 2 3 4 | $ chomd o+r newfile $ ls -l newfile -rwxrw-r-- 1 rich rich 0 Sep 20 19:16 newfile $ |
6.4.2 改变所属关系
有时会你会改变文件的属主,比如在有人离职或者开发人员创建了一个在产品环境中运行时需要归属在系统账户下的应用
chown命令
用来改变文件的属主格式:chown options owner[.group] file
-R参数:递归地改变子目录和文件的所属关系
-h参数:改变文件的所有符号链文件的所属关系
可用登录名和UID来指定文件的新属主
1 2 3 4 | # chown dan newfile # ls -l newfile -rw-rw-r-- 1 dan rich 0 Sep 20 19:16 newfile # |
1 2 3 4 | # chown dan.shared newfile # ls -l newfile -rw-rw-r-- 1 dan shred 0 Sep 20:16 newfile # |
1 2 3 4 | # chown .rich newfile # ls -l newfile -rw-rw-r-- 1 dan rich 0 Sep 20:16 newfile # |
1 2 3 4 | # chown test. newfile # ls -l newfile -rw-rw-r-- 1 test test 0 Sep 20:16 newfile # |
只有root用户才能改变文件的属主
任何属主都可以改变文件的属组,但前提是属主必须是源和目标属组的成员
chgrp命令
可以很方便的改变文件或目录的默认属组1 2 3 4 | $ chgrp shared newfile $ ls -l newfile -rw-rw-r-- 1 rich shared 0 Sep 20 19:16 newfile $ |
6.5 共享文件
Linux为每个文件和目录存储了额外的信息设置用户ID(SUID):当文件被用户使用过时,程序会以文件属主的权限运行
设置组ID(SGID):对文件来说,程序会以文件属组的权限运行;对目录来说,目录中创建的新文件会以目录默认属组作为默认属组
粘着位:进程结束后文件还会在内存中
SGID对文件共享非常重要,是能了SGID位,就能让在一个共享目录下创建的新文件都属于该目录的属组,也就是每个用户的组
SGID通过chmod来设置,它会加到标准3位八进制值之前(组成4位八进制值),或者在符号模式下用符号s
修改SGID位置位,使在共享目录中新创建的文件都能沿用目录的属组
1 2 3 4 5 6 7 8 | $ mkdir testdir $ chgrp shared testdir $ chmod g+s testdir $ unask 002 $ cd testdir $ touch testfile $ ls -l -rw-rw-r-- 1 rich shared 0 Sep 20 23:13 testfile |
相关文章推荐
- 理解Linux文件权限3
- 0220自学Linux_逻辑理解用户进程权限相关+理解文件内各字段(passwd,shadow,group)
- Linux学习笔记(五)----理解Linux文件权限
- 玩转并理解linux中的文件/目录的rwx权限
- Linux 文件权限理解
- 《Linux命令行与shell脚本编程大全》 第七章理解Linux文件权限
- 理解linux文件权限
- 个人理解Linux文件权限--以前记录的,根据鸟哥的第二版去解释的
- 深入理解Linux中的文件权限
- 理解Linux文件权限
- 第6章 理解Linux文件权限
- Linux如何理解用数字表示文件的操作权限
- Linux Shell学习笔记5:理解Linux文件权限
- linux命令行与shell脚本大全_第六章_权限_理解文件权限
- 【linux】对于文件权限的理解
- 理解Linux文件权限
- 理解Linux文件权限——第七章
- Linux如何理解用数字表示文件的操作权限
- 第7章 理解Linux文件权限
- 《Linux命令行与shell脚本》笔记--第6章:理解Linux文件权限