linux存储文件权限
A. linux文件权限一共10位第三段表示linux文件权限
Linux挂载文件的权限?
需要管理员用户才能mount,文件权限为-rwx-r-x-r-x
linux如何给文件授权?
答具体方法如下
需求1:新建除了root之外的新用户,并且新用户具有root用户的相关功能
1.首先修改/etc/sudoers文件具有写入的权限
chmod777/etc/sudoers
2.修改/etc/sudoers
vim/etc/sudoers,定位到如下行:
##
rootALL=(ALL)ALL
复制并增加一行,将root改为自定义的用户名,然后保存关闭文件
3.执行以下命令使文件生效
chmod440/etc/sudoers
4.切换到新用户进行其它操作
su-xxxx
#################################################分割线############################################################
需求2:切换到新用户之后,在/opt系统目录下创建新目录,并且将目录的拥有权授权给新用户
1.创建目录folder1
sudomkdirfolder1
2.创建成功后将folder1的所有这及所属分组分配给新用户
sudochown用户名:密码folder1/
3.之后ll命令查看当前目录的归属
linux文件权限第三段表示什么?
答,第三段3位表示所在组权限(xxx)分别表示读(4)写(2)执行(1)
第一段1位表示文件类型
第二段3位表示所有者权限(xxx)分别表示读(4)写(2)执行(1)
第三段3位表示所在组权限(xxx)分别表示读(4)写(2)执行(1)
第四段4位表示其他用户权限(xxx)分别表示读(4)写(2)执行(1)
Linux系统中,预设的情况下,系统中所有的帐号与一般身份使用者,以及root的相关信息,都是记录在/etc/passwd文件中。每个人的密码则是记录在/etc/shadow文件下。此外,所有的组群名称记录在/etc/group内。
(1)linux存储文件权限扩展阅读:
在Linux文件系统中,作为一种特殊类型/proc文件系统只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。/proc文件系统是一个伪文件系统,用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某些参数。
linux下载文件无权限?
文件被设置了权限管理,linux软件版本可能没有该文件的使用权限。
unix/linux系统中如何读取一个文件的存储权限?
unix/linux通过命令ls-a来读取一个文件的存储权限,通过命令chown来修改文件的存储权限。
B. Linux学习笔记三权限管理文件目录权限用户权限
文件及目录的权限管理
上篇简单介绍了下文件和目录的一些简单的操作,接下来介绍用户和文件权限的管理。首先了解用户和组账号的配置文件,然后是管理用户和组账号,最后要会设置文件和目录权限和归属。
Linux基于用户身份对资源访问进行控制。用户账号分为超级用户root(相当于windows下的Administrator),然后是普通用户。Linux中是不建议使用root登录系统执行管理任务的,因为这很不安全。要是误删了系统中某个重要的文件,那就玩完了。
用户账号文件——passwd
用于保存用户的账号的基本信息,文件位置:/etc/passwd,每一行对应一个用户的账号记录,下面是取出最后两行记录的账号信息,然后来分析它每个字段的含义(字段之间用冒号分隔)。
字段1 jzhou:用户账号的名字;
字段2 x :密码占位符
字段3 500:用户账号的UID号(RedHat和CentOS中默认从500开始)
字段4 500:用户所属主账号的GID号(也是默认从500开始)
字段5zhoujie:用户全名
字段6 /home/jzhou :用户的宿主目录,即家目录
字段7 /bin/bash :登录shell信息
基于系统运行和管理需要,所有用户都可以访问passwd文件中的内容,但只有root用户才能更改
用户密码文件——shadow
用于保存密码串、密码有效期等信息,文件位置:/etc/shadow,每一行对应一个用户的密码记录。下面列出最后两行记录并解释每个字段的含义:
字段1 :用户账号的名称
字段2 :加密的密码字串信息(采用MD5加密)
字段3 :上次修改密码的时间
字段4:密码的最短有效天数,默认值为 0
字段5:密码的最长有效天数,默认值为 99999
字段6:提前多少天警告用户口令将要过期,默认值为 7
字段7:在密码过期后多少天禁用此用户(默认为空)
字段8:账号失效时间(默认为空)
字段9 :保留字段(未使用)
默认只要root用户能够读取该文件中的内容,并且不允许root直接编辑该文件中的内容。那么添加用户时如何来指定选项以实现这些功能呢?下面将简单介绍如何添加用户、组。
添加用户账号——useradd
用户账号的初始配置文件
文件来源——新建用户账号时,从/etc/skel目录中复制而来
主要的用户初始配置文件有 :
复制代码代码如下:~/.bash_profile:用户每次登录时执行
~/.bashrc:每次进入新的Bash环境时执行,默认设置了一些命令的别名
~/.bash_logout:用户每次退出登录时执行
可通过cat命令查看上述文件的内容。
设置/更改用户口令——passwd
一般我不会也没有必要解释每个命令的带的参数,但是passwd我会介绍它的参数含义及用法,因为我觉得在系统维护中会常用到。
复制代码代码如下:[jzhou@localhost ~]$ su - root
口令:
[root@localhost ~]# passwd -l jzhou ==>锁定用户jzhou的账号
Locking password for user jzhou.
passwd: Success
[root@localhost ~]# passwd -S jzhou ==>查看用户状态
jzhou LK 2013-02-03 0 99999 7 -1 (Password locked.) ==>为锁定状态
[root@localhost ~]# tail -2 /etc/shadow ==>账号锁定后,有木有发现密码位前面多了两个!!,表示密码不可用
jzhou:!!$1$XRmjIBM9$SgXA00pPfvhjvxt/9..Lh.:15739:0:99999:7:::
user1:!!:15771:0:99999:7:::
[root@localhost ~]# passwd -u jzhou ==>为账号jzhou解锁
Unlocking password for user jzhou. ==>已被成功解锁
passwd: Success.
[root@localhost ~]# passwd -S jzhou ==>再次查看用户状态
jzhou PS 2013-02-03 0 99999 7 -1 (Password set, MD5 crypt.)
[root@localhost ~]# tail -2 /etc/shadow ==>观察密码位变化,没有了两个!!,表示密码可用
jzhou:$1$XRmjIBM9$SgXA00pPfvhjvxt/9..Lh.:15739:0:99999:7:::
user1:!!:15771:0:99999:7:::
[root@localhost ~]# passwd -d jzhou ==>清楚用户jzhou的密码
Removing password for user jzhou. ==>密码已被成功清除
passwd: Success
[root@localhost ~]# tail -2 /etc/shadow ==>查看密码位有什么变化
jzhou::15771:0:99999:7::: ==>密码位变空了。。。
user1:!!:15771:0:99999:7:::
[root@localhost ~]# passwd jzhou ==>为用户重新设定密码
Changing password for user jzhou.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully. ==>OK,密码已经设置成功了
[root@localhost ~]#
注意,“未设置密码”的用户账号尚未完成初始化,处于不可登录状态,与“空密码”的情况不同,普通用户可以使用passwd命令,但只能更改自己的密码。另外,被锁定的账号也不能登录系统。
修改用户账号的属性——usermod
它的命令有几个功能和passwd是一样的,比如L和U参数就是锁定和解锁账户的,不过要大写。其他选项和useradd的中的一样,就是更改uid,gid等。
删除用户账号——userdel
删除账号时直接用”userdel 用户名“就行了,但是这样删除的话,用户的家目录依然存在,这时你若要再建立一个与刚才同名的账号那是不行的,所以我习惯带上-r选项,删的彻底点,即连同家目录一起删除,反正删除账号后家目录也没什么用了。
还有两个域组账号相关的文件,即/etc/group 和/etc/gshadow,不太常用,尤其是后者,知道下应该就行了。
添加组账号——groupadd
添加一个组账号,在新建用户时,若要指定用户的gid和组名称,则必须先保证这个组要存在,所以要先建立组,简单的操作如下:
复制代码代码如下:[root@localhost ~]#groupadd -g 1000 test ==>创建一个组gid为1000
[root@localhost ~]#tail -3 /etc/group
jzhou:x:500:
user1:x:504:
test:x:1000:
[root@localhost ~]#
删除组账号——groupdel
很简单,直接接用户名作为参数,删除组账号后,从/etc/group文件中将查不到相应的记录。
用户和组账号查询:
id命令——查询用户身份标识
groups命令——查询用户所属的组
finger命令——查询用户的详细信息
users、w、who命令查询已登录到主机的用户信息
文件/目录的权限和归属
将ls带上参数l或直接打ll命令,则可以查看用户对文件的使用权。
第一列权限位由10位(比如d rwx rwx r-x)组成,其中第一位表示文件类型,d表示目录,l表示链接文件,b表示块文件,c表示字符文件,-表示普通文件。关于rwx-分别表示读、写、执行、无权限,r w x - 四个权限字符分别可表示为8进制数字4,2,1,0,即 rwx rwx r-x权限也可表示为775,其中前三位rwx(7)表示文件所有者(owner)对该文件的权限,中间3位rwx(7)表示文件所在的组(group)对该文件的权限,最后三位r-x(5)表示其他用户(other)对该文件的权限,也即ugo权限。
设置文件/目录的权限——chmod
复制代码代码如下:[jzhou@localhost dirtest]$ ll
总计 36
drwxrwxr-x 2 jzhou jzhou 4096 03-05 22:43 dirtest1
lrwxrwxrwx 1 jzhou jzhou 8 03-05 22:45 linkfile -> testfile
-rw-rw-r-- 1 jzhou jzhou 67 03-05 22:40 testfile
[jzhou@localhost dirtest]$ chmod g-w,o+x testfile ==>设置文件testfile的组权限和其他人权限,注意权限变化
[jzhou@localhost dirtest]$ ls -l
总计 36
drwxrwxr-x 2 jzhou jzhou 4096 03-05 22:43 dirtest1
lrwxrwxrwx 1 jzhou jzhou 8 03-05 22:45 linkfile -> testfile
-rw-r--r-x 1 jzhou jzhou 67 03-05 22:40 testfile ==>看,权限变化了
[jzhou@localhost dirtest]$ chmod 644 dirtest1/ ==>改变目录dirtest1的权限,即读写|读|读
[jzhou@localhost dirtest]$ ll
总计 36
drw-r--r-- 2 jzhou jzhou 4096 03-05 22:43 dirtest1 ==>发现它的变化了没
lrwxrwxrwx 1 jzhou jzhou 8 03-05 22:45 linkfile -> testfile
-rw-r--r-x 1 jzhou jzhou 67 03-05 22:40 testfile
[jzhou@localhost dirtest]$ chown jzhou:root testfile ==>普通用户没有权限更改
chown: 正在更改 “testfile” 的所有者: 不允许的操作
[jzhou@localhost dirtest]$ su root ==>切换到root用户
口令:
[root@localhost dirtest]# ll
总计 36
drw-r--r-- 2 jzhou jzhou 4096 03-05 22:43 dirtest1
lrwxrwxrwx 1 jzhou jzhou 8 03-05 22:45 linkfile -> testfile
-rw-r--r-x 1 jzhou jzhou 67 03-05 22:40 testfile
[root@localhost dirtest]# chown root:root testfile ==>将文件testfile的拥有者和属组都改为root
[root@localhost dirtest]# ll
总计 36
drw-r--r-- 2 jzhou jzhou 4096 03-05 22:43 dirtest1
lrwxrwxrwx 1 jzhou jzhou 8 03-05 22:45 linkfile -> testfile
-rw-r--r-x 1 root root 67 03-05 22:40 testfile ==>看,它的文件拥有者和所属组都变为root了
[root@localhost dirtest]#
修改目录的权限和所属组时可以指定-R选项以实现目录里的文件或者目录也可以递归变化。若只修改文件/目录所有者只需指定前者,即chown root testfile,若只修改文件/目录所属组的权限,前面的用户可不写,即chown :root testfile。
附加权限位
普通用户并没有权限修改“/etc/shadow”文件,那为什么可以修改自己的登录密码呢?因为passwd命令程序被设置了SUID权限,普通用户在执行该命令时临时获得相当于属主用户(root)的权限。
set位权限的主要用途:
为可执行(有 x 权限的)文件设置,权限字符为“s”;
其他用户执行该文件时,将拥有属主或属组用户的权限。
set位权限类型:
SUID:表示对属主用户增加SET位权限;
SGID:表示对属组内的用户增加SET位权限。
[root@localhost ~]# ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 19876 2006-07-17 /usr/bin/passwd
==>普通用户以root用户的身份,间接更新了shadow文件中自己的密码
注意:不要轻易为可执行文件设置SET位权限,特别是对于那些属主、属组是root的执行程序,使用SET位权限时更应该慎重。例如,若为vim编辑器程序设置SUID权限,将导致普通用户也可以使用vim编辑器修改系统中的任何配置文件
粘滞位(Sticky)
主要用途:
为公共目录(例如,权限为777的)设置,权限字符为“t”
用户不能删除该目录中其他用户的文件
由于系统及服务程序运行的需要, Linux提供了/tmp、/var/tmp等临时目录,允许任意用户、程序写入数据,然而试想一下,若任意一个普通用户都能够删除系统服务运行中使用的临时文件,将造成什么后果?设置粘滞位以后,正好可以保持一种动态的平衡:允许各用户在目录中任意写入、删除数据,但是禁止随意删除其他用户的数据 。
[root@localhost ~]# ls -ld /tmp /var/tmp
drwxrwxrwt 8 root root 4096 09-09 15:07 /tmp ==>就是将t位代替执行位x
drwxrwxrwt 2 root root 4096 09-09 07:00 /var/tmp
其实这些特殊权限位用的不多,我认为只不过是为那几种特殊的文件作个解释罢了,不用深究的,知道派什么用的就行了吧。
使用附加权限
设置SET位、粘滞位权限
使用权限字符
chmod ug±s 可执行文件...
chmod o±t 目录名...
使用权限数字:
复制代码代码如下:
chmod mnnn 可执行文件...
m为4时,对应SUID,2对应SGID,1对应粘滞位,可叠加
SET位标记字符为“s”,若使用8进制数字形式,则SUID对应为“4”、SGID对应为“2”;在权限模式中可采用“nnnn”的形式时,如“4755”表示设置SUID权限、“6755”表示同时设置SUID、SGID权限。
C. linux下文件夹权限设置
1、Linux权限说明
linux的文件夹也有三种权限分别是:
r(Read 读取):对文件有读取文件内容的权限(cat指令);对目录有查看目录下内容的权限(ls命令)。
x(eXecute 执行):对文件有执行文件的权限(./指令);对目录该有进入目录的权限(cd命令)。
w(Write 写入):对文件有增加、删除、修改文件内容的权限;对目录有增加、删除、修改目录下内容的权限。w 是可以在目录下创建、修改、删除文件,不仅可以修改自己的文件也可以修改别人的文件,因此增加了一个t 权限对 x 权限进行了限制,表示只可以修改自己的文件。
umask 命令可以设置系统的权限掩码,即可以控制文件夹、文件生成时的默认权限。文件夹的默认权限是755、文件的权限644.root 帐号的umask是022,而普通用户的umask是002,这代表root用户的文件对于其他用户来说默认的权限更少。文件的默认权限是用666减umask,而文件夹的默认权限是用777减umask,这样的话相当于无论何时生成的文件的默认权限都是不可能有运行的权限。umask的设置可以在配置文件 /etc/bashrc 中进行设置、更改。
2、改变权限
改变拥有者chown(change owner):
chown yly tmp //改变文件tmp的拥有者为yly用户
chown -R yly:yly tmp //改变tmp文件及其下的文件和子目录的权限为yly用户:yly组
说明:要改变的文件拥有者,也就是用户名必须存在于/etc/passwd文件中,否则就会显示错误。另外用户密码
是保存在/etc/shadow文件夹中的。
改变群组chgrp(change group):
chgrp yly tmp //改变tmp文件的群组为yly组
说明:要改变的目标群组名称必须在于/etc/group文件中存在,否则就会显示错误。
注意:当使用cp指令复制文件时,被复制的文件拥有者和群组仍没有改变,此时需要使用以上指令进行设置。
改变文件权限chmod
D. linux缁欑敤鎴锋枃浠舵潈闄愬懡浠linux缁欑敤鎴锋枃浠舵潈闄
linux浠涔埚懡浠や慨鏀规枃浠舵潈闄愶纻
Linux淇鏀规枃浠跺拰鏂囦欢澶圭殑𨱒冮檺鐢╟hmod锻戒护锛宑hmod锻戒护镙煎纺涓猴细
chmodxyz瑕佷慨鏀规潈闄愮殑鏂囦欢鎴栫洰褰
鍏朵腑x鏄鏂囦欢鎴栫洰褰旷殑镓链夎呯殑rwx𨱒冮檺鐩稿姞锛寉鏄鏂囦欢鎴栫洰褰旷殑镓灞炵敤鎴风粍镄剅wx𨱒冮檺鐩稿姞锛寊鏄鍏朵粬鐢ㄦ埛瀵规枃浠舵垨鐩褰旷殑rwx𨱒冮檺鐩稿姞銆傝宺wx鍒嗗埆镄勬潈閲嶆槸4銆2銆1锛屾瘆濡傦细
chmod755/root/testfile镄勮剧疆钖涔夋槸锛氲剧疆/root/testfile镄勬潈闄愬瓧绗︿覆涓-rwxr-xr-x锛埚垎鍒瀵瑰簲x=r+w+x=4+2+1=7锛寉=r+w+x=4+0+1=5锛寊=r+w+x=4+0+1=5锛夈
chmod锻戒护杩樻湁涓涓閲嶈佸弬鏁伴渶瑕佷简瑙o细-R鍙傛暟锛埚ぇ鍐欑殑R锛夛纴杩欎釜鍙傛暟琛ㄧず杩涜屾潈闄愮殑阃掑綊璁剧疆锛屽氨鏄灏嗘枃浠跺す鍙婃ゆ枃浠跺す涓嬬殑镓链夋枃浠跺拰瀛愮洰褰曢兘杩涜屾潈闄愮殑镟存敼銆傜ず渚嬶细
chmod755-R/root/testdir/
unix/linux绯荤粺涓濡备綍璇诲彇涓涓鏂囦欢镄勫瓨鍌ㄦ潈闄愶纻
unix/linux阃氲繃锻戒护ls-a𨱒ヨ诲彇涓涓鏂囦欢镄勫瓨鍌ㄦ潈闄愶纴阃氲繃锻戒护chown𨱒ヤ慨鏀规枃浠剁殑瀛桦偍𨱒冮檺銆
linux鍙链夊彧璇荤殑𨱒冮檺镐庝箞鎶婃暟鎹𨰾疯礉鍑烘潵锛
闇瑕佸嗳澶囩殑𨱒愭枡鍒嗗埆鏄锛氱数鑴戙乴inux杩炴帴宸ュ叿銆
1銆侀栧厛杩炴帴涓妉inux涓绘満锛岃繘鍏ョ瓑寰呰緭鍏ユ寚浠ょ殑linux锻戒护琛岀姸镐併
2銆侀氲繃cd鎸囦护杩涘叆鍒拌佽剧疆鏂囦欢镄勬墍鍦ㄧ洰褰曪纴鍐嶉氲繃ll鎸囦护銮峰彇褰揿墠test鏂囦欢镄勬潈闄愮姸镐併
3銆佽緭鍏ワ细chmod444test.txt锛屽啀鎸夊洖杞︺
4銆佹渶钖庤緭鍏ll鎸囦护镆ョ湅鍒皌est.txt镄勬枃浠舵潈闄愬凡缁忓彉涓轰简鍙璇汇
linux鏂囦欢𨱒冮檺瑕乺oot钖楋纻
linux鏂囦欢𨱒冮檺涓嶉渶瑕乺oot銆俵inux涓链夊緢澶氱殑鐢ㄦ埛锛屾疮涓涓鐢ㄦ埛鍒涘缓镄勬枃浠讹纴閮芥湁瀹屽叏镄勬潈闄愶纴涓嶉渶瑕乺oot銆
鏂囦欢𨱒冮檺
鏂囦欢镄勬潈闄愰拡瀵逛笁绫诲硅薄杩涜屽畾涔
owner灞炰富锛岀缉鍐桧
group灞炵粍锛岀缉鍐檊
other鍏朵粬锛岀缉鍐檕
姣忎釜鏂囦欢阍埚规疮绫昏块梾钥呭畾涔変简涓夌崭富瑕佹潈闄
r锛歊ead璇
w锛欧rite鍐
x锛欤Xecute镓ц
鍙X锛氶拡瀵圭洰褰曞姞镓ц屾潈闄愶纴鏂囦欢涓嶅姞镓ц屾潈闄愶纸锲犳枃浠跺叿澶囨墽琛屾潈闄愭湁瀹夊叏闅愭偅锛
鍦↙inux绯荤粺涓婂垱寤虹殑鏂囦欢澶圭殑榛樿ゆ潈闄愭槸浠涔堬纻
linux涓嫔垱寤洪粯璁ゆ枃浠跺す榛樿ゆ潈闄愭槸锛屽垱寤鸿呭彲璇诲啓鍙镓ц岋纴钖岀粍镄勭敤鎴峰彲璇诲啓鍙镓ц岋纴鍏跺畠鐢ㄤ簬鍙镓ц屽彲璇讳笉鑳藉啓锛屽嵆drwxrwxr-xd浠h〃鏂囦欢澶圭涓涓猺wx琛ㄧず鍒涘缓钥呭彲璇诲啓鍙镓ц岋纴绗浜屼釜rwx琛ㄧず钖岀粍镄勭敤鎴峰彲璇诲啓鍙镓ц岀涓変釜r-x琛ㄧず鍏跺畠鐢ㄤ簬鍙镓ц屽彲璇讳笉鑳藉啓銆