主要内容:
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’
passwd和chage用法对比
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:当有组中有用户时,无法进行删除。
gpasswd和groupmems用法对比
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
非特权用户umask为002
root的umask为022
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权限 S:group没有x权限 2
Sticky: other,占据other的执行权限位 t: other拥有x权限 T:other没有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:相当于Linux里file_owner的permission
ACL_USER:定义了额外的用户可以对此文件拥有的permission
ACL_GROUP_OBJ:相当于Linux里group的permission
ACL_GROUP:定义了额外的组可以对此文件拥有的permission
ACL_MASK:定义了ACL_USER, ACL_GROUP_OBJ和ACL_GROUP的最大权限
ACL_OTHER:相当于Linux里other的permission
一开始文件没有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里面已经拥有了对文件的读写权。
这个时候如果我们查看一下linux的permission我们还会发现一个不一样的地方。 [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
注意:删除acl用setfacl -x不能删除+,应该使用chfacl才能彻底删除。
原创文章,作者:liuzhuo,如若转载,请注明出处:http://www.178linux.com/30526