原文来自我的个人博客 twodam.net
文件权限
文件权限描述符
drwxrwxr-x 2 lucky lucky 4096 Apr 15 15:48 ./
drwxr-xr-x 5 lucky lucky 4096 Apr 14 13:24 ../
-rw-rw-r-- 1 lucky lucky 161 Apr 13 20:21 news
-rw-rw-r-- 1 lucky lucky 309 Apr 13 19:34 passwd.cut
-rw-rw-r-- 1 lucky lucky 309 Apr 13 19:34 passwd.sort
1 位是文件类型 2-4位是owner的权限 5-7位是group的权限 8-10位是other的权限 d代表directory(目录) rwx分别是read(读),write(写),execute(执行) -
在第一位指的是文件类型为文件,在后面的位上指的是不具有对应权限
文件夹权限描述符
文件夹权限描述符中的rwx含义是不同与file的。
可查阅:
1.Execute vs Read bit. How do directory permissions in Linux work?
2.在linux系统中输入man chmod
,info '(coreutils) chmod invocation'
(或是加上--vi-keys选项就可以使用vi的键位来控制翻页等操作了,即info --vi-keys '(coreutils) chmod invocation'
,具体按h查看帮助).
使用符号表示法设定文件或目录上的权限
chmod [-R] mode 文件名或是目录名
,R决定是否递归设置该目录子目录及文件的对应权限。
--------------mode--------------
who operator permission
u/g/o/a +/-/= r/w/x/X/s/t
Each MODE is of the form '[ugoa]*(-+=)+|[-+=][0-7]+'. 这里a是all也就是所有用户的意思。 +表示加入权限,-表示去掉权限,=表示设定权限 用法示例:
chmod ug+x testfile #给所有者,同组用户加上对testfile的执行权限
chmod -R ugo-r /home/koala/test.d #移除所有者,同组用户以及其他用户对/home/koala/test.d目录中所有文件的读权限
特殊权限
用户、群组与权限
用户密码状态
passwd -S 用户名
查看用户密码状态
S选项的含义可以通过man passwd
查看。
状态信息由七个属性组成。第一个属性是用户的登录名,第二个属性为L,NP,P时分别表示用户账户密码被锁定,没有密码和密码可用,第三个属性为密码最后更改的日期,接下来四个属性分别是密码的最小天数(密码更改最短间隔时间),最大天数(多少天后用户需要更改密码),警告天数(在密码过期前多久开始提示)以及不可用天数段(多久后密码不可用)。详见下面测试:
root@ubuntu:~# passwd -n 1 koala && passwd -S koala #修改密码更改最短间隔时间
passwd: password expiry information changed.
koala P 04/13/2017 1 99999 7 -1
root@ubuntu:~# passwd -x 1 koala && passwd -S koala #修改密码更改最大天数
passwd: password expiry information changed.
koala P 04/13/2017 1 1 7 -1
root@ubuntu:~# passwd -w 1 koala && passwd -S koala #修改警告天数
passwd: password expiry information changed.
koala P 04/13/2017 1 1 1 -1
root@ubuntu:~# passwd -i 1 koala && passwd -S koala #修改不可用天数
passwd: password expiry information changed.
koala P 04/13/2017 1 1 1 1
root@ubuntu:~# passwd -n 0 -x 99999 -w 7 -i -1 koala && passwd -S koala #恢复初始的参数
passwd: password expiry information changed.
koala P 04/13/2017 0 99999 7 -1
su中-选项的作用
su -user
和 su user
的区别是?
以下是Manual page中对-
的描述:
-, -l, --login Provide an environment similar to what the user would expect had the user logged in directly. When - is used, it must be specified before any username. For portability it is recommended to use it as last option, before any username. The other forms (-l and --login) do not have this restriction.
实际效果是加上了-(或是-l,--login)选项后,相应的环境也会作调整,如$PATH的值,以及切换用户后当前目录的地址也会对应切换。
查看与当前用户有关消息的命令
whoami #确定当前用户
id #获取当前用户的uid,gid,groups信息
groups #显示当前用户所属的群组
inode
一个i节点就是一个与某个特定对象(如文件或目录)相关的信息列表。i节点实际上是一个数据结构,它存放了有关一个普通文件、目录或其他文件系统对象的基本信息。 通常每个i节点由两部分组成,第一部分是有关文件的基本信息,第二部分是指向存储文件信息的数据块的指针。
-- 《名师讲坛:Linux入门和实战经典》
基本信息有: 1.inode-no,文件系统中唯一的编号。 2.File type,如-为普通文件,d表示目录。 3.permission,在i节点中是使用数学表示法来表示存储每一个文件或目录的权限。 3.Link count,硬连接数。 4.UID,文件所有者的UID。 5.GID,文件所有者所属群组的GID。 6.size,文件的大小。 7.Time stamp,时间戳,包括 (1)Acess time,最后一次存取这个文件的时间。 (2)Modify time,最后一次编辑这个文件的时间。 (3)Change time,指的是i节点中相对于这个文件的任何一列的元数据发生变化的时间。
cp、mv及rm命令如何操作inodes
cp
1.找到一个空闲的i节点记录,把新增加文件的元数据写入到这个空闲的i节点中并将新纪录放入inode表中。 2.同时还要产生一条目录记录,把新增文件名对应到这个空的inode号码。 3.当做完以上操作以后,系统才会将文件的内容复制到新增的文件中去。
mv
1.系统会首先产生一个新的目录记录,把新的文件名对应到原有的i节点。 2.删除带有旧文件名的原有的目录记录。 3.系统除了会更新时间戳之外,移动文件行为对原本在inode表中的数据不会有任何影响,也不会将数据移动到其他的文件中去,也就是没有发生真正的数据移动。 4.如果要移动的文件的源位置与目的位置是在不同的文件系统上时,mv的行为是复制和删除两个动作。
rm
1.系统首先将这个文件的连接数减1,之后这个文件的link count如果小于1,系统就会释放这个i节点以便重用。 2.释放存储这个文件内容的数据块,即将这些数据块标记为可以使用。 3.删除记录这个文件名和i节点号的目录记录。 4.系统并未真正删除这一文件的数据,只有当其他文件要使用这些已经释放的数据块时,这些数据块中原有的数据才会被覆盖掉。