一、linux 环境变量
A.系统级(环境变量是每个登录到系统的用户都要读取的系统变量)
(1)/etc/environment: 是系统在登录时读取的第一个文件,用于为所有进程设置环境变量。系统使用此文件时并不是执行此文件中的命令,而是根据KEY=VALUE模式的代码,对KEY赋值以VALUE,因此文件中如果要定义PATH环境变量,只需加入一行形如PATH=$PATH:/xxx/bin的代码即可。
(2)/etc/profile:是系统登录时执行的第二个文件,可以用于设定针对全系统所有用户的环境变量。该文件一般是调用/etc/bash.bashrc文件。
/etc/bash.bashrc:系统级的bashrc文件,为每一个运行bash shell的用户执行此文件。此文件会在用户每次打开shell时执行一次。
注意: /etc/environment是设置整个系统的环境,而/etc/profile是设置所有用户的环境,前者与登录用户无关,后者与登录用户有关。 这两个文件修改后一般都要重启系统才能生效。
B.用户级(环境变量则是该用户使用系统时加载的环境变量)
(1)~/.profile: 是对应当前登录用户的profile文件,用于定制当前用户的个人工作环境。
每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。这里是推荐放置个人设置的地方
(2)~/.bashrc: 是对应当前登录用户的bash初始化文件,当用户每次打开shell时,系统都会执行此文件一次。平时设置这个文件就可以了。
那么根据以上描述,这几个文件的执行先后顺序应当是:
/etc/enviroment –>/etc/profile –>~/.profile –>/etc/bash.bashrc–> ~/.bashrc
二、配置环境变量
1、在linux下设定环境变量时,如果只是临时用一下,可以直接在shell下用set或export命令设定环境变量。只能在当前shell脚本下可用.,切换到另一个终端就会失效。
#终端输入:
export PYTHONPATH=/home/yanting/learning/ssd-caffe/python #PYTHONPATH设置为该路径
#终端查看一个特定环境变量包含的内容,比如PYTHONPATH
echo $PYTHONPATH
2、如果希望此环境变量每次开机或打开shell时自动设定而无须每次都手动设定,那么需要将export命令写入以上的系统文件中。例如:
(1)打开当前用户环境变量:
终端输入:sudo gedit ~/.bashrc,输入用户密码,则会打开.bashrc文件,
在其末尾添加:
export PYTHONPATH=/home/yanting/learning/caffe/python:$PYTHONPATH
# path采用:来分隔,冒号左右不需要空格.
# :$PYTHONPATH在后面新添加的path优先搜索,$PYTHONPATH:在前面说明新添加的path后面搜索,不加代表新路径设置为PYTHONPATH路径。
其中/home/yanting/learning/caffe/python为自己需要设置的环境变量路径。
在终端执行:source ~/.bashrc ,使其立即生效,或者重启电脑即可。
(2)在终端使用 sudo gedit /etc/profile 打开环境变量的文件,然后将自己的环境变量加入到文件之后,用export 执行。
在终端里面使用source /etc/profile 来更新环境变量
3、采用export添加新的路径到环境变量PATH中。
#比如添加搜索路径/home/cc/path1和/home/cc/path2 路径到PATH中,采用:来分隔,冒号左右不需要空格
export PATH=$PATH:/home/cc/path1:/home/cc/path2
#若需要将路径放在优先搜索位置,将$PATH放在后面
export PATH=/home/cc/path1:/home/cc/pck:$PATH
2.文件权限(https://blog.csdn.net/lv8549510/article/details/85406215)
Linux文件权限详解
Linux系统中不仅是对用户与组根据UID,GID进行了管理,还对Linux系统中的文件,按照用户与组进行分类,针对不同的群体进行了权限管理,用他来确定谁能通过何种方式对文件和目录进行访问和操作。
一、文件权限
文件的权限针对三类对象进行定义
owner 属主,缩写u
group 属组,缩写g
other 其他,缩写o
每个文件针对每类访问者定义了三种主要权限
r:Read 读
w:Write 写
x:eXecute 执行
另 X:针对目录加执行权限,文件不加执行权限(因文件具备执行权限有安全隐患)
注意:root账户不受文件权限的读写限制,执行权限受限制
对于文件和目录来说,r,w,x有着不同的作用和含义:
针对文件:
r:读取文件内容 w:修改文件内容 x:执行权限对除二进制程序以外的文件没什么意义
针对目录:目录本质可看做是存放文件列表、节点号等内容的文件
r:查看目录下的文件列表 w:删除和创建目录下的文件 x:可以cd进入目录,能查看目录中文件的详细属性,能访问目录下文件内容(基础权限)
用户获取文件权限的顺序: 先看是否为所有者,如果是,则后面权限不看;再看是否为所属组,如果是,则后面权限不看。
二、修改文件访问权限的方法
chmod 修改权限 change mode
方法1:mode法
格式:chmod who opt per file
who:u g o a(all) opt:+ – = per:r w x X
方法2:数字法
格式:chmod XXX file
rwx rw- r– 111 110 100 7 6 4 r:4 w:2 x:1
例:chmod 764 file 给file文件添加 rwxrw-r– 权限
chmod -R +X dir 给dir目录添加X执行权限,dir目录下文件不添加执行权限
(如果dir目录下有文件已具备执行权限,则添加该文件执行权限)
三、UMASK值
作用:取消对应的权限,影响创建文件和目录的默认权限
对目录: umask+default=777(dir)
对文件:666-umask:观察结果,如果有奇数,奇数位+1,偶数不变
四、三种特殊权限suid、sgid、sticky(sticky权限工作环境中相对常用)
suid
作用:给一个用户继承二进制程序所有者拥有的权限
suid权限位 位于所有者的执行权限位上,如果一个文件具有suid权限,则所有者执行位为s,文件表现为红色背景
例:ll /usr/bin/passwd -rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd 给file文件增加suid权限 chmod u+s file chmod 4755 file suid数字法表示为4
注: suid只适合作用在二进制程序上
sgid
作用1:给一个用户继承二进制程序所有组拥有的权限
sgid权限位 位于所有组的执行权限位,如果一个文件具有suid权限,则所有组的执行位为s,文件表现为黄色背景
例:ll `which cat` -rwxr-sr-x. 1 root root 48568 Mar 23 2017 /bin/cat 给file文件增加sgid权限 chmod g+s file chmod 2755 file sgid数字法表示为2
作用2:作用在目录上时,使一个目录下的新建的文件继承目录的所属组
sticky
作用:作用于目录上,此目录的文件只能被所有者删除
sticky权限位 位于其他的执行权限位上,如果一个文件具有sticky权限,则其他的执行位为t,目录表现为绿色背景
如:ll -d /tmp drwxrwxrwt. 17 root root 4096 Apr 4 10:02 /tmp 给dir目录添加sticky权限 chmod o+t dir chmod 1777 dir sticky数字法表示为1
五、ACL访问控制列表
作用:实现更加灵活的权限管理,打破了三类用户的权限管理
添加ACL权限
setfacl -m u:wang:0 file 使wang账户对指定file文件无权限 setfacl -m u:mage:rw file 使mage账户对指定file文件有读写权限 setfacl -m g:g1:rw file 使g1组对指定file文件有读写权限 getfacl file 查看指定file文件的ACL权限
ACL权限执行顺序类似于用户获取文件权限的顺序,getfacl顺序从上到下执行,一旦生效,下面的将不再生效(如果属于多个组,权限累加)
删除ACL权限
setfacl -x u:wang file 删除wang账户对指定file文件的ACL权限
setfacl -x g:g1 file 删除g1组对指定file文件的ACL权限
ACL权限下的mask
-
设置用户对指定文件所能拥有的最大权限(限高作用) setfacl -m mask::r file 使指定文件file所拥有的最大权限位读r setfacl -x mask::r file 取消指定文件file的最大权限限制mask setfacl -b f1 取消f1文件所有的ACL权限
ACL生效顺序:所有者、自定义用户、自定义组、其他人
备份和恢复ACL权限
getfacl -R /tmp/dir1>acl.txt 将dir1目录下ACL权限备份 setfacl -R –set-file=acl.txt /tem/dir 恢复dir1目录下ACL权限
六、文件权限操作的常用命令
chown 设置文件所有者(普通用户无法修改文件所有者)
chgrp 设置文件所属组(普通用户要想该所属组,前提是文件所有者为自己,自己在所属组中)
chmod 设置指定文件权限
-R 递归
–reference=f1 f2 f3 参考f1文件权限设置f2,f3文件
chattr 给指定文件添加保护,避免root账户误操作
-
+i 锁定文件,不能删除,不能改名,不能更改内容 -i 解锁+i -a 锁定文件,不能删除,不能改名,但可追加内容(追加重定向) -a 解锁+a +A 指定文件读时间atime不再更改
lsattr 查看指定文件是否有锁定状态
setfacl 设置文件ACL权限
-m mask::r file 使指定文件file所拥有的最大权限位读r -x mask::r file 取消指定文件file的最大权限限制mask -b f1 取消f1文件所有的ACL权限
-R –set-file=acl.txt /tem/dir 恢复dir1目录下ACL权限
getfacl 查看文件ACL权限
发表评论 取消回复