書き込み権限を持つバイナリ実行可能ファイルはvimで読み取り専用になります。

書き込み権限を持つバイナリ実行可能ファイルはvimで読み取り専用になります。

まず、vimバイナリランチャーを書くことはお勧めできません。だから私はここでその妥当性について話したくありません。

権限が755(所有者はroot)のバイナリプログラムがあるので、ユーザーとしてrootこのプログラムに書き込むことができることを願っています。コマンドを使用してプログラムが実行されず、lsof出力fuserは返されません。次のように開いてから書き込み専用と終了をvi入力すると、警告が表示されます。問題は、誰がオプションを設定したのかということです。 Linuxカーネル?:wqviE45: 'readonly' option is set (add ! to override)readonly

その後、1つを追加すると、プログラムが期待どおりに実行されなくなります!:wq!

そして、同じOSとカーネルバージョンを使用する別のコンピュータで同じ権限を持つ同じファイル。今回は を使って書くことができます:wqmd5sum

システムはRHEL 6.4です。vi実際にはvim

編集:@ctrl-alt-delorが提案したように、いくつかのコマンド出力を追加しました。

[root@localhost x]# uname -r
2.6.32-431.29.2.2.ky3.1.x86_64
[root@localhost x]# whoami 
root
[root@localhost x]# lsof XXX 
[root@localhost x]# fuser XXX 
[root@localhost x]# ls -l XXX 
-rwxr-xr-x. 1 root root 5178556 Apr 19 13:27 XXX
[root@localhost x]# ls -la
total 5080
drwxr-xr-x.  5 root root    4096 Apr 21 19:23 .
drwxr-xr-x. 10 root root    4096 May 18  2018 ..
-rwxr-xr-x.  1 root root 5178556 Apr 19 13:27 XXX
drwxr-xr-x.  5 root root    4096 Apr 18 17:24 blabla
drwxr-xr-x.  2 root root    4096 Apr 15 18:59 blabla2
drwxr-xr-x.  8 root root    4096 Apr 22 10:36 blabla3

編集:@Wildcardのコメントに基づいています。

[root@localhost x]# getfacl XXX 
# file: XXX
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

[root@localhost x]# lsattr XXX 
-------------e- XXX

編集:SELINUX情報の追加

[root@localhost x]# getenforce 
Permissive
[root@localhost x]# cat /etc/selinux/config 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 

[root@localhost x]# ls -Z XXX 
-rwxr-xr-x. root root unconfined_u:object_r:usr_t:s0   XXX

答え1

報酬は@Murray Jensenに渡されるべきです。

簡単に言えば、答えは~/.vimrc変化を生み出すことです。

保存できないコンピュータから:wq

[root@localhost x]# cat ~/.vimrc 
set fileencodings=utf-8,gb18030,ucs-bom,cp936

vimUTF-8を検証し、無効なバイトが見つかった場合、このreadonlyオプションが設定されます。readonlyバイナリモードではこのオプションは設定されません。

この行にコメントを付けたら、ファイルを保存できます:wq

関連情報