一、用户组管理
1、设置修改用户密码密码
设置密码
passwd [OPTIONS] UserName: 修改指定用户的密码,仅root 用户权限
passwd: 修改自己的密码;
常用选项:
-l: 锁定指定用户
-u: 解锁指定用户
-e: 强制用户下次登录修改密码
-n mindays: 指定最短使用期限
-x maxdays :最大使用期限
-w warndays :提前多少天开始警告
-i inactivedays :非活动期限;
–stdin :从标准输入接收用户密码;
echo " PASSWORD " | passwd –stdin USERNAME
下一次登录强制重设密码
chage -d 0 tom
chage -m 0 –M 42 –W 14 –I 7 tom
chage -E 2016-09-10 tom
用户相关的其它命令
chfn 指定个人信息
chsh 指定shell
finger
2、组的创建和修改
创建组
groupadd [OPTION]… group_name
-g GID: 指明GID 号;[GID_MIN, GID_MAX]
-r: 创建系统组;
CentOS 6: ID<500
CentOS 7: ID<1000
修改和删除组
组属性修改:groupmod
groupmod [OPTION]… group
-n group_name: 新名字
-g GID: 新的GID;
组删除:groupdel
groupdel GROUP
更改组密码
组密码:gpasswd
gpasswd [OPTION] GROUP
-a user: 将user 添加至指定组中;
-d user: 从指定组中移除用户user
-A user1,user2,…: 设置有管理权限的用户列表
4
二、权限管理
1、文件和目录的所有者权限及修改
文件属性
权限、引用、计数、所有者、所属组大小、创建时间、文件名、文件属性操作
修改文件的属主和属组
修改文件的属主:chown
chown [OPTION]… [OWNER][:[GROUP]] FILE…
用法:
OWNER
OWNER:GROUP
:GROUP
命令中的冒号可用. 替换;
-R: 递归
chown [OPTION]… –reference=RFILE FILE…
修改文件的属组:chgrp
chgrp [OPTION]… GROUP FILE…
chgrp [OPTION]… –reference=RFILE FILE…
-R 递归
2、文件和目录的基本权限及修改
文件权限
文件的权限主要针对三类对象进行定义:
owner: 属主, u
group: 属组, g
other: 其他, o
每个文件针对每类访问者都定义了三种权限:
r: Readable
w: Writable
x: eXcutable
文件及目录的权限
文件:
r: 可使用文件查看类工具获取其内容
w: 可修改其内容
x: 可以把此文件提交内核启动为一个进程
目录:
r: 可以使用ls 查看此目录中文件列表
w: 可在此目录中创建文件,也可删除此目录中的文件
x: 可以使用ls -l 查看此目录中文件列表,可以cd 进入此目录
X:只给目录x权限,不给文件x权限
修改文件权限
chmod [OPTION]… OCTAL-MODE FILE…
-R: 递归修改权限
chmod [OPTION]… MODE[,MODE]… FILE…
MODE: :
修改一类用户的所有权限:
u= g= o= ug= a= u=,g=
修改一类用户某位或某些位权限
u+ u- g+ g- o+ o- a+ a- + –
chmod [OPTION]… –reference=RFILE FILE…
参考RFILE 文件的权限,将FILE 的修改为同RFILE;
chgrp sales testfile
chown root:admins testfile
[root@6 testdir]# chown lvasu: a [root@6 testdir]# ll a ----------. 1 lvasu lvasu 0 8月 3 20:57 a
chmod u+wx,g-r,o=rx file
[root@6 testdir]# ll a -rw-r--r--. 1 root root 0 8月 3 20:57 a [root@6 testdir]# chmod u-rw,g-r,o-r a [root@6 testdir]# ll a ----------. 1 root root 0 8月 3 20:57 a
chmod -R g+rwX /testdir
[root@6 testdir]# ll -a a 总用量 28 drwxr-xr-x. 4 root root 4096 8月 3 21:03 . drwxr-xr-x. 16 root root 4096 8月 3 21:03 .. -rw-r--r--. 1 root root 18 8月 3 21:03 .bash_logout -rw-r--r--. 1 root root 176 8月 3 21:03 .bash_profile -rw-r--r--. 1 root root 124 8月 3 21:03 .bashrc drwxr-xr-x. 2 root root 4096 8月 3 21:03 .gnome2 drwxr-xr-x. 4 root root 4096 8月 3 21:03 .mozilla [root@6 testdir]# chmod -R g-r a [root@6 testdir]# ll -a a 总用量 28 drwx--xr-x. 4 root root 4096 8月 3 21:03 . drwxr-xr-x. 16 root root 4096 8月 3 21:03 .. -rw----r--. 1 root root 18 8月 3 21:03 .bash_logout -rw----r--. 1 root root 176 8月 3 21:03 .bash_profile -rw----r--. 1 root root 124 8月 3 21:03 .bashrc drwx--xr-x. 2 root root 4096 8月 3 21:03 .gnome2 drwx--xr-x. 4 root root 4096 8月 3 21:03 .mozilla
chmod 600 file
[root@6 testdir]# ll a ----------. 1 lvasu lvasu 0 8月 3 20:57 a [root@6 testdir]# chmod 600 a [root@6 testdir]# ll a -rw-------. 1 lvasu lvasu 0 8月 3 20:57 a
chown mage testfile
[root@6 testdir]# ll a -rw-------. 1 lvasu lvasu 0 8月 3 20:57 a [root@6 testdir]# chown root a [root@6 testdir]# ll a -rw-------. 1 root lvasu 0 8月 3 20:57 a
权限设置–umask码
新建文件和目录的默认权限
umask值 值 可以用来保留在创建文件权限
新建FILE 权限: 666-umask
如果所得结果某位存在执行(奇数)权限,则将其权限+1
新建DIR 权限: 777-umask
非特权用户umask是 002
root 的umask 是 022
umask: 查看
umask #: 设定
umask 002
umask –S 模式方式显示
umask –p 输出可被调用
全局设置: /etc/bashrc 用户设置:~/.bashrc
3、Linux 文件系统上的特殊权限
SUID, SGID, Sticky
三种常用权限:r, w, x user, group, other
(1) 任何一个可执行程序文件能不能启动为进程:取决发起者
对程序文件是否拥有执行权限
判断二进位制程序能否运行:
属主—》属组—–》其他用户 u—g—o
(2) 启动为进程之后,其进程的属主为发起者;进程的属组为
发起者所属的组
(3) 进程访问文件时的权限,取决于进程的发起者
(a) 进程的发起者,同文件的属主:则应用文件属主权限
(b) 进程的发起者,属于文件属组;则应用文件属组权限
(c) 应用文件“其它”权限
可执行文件上SUID 权限 对象:二进制程序,目录,脚本无意义
二进位制程序提交内核为进程,需要执行者有执行的权限
启动为进程之后,其进程的属主为原程序文件的属主
SUID 只对二进制可执行程序有效,目录无意义
用途:通常为一些程序开发者根据需要设置的SUID,出于安全的考虑,一般不会做修改。
权限设定:
chmod u+s FILE…
chmod u-s FILE…
chmod 4755 +SUID
chmod 755 -SUID (有时不会生效)
[root@6 testdir]# ll b -rwxr-xr-x. 1 root root 0 8月 3 21:42 b [root@6 testdir]# chmod u+s b [root@6 testdir]# ll b -rwsr-xr-x. 1 root root 0 8月 3 21:42 b [root@6 testdir]# chmod 755 b ###去除权限 [root@6 testdir]# ll b -rwxr-xr-x. 1 root root 0 8月 3 21:42 b [root@6 ~]# chmod u+s /bin/cat ###对cat添加SUID [root@6 ~]# ll /bin/cat -rwsr-xr-x. 1 root root 48568 5月 11 16:59 /bin/cat [root@6 ~]# su lvasu [lvasu@6 root]$ cat /etc/shadow ##普通用户可以root身份打开shadow文件 root:$6$WCeeOGmBq7sO4OUR$7ilpCkqcbLCewVKKXKpOH1V1SBqZI4m57d1fZocbrlYZhbF9thDSGJhei1c.DYfnFT5UuamVtUS0CsESHBzqK/:17015:0:99999:7::: bin:*:17015:0:99999:7::: daemon:*:17015:0:99999:7::: [root@6 ~]# chmod 7777 /testdir [root@6 ~]# ll -d /testdir drwxrwxrwxt 16 root root 4096 8月 4 11:50 /testdir [root@6 ~]# chmod 777 /testdir ###去除权限失败 [root@6 ~]# ll -d /testdir drwxrwxrwx. 16 root root 4096 8月 4 11:50 /testdir
可执行文件上SGID 权限 对象:可以是二进制程序 ,但权限很小,并且需要文件对该组授权。
二进位制程序提交内核为进程,需要执行者有执行的权限
启动为进程之后,其进程的属主为原程序文件的属主
权限设定:
chmod g+s FILE…
chmod g-s FILE…
[root@6 ~]# chmod g+s /bin/cat [root@6 ~]# ll /bin/cat -rwxr-sr-x. 1 root root 48568 5月 11 16:59 /bin/cat [root@6 ~]# su lvasu [lvasu@6 root]$ cat /etc/shdow cat: /etc/shdow: 没有那个文件或目录 ###加入SGID也无法访问,取决于root组 [lvasu@6 root]$ cat /etc/shadow cat: /etc/shadow: 权限不够, [root@6 ~]# chmod g+r /etc/shadow ###shadow文件对root进行授权 [root@6 ~]# ll /etc/shadow ----r-----. 1 root root 2464 8月 2 16:55 /etc/shadow [root@6 ~]# su lvasu [lvasu@6 root]$ cat /etc/shadow root:$6$WCeeOGmBq7sO4OUR$7ilpCkqcbLCewVKKXKpOH1V1SBqZI4m57d1fZocbrlYZhbF9thDSGJhei1c.DYfnFT5UuamVtUS0CsESHBzqK/:17015:0:99999:7::: bin:*:17015:0:99999:7::: daemon:*:17015:0:99999:7::: adm:*:17015:0:99999:7:::
目录上的SGID 权限 对象:目录
默认情况下,用户创建文件时,其属组为此用户所属的主组
通过对目录设置SGID,对此目录有写权限的用户所创建的文件的属组为目录的属组
用途:通常用于创建一个协作目录
权限设定:
chmod g+s DIR…
chmod g-s DIR…
[root@6 testdir]# gpasswd -a lv -g tec 正在将用户“lv”加入到“tec”组中 [root@6 testdir]# gpasswd -a lvasu -g tec 正在将用户“lvasu”加入到“tec”组中 [root@6 testdir]# chown :tec a [root@6 testdir]# chmod g+s a ##对目录a设置SGID权限,创建写作目录 [root@6 a]# su lvasu [lvasu@6 a]$ touch b [root@6 a]# su lv [lv@6 a]$ touch c [root@6 a]# touch a [root@6 a]# ll 总用量 0 -rw-r--r--. 1 root tec 0 8月 4 12:30 a -rw-rw-r--. 1 lvasu tec 0 8月 4 12:29 b -rw-rw-r--. 1 lv tec 0 8月 4 12:29 c [root@6 a]# su lvasu ###该组的用户可以互相修改文件 [lvasu@6 a]$ echo abc > c [lvasu@6 a]$ cat c abc [lvasu@6 a]$ exit exit [root@6 a]# su lv [lv@6 a]$ echo 123 > b [lv@6 a]$ cat b 123
Sticky 位 粘滞位 对象:目录 ,文件无意义
具有写权限的目录通常可以删除该目录中的任何文件,无论该文件的权限或拥有权
在目录设置Sticky 位,只有文件的所有者或root才可以删除该文件
用途:出于安全的考虑,通过设置防止文件被误删或恶意删除操作
权限设定:
chmod o+t DIR…
chmod o-t DIR…
例如:
ls -ld /tmp
drwxrwxrwt 12 root root 4096 Nov 2 15:44 /tmp
[root@6 ~]# chmod g+w /testdir/a [root@6 ~]# cd /testdir [root@6 a]# su lvasu [lvasu@6 a]$ touch a [lvasu@6 a]$ exit exit [root@6 a]# su lv [lv@6 a]$ touch b [lv@6 a]$ rm a rm:是否删除有写保护的普通空文件 "a"?y [lv@6 a]$ ll 总用量 0 -rw-rw-r--. 1 lv lv 0 8月 4 11:59 b [lv@6 a]$ exit exit [root@6 a]# su lvasu [lvasu@6 a]$ rm -f b ###a目录下创建文件的用户都可以互相删除 [lvasu@6 a]$ touch 1 [lvasu@6 a]$ exit exit [root@6 a]# su lv [lv@6 a]$ touch 2 [lv@6 a]$ exit exit [root@6 a]# chmod o+t ../a ###加入粘滞权 [root@6 a]# ll -a 总用量 8 drwxrwxr-t. 2 root root 4096 8月 4 12:02 . drwxr-xr-x. 16 root root 4096 8月 4 11:50 .. -rw-rw-r--. 1 lvasu lvasu 0 8月 4 12:01 1 -rw-rw-r--. 1 lv lv 0 8月 4 12:02 2 [root@6 a]# su lvasu [lvasu@6 a]$ rm -f 2 rm: 无法删除"2": 不允许的操作 [lvasu@6 a]$ exit exit [root@6 a]# su lv [lv@6 a]$ rm -f 1 rm: 无法删除"1": 不允许的操作 ###a目录中其他用户的文件不可以删除
特殊权限数字法
SUID SGID STICKY
UMASK 码第一位(7777)
4 suid
2 sgid
1 sticky
6 suid+sgid
7 suid+sgid+sticky
权限位映射
SUID: user, 占据属主的执行权限位
s: 属主拥有x 权限
S :属主没有x 权限
SGID: group, 占据属组的执行权限位
s: group 拥有x 权限
S :group 没有x 权限
Sticky: other, 占据other 的执行权限位
t: other 拥有x 权限
T :other 没有x 权限
[root@6 ~]# ll a -rwSr-Sr--. 1 root root 0 8月 4 11:37 a
****注意:在设置s权限时文件属主、属组必须先设置相应的x权限,否则s权限并不能正真生效。大写的S则表示未生效
4、设定文件特定属性及访问控制列表
文件的特定属性
chattr +A 不能修改访问时间 锁定访问时间
[root@6 a]# stat a File: "a" Size: 0 Blocks: 0 IO Block: 4096 普通空文件 Device: 803h/2051d Inode: 1044578 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 4323/ tec) Access: 2016-08-04 12:30:44.338011279 +0800 Modify: 2016-08-04 12:30:44.338011279 +0800 Change: 2016-08-04 12:30:44.338011279 +0800 [root@6 a]# cat a [root@6 a]# stat a File: "a" Size: 0 Blocks: 0 IO Block: 4096 普通空文件 Device: 803h/2051d Inode: 1044578 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 4323/ tec) Access: 2016-08-04 13:09:58.032009594 +0800 Modify: 2016-08-04 12:30:44.338011279 +0800 Change: 2016-08-04 12:30:44.338011279 +0800 [root@6 a]# chattr +A a [root@6 a]# cat a [root@6 a]# stat a File: "a" Size: 0 Blocks: 0 IO Block: 4096 普通空文件 Device: 803h/2051d Inode: 1044578 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 4323/ tec) Access: 2016-08-04 13:09:58.032009594 +0800 Modify: 2016-08-04 12:30:44.338011279 +0800 Change: 2016-08-04 13:10:26.478009488 +0800
chattr +i 不能删除,改名,只读 锁定
chattr +a 只能增加[root@6 a]# chattr +i a [root@6 a]# mv a asd mv: 无法将"a" 移动至"asd": 不允许的操作 [root@6 a]# echo abc > a -bash: a: 权限不够 [root@6 a]# rm -f a rm: 无法删除"a": 不允许的操作
chattr +a 让某个文件只能往里面追加内容,不能删除,一般用于日志文件
[root@6 a]# echo acdfdgf > a -bash: a: 不允许的操作 [root@6 a]# rm -f a rm: 无法删除"a": 不允许的操作 [root@6 a]# echo acdfdgf >> a ###不允许覆盖或删除,只可以追加
lsattr 显示特定属性
[root@6 a]# lsattr a ----i--------e- a
访问控制列表:
ACL :Access Control List ,实现灵活的权限管理
除了文件的所有者,所属组和其它人,可以对更多的用户设
置权限
CentOS7.0 默认创建的xfs 和ext4 文件系统有ACL 功能。
CentOS7.X 之前版本,默认手工创建的ext4 文件系统无ACL
功能。需手动增加:
tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt
ACL 生效顺序:所有者,自定义用户,自定义组,其他人
多用户或者组的文件和目录赋予访问权限rwx
• mount -o acl /directory 手动为设备增加facl权限
• getfacl file |directory 查看文件或目录的facl信息
• setfacl -m u:wang:rwx file|directory 设定用户的权限
[root@7 1]# setfacl -m u:lvasu:rwx a [root@7 1]# getfacl a # file: a # owner: root # group: root user::rw- user:lvasu:rwx user:user1:rw- group::r-x group:g1:--- mask::rwx other::r--
• setfacl -Rm g:sales:rwX directory 递归设定组权限
[root@7 1]# setfacl -Rm g:lvasu:rwX . [root@7 1]# getfacl . # file: . # owner: root # group: root user::rwx user:lvasu:rwx user:user1:rwx group::r-x group:lvasu:rwx group:g1:--- mask::rwx other::r-x default:user::rwx default:user:user1:rw- #effective:r-- default:group::r-x default:group:g1:--- default:mask::r-x default:other::r-x
• setfacl -M file.acl file|directory 批量设置用户和组的权限
[root@7 1]# cat acl1.txt u:user1:0 u:lvasu:rw g:g1:rw [root@7 1]# setfacl -M acl1.txt 2 [root@7 1]# getfacl 2 # file: 2 # owner: root # group: root user::rwx user:lvasu:rw- user:user1:--- group::r-x group:lvasu:rwx group:g1:rw- mask::rwx other::r-x default:user::rwx default:user:user1:rw- #effective:r-- default:group::r-x default:group:g1:--- default:mask::r-x default:other::r-x
• setfacl -m g:salesgroup:rw file| directory 设定mask权限
[root@7 testdir]# setfacl -m g:g2:rw 3 [root@7 testdir]# getfacl 3 # file: 3 # owner: root # group: root user::rw- group::r-- group:g2:rw- mask::rw- other::r--
• setfacl -m d:u:wang:rx directory 设置默认的ACL权限
• setfacl -x u:wang file |directory 删除用户和组的权限
[root@7 testdir]# setfacl -x u:lvasu 1 [root@7 testdir]# getfacl 1 # file: 1 # owner: root # group: root user::rwx user:user1:rwx group::r-x group:lvasu:rwx group:g1:--- mask::rwx other::r-x default:user::rwx default:user:user1:rw- #effective:r-- default:group::r-x default:group:g1:--- default:mask::r-x default:other::r-x
• setfacl -X file.acl directory 批量删除用户和组的权限
[root@7 1]# cat acl2.txt u:user1 u:lvasu g:g1 [root@7 1]# setfacl -X acl2.txt 2 [root@7 1]# getfacl 2 # file: 2 # owner: root # group: root user::rwx group::r-x group:lvasu:rwx mask::rwx other::r-x default:user::rwx default:user:user1:rw- #effective:r-- default:group::r-x default:group:g1:--- default:mask::r-x default:other::r-x
-
setfacl -k dir 删除默认ACL 权限
-
[root@7 testdir]# setfacl -k 1 [root@7 testdir]# getfacl 1 # file: 1 # owner: root # group: root user::rwx user:user1:rwx group::r-x group:lvasu:rwx group:g1:--- mask::rwx other::r-x
-
setfacl -b file1 清除所有ACL 权限
-
[root@7 testdir]# setfacl -Rb /testdir [root@7 testdir]# getfacl . # file: . # owner: root # group: root user::rwx group::r-x other::r-x
创建acl批量控制文件
acl1.txt
u:wang:0
u:lvasu:rw
g:it:rw
# setfacl -M acl1.txt f1
acl2.txt
u:wang
u:lvasu
g:lv
# setfacl -X acl2.txt f`1
mask遮罩码
ACL 文件上的group 权限是mask 值(自定义用户,自定义组,拥有组的最大权限), 而非传统的组权限
# chmod -g=x 设置的为mask遮罩码 存在FACL的情况下
默认ACL 权限给了x ,文件也不会继承x权限
base ACL 不能删除
复制权限:
getfacl file1 | setfacl –set-file=- file2 复制file1的 的acl 权限给file2
[root@7 testdir]# getfacl 3 # file: 3 # owner: root # group: root user::rw- group::r-- group:g2:rw- mask::rw- other::r [root@7 testdir]# getfacl 3 |setfacl --set-file=- 4 [root@7 testdir]# getfacl 4 # file: 4 # owner: root # group: root user::rw- group::r-- group:g2:rw- mask::rw- other::r--
作用域:mask 只影响除所有者和other 的之外(在facl添加的组、用户和用户的所属组)人和组的最大权限
设置mask:
setfacl -m mask::rx file
setfacl -m m::x file
Mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限(Effective Permission)
用户或组的设置必须存在于mask 权限设定范围内才会生效。
重新设置ACL:
–set 选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能象-m 一样只是添加ACL 就可以.
如: setfacl –set u::rw,u:wang:rw,g::r,o::- file1
[root@7 testdir]# setfacl --set u::rw,u:lvasu:rw,g::r,o::- 3 [root@7 testdir]# getfacl 3 # file: 3 # owner: root # group: root user::rw- user:lvasu:rw- group::r-- mask::rw- other::---
备份和恢复ACL
主要的文件操作命令cp 和mv 都支持ACL,只是cp 命令需要加上-p参数。
但是tar 等常见的备份工具是不会保留目录和文件的ACL 信息
cp -a
#getfacl -R /tmp/dir1 > acl.txt
#setfacl -R -b /tmp/dir1
#setfacl -R –set-file=acl.txt /tmp/dir1
#getfacl -R /tmp/dir1
[root@7 testdir]# getfacl -R 3 > acl.txt [root@7 testdir]# cat acl.txt # file: 3 # owner: root # group: root user::rw- user:lvasu:rw- group::r-- mask::rw- other::--- [root@7 testdir]# setfacl -R -b 3 [root@7 testdir]# getfacl 3 # file: 3 # owner: root # group: root user::rw- group::r-- other::--- [root@7 testdir]# setfacl -R --set-file=acl.txt 3 [root@7 testdir]# getfacl 3 # file: 3 # owner: root # group: root user::rw- user:lvasu:rw- group::r-- mask::rw- other::---
其他命令及小技巧
1、设置暂时禁止普通用户登陆
#touch /etc/nologin #echo system is maintaining>>/etc/nologin #touch /run/nologin #echo hello > /run/nologin #rm -f /etc/nologin #rm -f /run/nologin
2、复制文件的方法
cp -r /etc/skel/.[^]* /home/haha cp -r `ls -A` /home/hehe cp -r /etc/skel/. /home/haha cp -r /etc/skel /home/xixi 复制文件夹
3、复制文件的方法
[root@6 home]# su - lvasu -c 'echo $USER' lvasu [root@6 home]# su - lvasu -c "echo $USER" root [root@6 home]# su - lvasu -c `echo $USER` -bash: root: command not found
原创文章,作者:lvasu,如若转载,请注明出处:http://www.178linux.com/28556
评论列表(1条)
文章整体思路清晰,对命令的常见选项总结很好,同时通过自己的实际操作验证了结论。