目录与文件的权限意义:
权限对文件的意义:
文件是实际含有数据的地方,包含一般文本文件,数据库内容文件,二进制可执行文件
r:可读取此文件的实际内容,如可读取文本文件的文字内容等
w:可以编辑、新增、或者修改该文件的内容(但不含删除该文件),这里的修改等 是对文件内容而言,是否可以删除文件要看该目录的权限
x:该文件具有可以被系统执行的权限,linux中文件是否可被执行,不是看其文件 名,而是看权限
权限对目录的意义:
目录主要的内容是记录文件名列表,文件名与目录有强烈的关联
r:表示具有读取目录结构列表的权限
w:1.新建新的文件与目录
2.删除已经存在的文件与目录
3.将已存在的文件与目录的重命名
x:表示用户是否能够进入该目录病成为工作目录
tips:
如果想让一个目录让任何人都可以浏览,至少应该开放r,x权限,w不能随便给
linux用户和组管理
useradd命令: 创建用户
useradd [options] 登录名
-u UID: 指定UID
-g GROUP:指定基本组ID
-G GROUP1,GROUP2....:指明用户所属的附加组
-c,--comment COMMENT:指明注释信息
-d,--home HOME_DIR:以指定的路径作为家目录,
-s,:指定用户的默认shell
-r:创建系统用户,默认没有家目录
-M:不创建家目录
-N 不创建私用组做主组,使用users组做主组
useradd -D: 显示创建用户的默认配置
useradd -D arg:修改默认选项的值
默认修改的结果其实在/etc/default/useradd
创建用户时的诸多默认设定配置文件为/etc/login.defs
添加系统用户: 默认不会设置shell为/bin/bash
useradd -r -s /sbin/nologin USERNAME
批量添加用户:
按照/etc/passwd的格式写入要添加的用户信息,自动就会修改/etc/shadow|group等的配置,除了密码
#vim users.txt user1:x:2000:2000::/home/user1:/bin/bash user2:x:2001:2001::/home/user2:/bin/bash # newuser users.txt
批量设置密码:
#cat passwd.txt | chapasswd
passwd.txt文件的格式是:
username:passwdword
usermod命令: 修改用户属性
usermod 选项 登录名
-u,--uid UID:修改用户的ID为此处指定的新UID,如果同时有-o选项,则可以重复使用其他用 户的标识号,例如让两个用户拥有相同的UID
eg: usermod -o -u 0 jay
-g GID:修改用户所属的基本组
-G GROUP1,GROUP2....:指定用户所属的附加组
-a -G GID : 添加一个附加组
-c OMMENT:指明注释信息
-d -m HOME_DIR:修改用户的家目录,并将原来的文件也转移到新位置,新设定的位置应不存在 和自己家目录相同名的目录,否则无法新目录中无以前的内容
-d HOME_DIR:只重新指定新的家目录,原有的文件不动
-l NEW_LOGIN:修改用户名
-s SHELL: 修改用户的shell
-L :锁住用户,用户不能登录,其实是在密码串前加一个“!”
-U:解锁用户
tips:修改用户名后只是修改了用户的名称,其他的家目录和密码等都没有改变,所以/home/下并没有新用户名命名的目录
userdel: 删除用户
-r:移除用户的家目录,默认不删除用户家目录
组的管理
groupadd : 添加组
groupadd [options] group_name
-g GID:指定GID,默认是上一组的GID
-r :创建系统组
eg:增加一个组ID为3305的系统组
[root@localhost ~]# groupadd -r -g 3305 myssql
[root@localhost ~]# tail -1 /etc/group
myssql:x:3305:
groupmod命令: 修改组的属性
groupadd [options] GROUP
-g GID: 修改GID;
-n new_name:删除组名
eg: 同时修改组合GID
[root@localhost ~]# groupmod -g 3308 -n mygroup myssql
[root@localhost ~]# !tai
tail -1 /etc/group
mygroup:x:3308:
groupdel: 删除组
passwd 命令
-l,-u:锁定和解锁用户
-d:清除用户的密码
--stdin: 利用标准输入赋予密码
eg: echo "haha" | passwd --stdin jay
显示文件中用户信息
getent passwd|shadow|group USERNAME
切换基本组
newgrp:可以切换基本组。
exit:可以撤销为原来的组
[jay@localhost 11:44 ~]$ newgrp centos
[jay@localhost 11:44 ~]$ groups
centos root bin jay
组密码:gpasswd
gpasswd [OPTION] GROUP
-a user: 将user添加至指定组中;
-d user: 从指定组中移除用户user
-A user1,user2,...: 设置有管理权限的用户列表
如果用户本不属于此组,则需要组密码
不加选项就是赋予组密码,可以用来被其他用户临时作为基本组
chage命令:
chage [options] 用户名
-l:列出用户的以及密码的有效期限
-m:修改密码的最小天数
-M:修改密码的最大天数
-I:密码过期后,锁定帐号的天数
-d:指定密码最后修改的日期
-E:有效期,0表示立即过期,-1表示永不过期
-W:密码过期前,开始警告天数
$ sudo chage -d0 <user-name>
最初,“-d <N>”选项应该被设成密码的“有效期”(自密码上一次更改时间1970年1月1日以来 的天数)。所以,“-d0”表明该密码是在1970年1月1日更改的,这实际上让当前密码到期失效,从而让 密码在下一次登录时被更改。
让当前密码到期失效的另一个办法是通过passwd -e命令。
$ sudo passwd -e <user-name> 此命令具有与“chage -d0”同样的功效,让用户的当前密码立即到期失效。
[root@localhost ~]# passwd -e lu
Expiring password for user lu.
passwd: Success
You have new mail in /var/spool/mail/root
[root@localhost ~]# tail -1 /etc/shadow
lu:$6$ykaDA5pL$F4/xBagMqc81vmYh5g3di3hdpmQmGuhqtFBegVHLOci4Fd.fhai.XLcFwANBQU1kw3ASyy0Q.25XyFx7KJ/JL/:0:0:99999:7:::
参照指定文件的权限来给新文件赋予权限
chown [options] --reference=SFILE DFILE
u,g,o,a, +-= rwx
技巧:
X:只给目录加执行权限,对于文件不加权限
[root@localhost test]# ll test1
total 4
-rw-r--r--. 1 root root 0 Aug 2 15:21 xxx
drw-r--r--. 2 root root 4096 Aug 2 15:22 yyy
[root@localhost test]# ll test1 -d
drw-------. 3 y1 y1 4096 Aug 2 15:22 test1
[root@localhost test]# chmod -R a+X test1
[root@localhost test]# ll test1
total 4
-rw-r--r--. 1 root root 0 Aug 2 15:21 xxx
drwxr-xr-x. 2 root root 4096 Aug 2 15:22 yyy
[root@localhost test]# ll test1 -d
drwx--x--x. 3 y1 y1 4096 Aug 2 15:22 test1
chmod --reference f1 f2 参考f1的权限设置f2
chmod,chown等是root才可以设置,普通用户可以利用chgrp修改文件的属组为自己已所属的附加组
对于/etc/passwd,/etc/group等文件直接利用vim命令可能造成文件的格式问题,建议使用vipw,vigr
对于/etc/passwd,/etc/group等文件进行检查可以使用命令pwck和grpck
umask:默认权限
文件:
666-umask
目录:
777-umask
umask权限的含义是:从最大权限中屏蔽掉相应的权限位,从而获得默认权限
如果umask如果是003,那么新建的文件权限是什么?
666-003=663(rwxrwx-wx) 这个是不对的,因为一般文件是默认没有可执行权限的
正确的做法:
可以使用字符做加减
rw-rw-rw-
--x-wxrwx
------------------
rw-r-----
默认权限=最大权限-unask
如果是目录,按结果即可
如果是文件,结果为偶数的,直接使用;为奇数的,将奇数加1
隐藏权限
chatter:设置文件的隐藏属性
+:增加某一个特殊参数,其他原本参数不动
-:删除某一个特殊参数,其他参数不动
=:设置为仅后面的参数
选项:
a:设置a后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root才能设置这 个属性
i:它可以让一个文件不能被删除,改名,设置连接也无法写入或添加数据,对系统安全有 重要意义,只root可设置
lsattr:查看隐藏属性
特殊权限
SetUID: 针对文件
SUID权限仅对二进制程序有效
执行者对于该程序需要具有x的执行权限
本权限仅在执行过程中有效
执行者将具有该程序所有者的权限
eg:[root@livecd ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd
SetGID: 针对文件
SGID对二进制程序有用
程序执行者对于该程序来说,需具备x的权限
执行者在执行过程中将会获得该程序用户组的支持
设置该选项后具有的功能:
用户若对于此目录具有r与x的权限时,该用户能够进入此目录
用户在此目录下的有效用户组将会变成该目录的用户组
若用户再次目录下具有w的权限(可以新建文件),则用户所创建的新文件 的用户组与此目录的用户组相同
SBIT: 针对目录
当用户对于此目录具有w,x权限,即具有写入的权限
当用户在该目录下创建文件或目录时,仅有自己与root才有权利删除该文件
处理方法: 大写的S表示其本身没有执行权限
[root@localhost ~]# ll b
-rw-r--r--. 1 root root 14 Aug 1 18:32 b
[root@localhost ~]# chmod ug+s,o+t b ; ll b
-rwSr-Sr-T. 1 root root 14 Aug 1 18:32 b
ACL即Access Control List 主要的目的是提供传统的owner,group,others的read,write,execute 权限之外的具体权限设置,ACL可以针对单一用户、单一文件或目录来进行r,w,x的权限控制,对于需要 特殊权限的使用状况有一定帮助。如,某一个文件,不让单一的某个用户访问。
ACL使用两个命令来对其进行控制
getfacl:取得某个文件/目录的ACL设置项目
setfacl:设置某个文件/目录的ACL设置项目
setfacl 参数
-m:设置后续acl参数
-x:删除后续acl参数
-b:删除全部的acl参数
-k:删除默认的acl参数
-R:递归设置acl,包括子目录
-d:设置默认acl
[root@ www.linuxidc.com ~]# setfacl -m u:code:r /test
[root@ www.linuxidc.com ~]# ll /test
-rwxrwxrwx+ 1 root root 1 Apr 11 07:25 /test //可以看到权限的最后多了一个”+”号
[root@ www.linuxidc.com ~]#
现在再次查看一下此文件的ACL属性
[root@ www.linuxidc.com ~]# getfacl /test
getfacl: Removing leading ‘/‘ from absolute path names
# file: test
# owner: root
# group: root
user::rwx
user:code:r-- //可以看到code单独的权限为r--
group::rwx
mask::rwx
other::rwx
设置file1的权限给f2
getfacl file1 | setfacl --set-file=- file2 复制file1 的acl权限给file2
[root@localhost ~]# setfacl -x u:code /test
acl命令集合及含义:
setfacl -m u:wang:rwx file|directory 设置额外用户权限用户
setfacl -Rm g:sales:rwX directory
setfacl -M file.acl file|directory 可以在一个文件中写好要设置的权限,然后-M选项
setfacl -m g:salesgroup:rw file| directory 设置额外组权限
设置某个目录具有该权限,则其下新建文件和目录都继承
setfacl -m d:u:wang:rx directory
setfacl -x u:wang file |directory 删除用户的acl权限
setfacl -X file.acl directory
[root@ www.linuxidc.com ~]# getfacl /test
getfacl: Removing leading ‘/‘ from absolute path names
# file: test
# owner: root
# group: root
user::rwx
user:code:r-- //可以看到code单独的权限为r--
group::rwx
mask::rwx 设置除属主和other外的其他人的最大权限
other::rwx
mask::rwx 设置除属主和other外的其他人的最大权限,就是额外添加的用户和组以及自身的组最大权限的限定,可以自己设置
[user5@localhost ~]$ setfacl -m mask:r a
[user5@localhost ~]$ getfacl a
# file: a
# owner: user5
# group: user5
user::rw-
user:root:rwx#effective:r--
group::rw-#effective:r--
mask::r--
other::r--
本文出自 “mylinux” 博客,请务必保留此出处http://luxiangyu.blog.51cto.com/9976123/1833688
原文地址:http://luxiangyu.blog.51cto.com/9976123/1833688