day6总结

主要内容:

useradd与usermod对比

groupadd与groupmod对比

passwd与chage对比

gpasswd与groupmems对比

切换用户

chown与chgrp用法

一般权限与特殊权限

chmod用法


 

useradd创建用户的初始信息存放在/etc/login.defs/etc//default/useradd文件中。

   /etc/login.defs: 设置mail_dir目录、mail_file、密码最短时效,最长时效,警告时间,最小的UID,最大的UID。最大的GID以及最小的GID,是否创建家目录,umask

 

   /etc/default/useradd: 默认shell,家目录,skel目录,是否创建邮件目录。

注:家目录从/etc/skel/文件中复制文件。

 

4个配置文件:

/etc/passwd 用户信息 用户名:密码:用户id:组id:注释:家目录:bash

当用户有附加组时,是否会显示?不会显示,会显示在/etc/group中

/etc/group 组信息    组名:组id:密码:以该组为附加组的用户

/etc/shadow       用户名:密码:最近一次修改时间:最小使用时间:最大使用时间:警告时间

/etc/gshadow  组名:密码:管理员账户:以该组为附加组的用户名。  

 

newusers passwd格式的文件:批量创建用户

chpasswd 批量修改用户密码

 

useradd用法与usermod用法对比

useradd用法

usermod用法

-u   UID

指定新建用户的UID

-u UID 

修改新UID

-g   GID

指定新建用户的GID,必须存在

-g GID

修改新GID

-d HOME_DIR

指定家目录

-d HOME 

修改家目录,-m搬过来

-s  SHELL

指定shell

-s SHELLS

修改shell

-G  grp1,grp2

添加附加组

-l login_name 

新的名字

-N

不创建私用组做主组

-L 

锁定指定用户,密码栏增加!

 -r

创建系统用户

-U 

-U解锁用户,密码栏减少!

 -o

解除uid唯一性限制

-e 

指明用户账户过期日期

 -c comment

注释

-f

设定非活动期限

useradd -N user:创建一个用户user,不创建私用组作为主组,而使用users组作为主组。

userdel [option] …login:删除指定用户

-r删除指定用户,包括家目录。

 

id [option]… user

-u:UID    查看用户的UID

-g:GID    查看用户的GID

-G:Groups  查看用户的组

-n:Name   查看用户的名字

 

su  [options] [-] [user]

切换用户方式:

su username:非登录式切换,不会读取用户的配置文件,不改变当前的工作目录。

su – username:登录式切换,会读取用户的配置文件,切换至家目录,完全切换。

 

使用另一个用户执行命令:

su – UserName -c COMMAND

 

passwdchage用法对比

passwd用法

chage用法

-l

锁定指定用户

-l

显示密码策略

-u

解锁指定用户

-d

last_day

-e

强制用户下次修改密码

-E

过期时间

-n

密码最短使用期限

-m

密码最小使用期限

-x

密码最大使用期限

-M

密码最大使用期限

-w

提前多少天开始警告

-W

提前多少天开始警告

-i

非活动期限

-I

非活动期限

–stdin

从标准输入接收密码

chage -d 0 test1:下次登录强制重设密码。

 

groupadd

groupadd -g GID :创建组时指明GID

-r:创建系统组

groupmod

-n group_name:新名字

-g GID:新的GID

组删除:

groupdel group:当有组中有用户时,无法进行删除。

 

gpasswdgroupmems用法对比

gpasswd用法

groupmems用法

-a user group

user添加到指定组中

-a user

指定用户加入组中

-d user group

从指定组中移除user

-d user

从组中删除指定用户

-A user1,user2

设置有管理权限的user

-p

从组中清空用户

-l

显示组成员列表

newgrp:临时切换组。

groups username:查看用户属组信息。

 

文件权限:

chown:设置文件的所有者

chown [option]…[owner][:group] file:

chown user file修改属组

chown user : group file 也可以同时修改属组

chown :group file 也可以单独修改属组

-R 递归

chown –reference=RFILE FILE….  修改为与文件同样的权限。

 

chgrp:设置文件的属组信息。

chgrp [option] …group file:修改文件属组。

chgrp [option]…–reference=RFILE FILE..

-R 递归

 

文件的权限主要针对三类对象进行定义: owner: 属主, u group: 属组, g other: 其他 每个文件针对每类访问者都定义了三种权限: r: Readable w: Writable x: eXcutable

 

文件:

r: 可使用文件查看类工具获取其内容 

w: 可修改其内容 

x: 可以把此文件提请内核启动为一个进程  

目录:

r: 可以使用ls查看此目录中文件列表 

w: 可在此目录中创建文件,也可删除此目录中的文件 

x: 可以使用ls -l查看此目录中文件列表,可以cd进入此目录 

X:只给目录x权限,不给文件x权限

chmod用法:

chmod [options] 八进制数字(3位)file

-R:递归修改权限。

 

chmod [options] 字母模式 file

修改一类用户所有权限。

u=,g=,o= ,a= 

u+,u_,g+,o+,o-,a+,a-

 

chmod [options] –reference=RFILE FILE

 

新建文件和目录的默认权限:

umask:设置用户创建文件的默认权限。

新建FILE默认权限:666-umask

如果所得结果某位为奇数(存在执行位),权限加1

新建DIR权限:777-umask

非特权用户umask002

rootumask022

umask:查看umask

umask 3位数字:设定umask的值

umask -S模式方式显示umask

umask -p输出可被调用

全局设置:/etc/bashrc  用户设置:~/.bashrc

 

 

Linux文件系统上的特殊权限 

三种常用权限:r, w, x    user, group, other 

安全上下文 

前提:进程有属主和属组;文件有属主和属组

(1) 任何一个可执行程序文件能不能启动为进程:取决发起者 对程序文件是否拥有执行权限 

(2) 启动为进程之后,其进程的属主为发起者;进程的属组为 发起者所属的组

(3) 进程访问文件时的权限,取决于进程的发起者 

   (a)进程的发起者,同文件的属主:则应用文件属主权限

   (b) 进程的发起者,属于文件属组;则应用文件属组权限 

   (c) 应用文件“其它”权限

任何一个可执行程序文件能不能启动为进程:取决发起者对 程序文件是否拥有执行权限启动为进程之后,其进程的属主为原程序文件的属主。

 

SUID权限:

任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限。 

启动为进程之后,其进程的属主为原程序文件的属主(比如其它用户执行cat之后,这个进程的属主就变成了root

SUID只对二进制可执行程序有效,SUID设置在目录上无意义 

权限设定: chmod u+s FILE… chmod u-s FILE…

 

可执行文件上SGID权限

  任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限。  

  启动为进程之后,其进程的属主为原程序文件的属组。 

  权限设定: chmod g+s FILE… chmod g-s FILE…

 

   一旦某目录被设定了SGID,则对此目录有写权限的用户在此 目录中创建的文件所属的组为此目录的属组。 

   通常用于创建一个协作目录 

权限设定: chmod g+s DIR… chmod g-s DIR…

 

Sticky位:

 具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权,在目录设置Sticky 位,只有文件的所有者或root可以删除该文件。

 sticky 设置在文件上无意义 

     权限设定: chmod o+t DIR… chmod o-t DIR… 

4表示SUID, 2表示SGID,1表示Sticky

 

权限位映射

SUID: user,占据属主的执行权限位 s: 属主拥有x权限 S:属主没有x权限   4

  SGID: group,占据属组的执行权限位 s: group拥有x权限 Sgroup没有x权限  2

  Sticky: other,占据other的执行权限位 t: other拥有x权限 Tother没有x权限 1

 

chattr +i 不能删除,改名,更改 

chattr +a 只能增加 

lsattr 显示特定属性

 

setfacl命令:

   -b,–remove-all:删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留。

   -k,–remove-default:删除缺省的acl规则。如果没有缺省规则,将不提示。

   -n–no-mask:不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定。 

  –mask:重新计算有效权限,即使ACL mask被明确指定。 

-d–default:设定默认的acl规则。 

–restore=file:从文件恢复备份的acl规则(这些文件可由getfacl -R产生)。通过这种机制可以恢复整个目录树的acl规则。此参数不能和除–test以外的任何参数一同执行。 

–test:测试模式,不会改变任何文件的acl规则,操作后的acl规格将被列出。 

-R–recursive:递归的对所有文件及目录进行操作。 

-L–logical:跟踪符号链接,默认情况下只跟踪符号链接文件,跳过符号链接目录

-P–physical:跳过所有符号链接,包括符号链接文件。 

 –version:输出setfacl的版本号并退出。 

–help:输出帮助信息。 

 

     选项-m-x后边跟以acl规则。多条acl规则以逗号(,)隔开。选项-M-X用来从文件或标准输入读取acl规则。 

     选项–set–set-file用来设置文件或目录的acl规则,先前的设定将被覆盖。

     选项-m(–modify)-M(–modify-file)选项修改文件或目录的acl规则。 

     选项-x(–remove)-X(–remove-file)选项删除acl规则。

 

ACL组成部分:

Entry tag type:(标签入口类型)

   ACL_USER_OBJ:相当于Linuxfile_ownerpermission 

   ACL_USER:定义了额外的用户可以对此文件拥有的permission 

   ACL_GROUP_OBJ:相当于Linuxgrouppermission 

   ACL_GROUP:定义了额外的组可以对此文件拥有的permission

   ACL_MASK:定义了ACL_USER, ACL_GROUP_OBJACL_GROUP的最大权限  

   ACL_OTHER:相当于Linuxotherpermission

 

一开始文件没有ACL的额外属性:

 

 [root@localhost ~]# ls -l -rw-rw-r– 1 root admin 0 Jul 3 22:06 test.txt [root@localhost ~]# getfacl –omit-header ./test.txt 

 

user::rw- 

group::rw- 

other::r– 

 

 

设置格式:setfacl -m user:john:rw- ./test.txt

查看格式: getfacl –omit-header ./test.txt

 

我们先让用户john拥有对test.txt文件的读写权限: 

[root@localhost ~]# setfacl -m user:john:rw- ./test.txt

 [root@localhost ~]# getfacl –omit-header ./test.txt

 user::rw- 

user:john:rw- 

group::rw- 

mask::rw- 

other::r– 

 

这时我们就可以看到john用户在ACL里面已经拥有了对文件的读写权。

这个时候如果我们查看一下linuxpermission我们还会发现一个不一样的地方。 [root@localhost ~]# ls -l ./test.txt -rw-rw-r–+ 1 root admin 0 Jul 3 22:06 ./test.txt 

在文件permission的最后多了一个+号,当任何一个文件拥有了ACL_USER或者ACL_GROUP的值以后我们就可以称它为ACL文件,这个+号就是用来提示我们的。

我们还可以发现当一个文件拥有了ACL_USER或者ACL_GROUP的值时ACL_MASK同时也会被定义。 接下来我们来设置dev组拥有read permission

 [root@localhost ~]# setfacl -m group:dev:r– ./test.txt 

[root@localhost ~]# getfacl –omit-header ./test.txt 

user::rw- 

user:john:rw- 

group::rw- 

group:dev:r– 

mask::rw- 

other::r–

注意:在Linux file permission里面大家都知道比如对于rw-rw-r–来说当中的那个rw-是指文件组的permission. 但是在ACL里面这种情况只是在ACL_MASK不存在的情况下成立。如果文件有ACL_MASK值,那么当中那个rw-代表的就是mask值而不再是group permission了。

Default ACL:针对目录的。Access ACL针对文件。

设置格式:setfacl -d -m user:john:rw ./dir

 

注意:删除aclsetfacl -x不能删除+,应该使用chfacl才能彻底删除。

原创文章,作者:liuzhuo,如若转载,请注明出处:http://www.178linux.com/30526