linux文件权限

Posted 菜鸟修炼之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux文件权限相关的知识,希望对你有一定的参考价值。

Linux 的安全性

1./etc/passwd 文件

/etc/passwd文件
的字段包含了如下信息:
 登录用户名
 用户密码
 用户账户的UID(数字形式)
 用户账户的组ID(GID)(数字形式)
 用户账户的文本描述(称为备注字段)
 用户HOME目录的位置
 用户的默认shell
2./etc/shadow 文件

etc/shadow文件为系统上的每个用户账户都保存了一条记录。记录就像下面这样:
rich:$1$.FfcK0ns$f1UgiyHQ25wrB/hykCn020:11627:0:99999:7:::
在/etc/shadow文件的每条记录中都有9个字段:
 与/etc/passwd文件中的登录名字段对应的登录名
 加密后的密码
 自上次修改密码后过去的天数密码(自1970年1月1日开始计算)
 多少天后才能更改密码
 多少天后必须更改密码
 密码过期前提前多少天提醒用户更改密码

 密码过期后多少天禁用用户账户
 用户账户被禁用的日期(用自1970年1月1日到当天的天数表示)
 预留字段给将来使用

3.添加新用户

# /usr/sbin/useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
#

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

useradd 命令行参数

参 数 描 述
-c comment
给新用户添加备注
-d home_dir
为主目录指定一个名字(如果不想用登录名作为主目录名的话)
-e expire_date
用YYYY-MM-DD格式指定一个账户过期的日期
-f inactive_days
指定这个账户密码过期后多少天这个账户被禁用; 0 表示密码一过期就立即禁用, 1 表示
禁用这个功能
-g initial_group
指定用户登录组的GID或组名
-G group ...
指定用户除登录组之外所属的一个或多个附加组
-k
必须和 -m 一起使用,将/etc/skel目录的内容复制到用户的HOME目录
-m
创建用户的HOME目录
-M
不创建用户的HOME目录(当默认设置里要求创建时才使用这个选项)
-n
创建一个与用户登录名同名的新组

-r
创建系统账户
-p passwd
为用户账户指定默认密码
-s shell
指定默认的登录shell
-u uid
为账户指定唯一的UID

useradd 更改默认值的参数

-b default_home
更改默认的创建用户HOME目录的位置
-e expiration_date
更改默认的新账户的过期日期
-f inactive
更改默认的新用户从密码过期到账户被禁用的天数
-g group
更改默认的组名称或GID
-s shell
更改默认的登录shell

4.删除用户

userdel

5.修改用户

usermod
修改用户账户的字段,还可以指定主要组以及附加组的所属关系
passwd
修改已有用户的密码
chpasswd
从文件中读取登录名密码对,并更新密码
chage
修改密码的过期日期
chfn
修改用户账户的备注信息
chsh
修改用户账户的默认登录shell

5.1usermod

 -c 修改备注字段, -e 修改过期日期, -g 修改默认的登录组。除此之外,还有另外
一些可能派上用场的选项。
 -l 修改用户账户的登录名。
 -L 锁定账户,使用户无法登录。
 -p 修改账户的密码。
 -U 解除锁定,使用户能够登录。
-L 选项尤其实用。它可以将账户锁定,使用户无法登录,同时无需删除账户和用户的数据。
要让账户恢复正常,只要用 -U 选项就行了。

5.2. passwd 和 chpasswd

改变用户密码的一个简便方法就是用 passwd 命令。
# passwd test
Changing password for user test.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
#

-e 选项能强制用户下次登录时修改密码。你可以先给用户设置一个简单的密码,之后再强制在下次登录时改成他们能记住的更复杂的密码。

如果需要为系统中的大量用户修改密码, chpasswd 命令可以事半功倍。 chpasswd 命令能从标准输入自动读取登录名和密码对(由冒号分割)列表,给密码加密,然后为用户账户设置。你也可以用重定向命令来将含有 userid:passwd 对的文件重定向给该命令。
# chpasswd < users.txt

5.3. chsh 、 chfn 和 chage

chsh 、 chfn 和 chage 工具专门用来修改特定的账户信息。 chsh 命令用来快速修改默认的用户登录shell。使用时必须用shell的全路径名作为参数,不能只用shell名。
# chsh -s /bin/csh test
Changing shell for test.
Shell changed.

chfn 命令提供了在/etc/passwd文件的备注字段中存储信息的标准方法。

chage 命令用来帮助管理用户账户的有效期。你需要对每个值设置多个参数

参 数               描 述

-d, --lastday 最近日期        将最近一次密码设置时间设为“最近日期”
  -E, --expiredate 过期日期     将帐户过期时间设为“过期日期”
  -h, --help                    显示此帮助信息并推出
  -I, --inactive INACITVE       过期 INACTIVE 天数后,设定密码为失效状态
  -l, --list                    显示帐户年龄信息
  -m, --mindays 最小天数        将两次改变密码之间相距的最小天数设为“最小天数”
  -M, --maxdays 最大天数        将两次改变密码之间相距的最大天数设为“最大天数”
  -R, --root CHROOT_DIR         chroot 到的目录
  -W, --warndays 警告天数       将过期警告天数设为“警告天数”

使用 Linux 组

创建新组   groupadd

在创建新组时,默认没有用户被分配到该组。 groupadd 命令没有提供将用户添加到组中的
选项,但可以用 usermod 命令来弥补这一点。
# /usr/sbin/usermod -G shared rich

修改组

在/etc/group文件中可以看到,需要修改的组信息并不多。 groupmod 命令可以修改已有组的
GID(加 -g 选项)或组名(加 -n 选项)。
# /usr/sbin/groupmod -n sharing shared
# tail /etc/group
haldaemon:x:68:

理解文件权限

1 使用文件权限符

$ ls –l
total 68
-rw-rw-r-- 1 rich rich 50 2010-09-13 07:49 file1.gz

drwxrwxr-x 2 rich rich 4096 2010-09-03 15:12 test1

输出结果的第一个字段就是描述文件和目录权限的编码。这个字段的第一个字符代表了对象的类型:
 - 代表文件
 d 代表目录
 l 代表链接
 c 代表字符型设备
 b 代表块设备
 n 代表网络设备
之后有3组三字符的编码。每一组定义了3种访问权限:
 r 代表对象是可读的
 w 代表对象是可写的

 x 代表对象是可执行的
若没有某种权限,在该权限位会出现单破折线。这3组权限分别对应对象的3个安全级别:
 对象的属主
 对象的属组
 系统其他用户

2 默认文件权限

要把 umask 值从对象的全权限值中减掉。对文件来说,全权限的值是 666 (所有用户都有读和写的权限);而对目录来说,则是 777 (所有用户都有读、写、执行权限)。

由于目录的默认权限是 777 , umask 作用后生成的目录权限不同于生成的文件权限。 umask值 026 会从 777 中减去,留下来 751 作为目录权限设置。

改变安全性设置

1 改变权限

chmod 命令用来改变文件和目录的安全性设置。该命令的格式如下:
chmod options mode file

与通常用到的3组三字符权限字符不同, chmod 命令采用了另一种方法。下面是在符号模式下指定权限的格式。
[ugoa…][[+-=][rwxXstugo…]
第一组字符定义了权限作用的对象:
 u 代表用户
 g 代表组
 o 代表其他
 a 代表上述所有

后面跟着的符号表示你是想在现有权限基础上增加权限(+),还是在现有权限基础上移除权限(-),或是将权限设置成后面的值(=)

最后,第三个符号代表作用到设置上的权限。你会发现,这个值要比通常的 rwx 多。额外的设置有以下几项。

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

-R 选项可以让权限的改变递归地作用到文件和子目录。

2 改变所属关系

chown 命令的格式如下。
chown options owner[.group] file

chown 命令采用一些不同的选项参数。 -R 选项配合通配符可以递归地改变子目录和文件的所属关系。 -h 选项可以改变该文件的所有符号链接文件的所属关系

共享文件

要创建一个共享目录,使目录里的新文件都能沿用目录的属组,只需将该目录的SGID
位置位。
$ mkdir testdir
$ ls -l
drwxrwxr-x 2 rich rich 4096 Sep 20 23:12 testdir/
$ chgrp shared testdir
$ chmod g+s testdir
$ ls -l
drwxrwsr-x 2 rich shared 4096 Sep 20 23:12 testdir/
$ umask 002
$ cd testdir
$ touch testfile
$ ls -l
total 0
-rw-rw-r-- 1 rich shared 0 Sep 20 23:13 testfile
$
首先,用 mkdir 命令来创建希望共享的目录。然后通过 chgrp 命令将目录的默认属组改为包
含所有需要共享文件的用户的组(你必须是该组的成员)。最后,将目录的SGID位置位,以保证
目录中新建文件都用shared作为默认属组。

以上是关于linux文件权限的主要内容,如果未能解决你的问题,请参考以下文章

linux文件权限数字啥意思

在Linux系统中,如何更改文件的访问权限

Linux特殊文件权限

linux目录命令,文件命令,权限设置命令

linux 下 文件的X权限有啥用

Linux 文件权限