ファイル権限は実行のみ可能

ファイル権限は実行のみ可能

ファイルを実行可能にし、他のユーザーが読み書きできないようにすることはできますか?その理由は、私のユーザー名を使用して操作を実行しますが、パスワードを提供したくないからです。私は試した:

chmod 777 testfile
chmod a=x
chmod ugo+x

他のユーザーとして実行しても、私の権限はまだ拒否されます。

ベストアンサー1

以前の声明は半分だけです。ユーザーが読み取ることはできませんが、実行を続行できるようにスクリプトを設定できます。プロセスは少し長くなりますが、/etc/sudoerに例外を設定して、ユーザーがパスワードを入力するように求めるメッセージを表示せずにスクリプトを一時的に実行できるようにすることで完了できます。以下の例:

一部のスクリプトをユーザーと共有したいと思います。

me@OB1:~/Desktop/script/$ chmod 700 somescript.pl
me@OB1:~/Desktop/script/$ ls -l somescript.pl
-rwx------ 1 me me 4519 May 16 10:25 somescript.pl

'somescript.pl'を呼び出すシェルスクリプトを作成し、/bin/に保存します。

me@OB1:/bin$ sudo cat somescript.sh
[sudo] password for me: 
#!/bin/bash
sudo -u me /home/me/Desktop/script/somescript.pl $@

オプションのステップ/bin/ に somescript.sh へのシンボリックリンクを作成します。

sudo ln -s /bin/somescript.sh /bin/somescript

ユーザーがシェルスクリプトを読み取って実行できることを確認してください(書き込みアクセス権なし)。

sudo chmod 755 /bin/somescript.sh
me@OB1:/bin$ ls -l somescript*
lrwxrwxrwx 1 root root  14 May 28 16:11 somescript -> /bin/somescript.sh
-rwxr-xr-x 1 root root 184 May 28 18:45 somescript.sh

次の行を追加して、/etc/sudoerで例外を処理します。

# User alias specification
User_Alias  SCRIPTUSER = me, someusername, anotheruser

# Run script as the user 'me' without asking for password
SCRIPTUSER ALL = (me) NOPASSWD: /home/me/Desktop/script/somescript.pl

その証拠はプリンにあります。

someuser@OB1:~$ somescript
***You can run me, but can't see my private parts!***

someuser@OB1:~$ cat /home/me/Desktop/script/somescript.pl
cat: /home/me/Desktop/script/somescript.pl: Permission denied

このアプローチは、難読化を試みるFilter::Cryptoか、決定されたユーザーがリバースエンジニアリングできるよりもPAR::Filter::Crypto優れています。Acme::Bleachスクリプトをバイナリにコンパイルする場合も同様です。この方法に問題がある場合はお知らせください。上級ユーザーの場合は、User_Aliasセクションを完全に削除してSCRIPTUSERを "%groupname"に置き換えることができます。これにより、usermodコマンドを使用してスクリプトユーザーを管理できます。

おすすめ記事