Linuxシステムには多くの権限があり、その目的はユーザーのセキュリティを確保することとわかりにくくすることですが、ここではファイルの種類ごとにLinuxの権限をまとめます
。1. 通常のファイルとディレクトリ
Linux システム上の通常のファイルとディレクトリには、rwx 権限、隠し属性権限、ACL 権限の 3 つの権限があります
1.rwx 権限 (1) 数字を使用して rwx 権限を表します
r は読み取り権限を表し、w は書き込み権限を表します。x は実行権限を表します。
Linux システムには 3 つの ID があります: 所有者 (u)、グループ (g)、その他の人々 (o) です
Linux システムでは、アクセス許可がオフであることを示すには 0 を使用し、アクセス許可がオンであることを示すには 1 を使用します。つまり、どのファイルに対しても、LINUX をインストールする方法には、所有者アクセス許可の組み合わせが 8 通りあります。
読み取り許可のみ。r-- で表され、2 の補数は 100 で、10 の補数 4 に変換されます。書き込み許可のみ。-w- で表され、2 の補数は 010 で、10 の補数 2 に変換されます。
実行権限のみ、-xで表され、2の補数は001、10の補数に変換すると1になります。
これから、10 の補数を使用して rwx 権限を表す方法が得られます。
rは4、wは2、xは1で表されます。
(2) システム内のファイルとディレクトリに対する rwx 権限の影響
ファイルの場合、r パーミッションは読み取り可能を意味し、ファイルのコンテンツを表示できることを示します。これはコマンドに対応し、cat/more/less などのコマンドを実行してコンテンツを表示できることを意味します。ファイル
linux ファイルは、実行可能 vim ファイルエディターの実行権限であるコマンドに対応するユーザーに許可されていることを示します。 ディレクトリの場合、r パーミッションは読み取り可能を意味し、ディレクトリ内のファイルとディレクトリ名が表示できることを意味します (ディレクトリはファイルの属性情報を記録するファイルとして理解できます)
Linux ファイルはユーザーに許可されます。コマンドに対応します。つまり、ls を実行できます。w 許可は、書き込み可能を意味します。これは、ファイル名とディレクトリ名を変更できることを意味します。これは、コマンドに対応します。つまり、touch、mkdir、rmdir、rm などのコマンドを実行できます。 .; x は実行許可を意味し、このディレクトリを実行できることを意味します。これはコマンドに対応し、cd を使用してディレクトリに入ることができます。 2. 隠し属性の権限
Linux システムには、ファイルのセキュリティを確保するためのいくつかの隠し属性があります
以下の使用可能なコマンドを表示します:
リーリー
-a は、すべてのファイル ディレクトリを表示することを意味します。qq の Linux バージョンのディレクトリのみを表示したい場合は、-d オプションを追加できます。
ファイル/ディレクトリに対する隠し属性のアクセス許可を追加または削除するには、次のコマンドを使用します:
リーリー
其中i选项和a选项对文件和目录又有不同的影响:
对文件来说,假如有i隐藏属性,这么该文件就是一个只读文件,难以更改;假如有a隐藏属性,只能降低数据(echo重定向形式),不能更改数据(因而a隐藏属性适宜于日志)。
对目录来说,假如有i隐藏属性,只能更改目录下已有文件,不能完善新文件以及删掉已有文件(只读目录);假如有a隐藏属性,只能新建或更改文件,不能删掉、改名已有文件。
3.ACL权限
ACL=accesscontrollist英文为“访问控制列表”
作用:可对单一用户设置文件、目录的rwx权限。
形成缘由:出于安全考虑,linux系统下的文件、目录默认对其他人有较低权限,假如某个其他人身分想要查看他不具备权限的目录或文件,要么切换他的身分为所有者,要么让他以所有者的身分登入系统,而这两种做法都具有一定安全隐患,为此,为解决该问题,ACL权限形成。
设置ACL权限可用如下的命令格式:
setfacl -m u:user:rwx filename
-m选项用于设置ACL权限,user表示要修改权限的用户,rwx表示要赋于该用户的权限情况,filename表示要赋于ACL权限的文件或目录。
查看ACL权限可用如下的命令格式:
getfacl filename <span class="token comment">#在当前文件目录下</span>
ACL权限优势:
我们可以用getfacl查看早已设置好ACL权限的文件或目录:
<span class="token comment">#省略输出…………</span> user::rwx <span class="token comment">#文件所有者权限</span> user:user:rwx <span class="token comment">#用户user对该文件的权限</span> group::rwx<span class="token comment">#文件所属组权限</span> other::---<span class="token comment">#文件其他人权限</span> 省略输出…………
可以看见,用户user不属于所有者、所属组或其他人,而是单独为他设置了对该文件的rwx权限。这样在保证其他人难以查看、修改该文件的情况下,也可同时确保用户user更改、查看该文件,达到安全目的。
二、特殊文件——可执行文件
linux系统存在着好多可执行文件,比如各类命令、shell脚本等,这么对于个别只能由超级用户才可执行的命令怎么给普通用户执行呢?这就涉及到了SetUID和SetGID的概念。
1.SetUID权限
linux系统示例:/bin/passwd命令
可以查看一下该文件的权限情况
可以见到,在所有者执行权限的x位上弄成了s,这就表示某个可执行文件被赋于了SUID权限。
作用:普通用户也可用passwd命令更改密码(给用户某执行文件的所有者权限)。
运作过程:
普通用户使用passwduser,意图更改密码------passwd拥有SUID权限且user对passwd命令有x权限------user暂时拥有root权限,以所有者身分执行passwd-------root可把密码写入密码文件/etc/shadow-----更改完成,user身分恢复。
SetUID权限添加、删除命令:
<span class="token function">chmod</span> u+s filename <span class="token comment">#给文件/目录添加SUID权限</span> <span class="token function">chmod</span> u-s filename <span class="token comment">#给文件/目录删除SUID权限</span>
2.SetGID权限
linux系统示例:/usr/bin/locate
可以见到,在所所属组执行权限的x位上弄成了s,这就表示某个可执行文件被赋于了SGID权限。
作用:普通用户也可用locate命令查询mlocate.db数据库(给用户某执行文件的所属组权限)。
运作过程:
普通用户使用locate,意图查询系统上的某文件------locate拥有SGID权限且user对locate命令有x权限------user暂时拥有slocate组权限,以所属组身分执行locate-------该组对mlocate.db数据库有r权限-----user可以查询------查询结束,user组身分恢复。
SetGID权限添加、删除命令:
<span class="token function">chmod</span> g+s filename <span class="token comment">#给文件/目录添加SGID权限</span> <span class="token function">chmod</span> g-s filename <span class="token comment">#给文件/目录删除SGID权限</span>
3.StickyBIT权限
linux系统示例:/tmp
可以看见,该目录的其他人执行权限上的x位弄成了t,这就表示该目录具有BIT权限。
BIT权限特征:仅对目录有效;仅其他人可用。
作用:设置了BIT权限的目录,任何人都可以在该目录下创建、修改文件,但只有该文件的所有者或root用户才可删掉文件。(谁创建,谁删掉)
权限添加、删除命令:
<span class="token function">chmod</span> o+t filename <span class="token comment">#给文件/目录添加BIT权限</span> <span class="token function">chmod</span> o-t filename <span class="token comment">#给文件/目录删除BIT权限</span>
4.umask权限
在命令行执行umask命令时,会听到4位权限数:
其中后三位就表示一个文件/目录的rwx默认权限,它限制了新创建的文件/目录的初始权限(文件644,目录755)
这儿还存在第一位上的0,这一点结合上述执行文件三种权限即可解释:
SetUID权限:以s表示,对应所有者,用十补码4表示(100);
SetGID权限:以s表示,对应所属组,用十补码2表示(010);
BIT权限:以t表示,对应其他人,用十补码1表示(001)。
这样,任何一个文件/目录的权限可表示如下:
rwxsrwxsrwxt
ugo
三、系统命令
尽管超级用户具备linux所有命令的执行权限,但一个多用户系统假如全都由root用户管理是不现实的,正常的管理方式是root用户把一些系统命令授权给普通用户,让其协助管理,这才符合多用户系统的管理思路。
操作对象:系统命令(与上述权限不同)
工具:
1.su:切换用户身分,赋于某用户所有系统命令权限。(有安全隐患)
使用方式:su-用户名(不加为root)
弊病:非root用户切换他人须要密码。
2.sudo:限制用户使用系统命令
授权形式:
<span class="token function">vi</span> /etc/sudoers visudo <span class="token comment">#两种方式选一个即可</span>
更改模板:
root ALL<span class="token operator">=</span>(ALL)ALL <span class="token comment">#用户主机名身份执行的命令 </span>
赋于过程(以user为例):
如果root用户想要赋于普通用户user重启服务器权限
<span class="token function">vi</span> /etc/sudoers <span class="token comment">#在root下加一行即可</span> rootALL<span class="token operator">=</span><span class="token punctuation">(</span>ALL<span class="token punctuation">)</span> ALL userALL<span class="token operator">=</span>usr/sbin/reboot
sudo作用:把原本只能由root用户执行的命令赋于普通用户执行。
四、小结
关于linux系统的权限,主要分为三个部份:普通文件/目录、可执行文件和系统命令,每种权限的诞生都是为了解决相关的权限问题,所以要明白为何会有这些权限。
以上がLinux システムのパーミッション分析: 通常のファイルとディレクトリのパーミッションの分類と表現方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。